此篇博客为参考鸟哥私房菜加上自己理解所写,所以可能会有很多不太准确的描述,望大家批评指正。
一、Linux简介
1.Linux操作系统是UNIX操作系统的一种克隆程序,它对于计算机和人的意义,与MAC OS X和windows对于电脑和人的意义相同,都是搭建计算机与用户交互的桥梁,帮助用户更加高效的处理日常工作。
2.Linux操作系统的主要用途:用于服务器,特别是网络服务器。(除了开发等专业人员外,普通用户较少使用Linux)
3.Linux的优缺点
优点:
(1)自由与开放的使用与学习环境
(2)配备需求低廉
(3)核心功能强大而稳定
(4)独立作业
(5)稳定的系统
(6)安全性、漏洞的快速修补
(7)多任务、多使用者
(8)使用者与群组的规划
(9)相对不耗资源的系统
(10)适合需要小核心程序的嵌入式系统
(11)整合度佳且多样的图形用户接口(GUI)
........
缺点:
(1)没有特定的支持厂商
(2)游戏的支持度不足
(3)专业软件的支持度不足
(4)教育训练做的还不够好
...额,比优点少很多啦(其实主要是政策和商业上的一些影响因素)
4.LINUX主要发行版:CENTOS、RHEL、FEDORA、UBUNTU、SUSE。
5.两种常见的桌面环境:KDE和GNOME。
二、Linux常用概念及命令介绍
1.图形界面模式(X Window)与终端模式(terminal或console)
(1)两种定义概念:
1)图形界面模式:用鼠标对程序图形点击进行操作的一种人机交互途径。
2)终端模式:用类似代码的命令指令来进行人机交互的途径。
(2)两种端口的切换:
在Linux默认的登入模式中,主要分为两种,一种是仅有纯文本接口(执行等级run level 的登入环境,在此环境下有tty1~tty6的终端界面,但是并没有图形窗口环境。另一种则是图形接口的登入环境(执行等级run level 5),在这个环境中有tty1~tty7个窗口,其中tty7就是开机完成后等待登入的图形环境。
各个窗口切换指令:
· [Ctrl]+[Alt]+[F1]~[F6]:终端模式
· [Ctrl]+[Alt]+[F7]:图形界面膜式。
如果你以纯文本模式启动Linux,预设的tty7是没有窗口的。如果要启动图形窗口怎么办呢,可以在任一终端输入startx(可能会出现意外,那怎么办---》baidu)。
纯文本登陆界面后显示如下:
这些代表什么意思呢?
1). CentOS release 5.3 (Final):
显示Linux distribution的名称(CentOS)不版本(5.3);
2). Kernel 2.6.18-128.el5 on an i686:
显示核心的版本为2.6.18-128.el5
3). www login::
www是主机名。
4). Password::
输入密码
5). [[email protected] ~]$ _:
正确登入后才显示的讯息(注意:#为有root权限的用户提示符,$为普通用户提示符)
2.Linux命令格式
格式:命令名 [ 选项] [参数 1] [参数 2]…… 如:ls -a /etc/passwd(除命令以外,其它项不是必须包含项,例如:ls 是查看当前目录下的文件)
ls是命令,-a是选项,/etc/passwd是参数,详细介绍请猛戳这里
3.常用操作命令
常用系统级别操作例举:
1)init:一个由内核启动的用户级进程。init 0关机、init 1进单用户模式、init 6重启、init 3命令行模式、init 5图形界面。
2)su:su -用户名,切换到另一个用户。
3)useradd:useradd 用户名,新增一个用户
4)passwd:passwd 用户名,为此用户修改或增加密码。
5)date:查看当前系统日期。
6)clear:清屏。
7)history:记录使用过的命令。普通的history命令只会根据顺序显示命令。介绍一种更友好的配置,出错后配合last或者日志能清楚的找到谁的问题。
8)id:显示当前用户和组id等。 id 用户名。
9) who:返回当前处于运行状态用户。
10)whoami:返回当前窗口运行用户。
11)man:man 命令,查看帮助文档。
12)help: 命令 --help,查看帮助文档。
13)shutdown:冻结login指令,发送信号给init进程要求切换运行界别,并通知所有已登陆用户即将关闭系统。常用参数:-t 延迟时间,-r重启参数,-c 取消正在执行的关机,-h关机后关闭电源。
其它常用命令:chkconfig、init、shutdown、halt、reboot、set、env、export、crontab、uptime、last、history、id、finger、who、w、whoami、useradd、passwd、usermod、userdel、date、cal、wget、yum、curl、lsmod、dmesg。具体选项及参数请猛戳这里
常用快捷键:
ctrl+space:中文与英文输入法切换
ctrl+shift:输入法切换
alt+Space:Activate window menu,激活窗口调整状态
alt+F1:show the panel menu,即最左下角的运行程序
alt+F2:Show the panel run application dialog,,打开运行命令窗口
alt+F4:Close,关闭当前活动窗口
alt+F5:Unmaximize,在最在窗口情况下还原
alt+F6:聚焦桌面上当前窗口
其它常用快捷键请猛戳这里。
三、Linux目录结构介绍
因为利用Linux来开发产品或distributions的社群/公司/个人实在太多, 如果每个人都用自己的想 法来配置档案放置的目彔,那举将可能造成徆多管理上的困扰。 你能想象,进入一个企业后,如果Linux的配置方法和自己当初学习的不太一样,那怎么办?很难想象吧~所以,就有所谓的 Filesystem Hierarchy Standard (FHS)标准。然后大家都按照这个标准来配置文件,那么在管理的时候就非常的方便了。
1.亊实上,FHS目录树架构仅规定了三层目录下应该放置什么文件,分别是以下三个:
(1)/根目录:放置与系统启动相关的文件,如/etc下是存放与系统。
(2)/usr(user software resource):放置与安装和执行应用软件相关的文件。
(3)/var(variable):放置运行系统有关的文件。
2.目录树:
目录树架构示意图
3.各目录介绍
目录 |
描述 |
/ |
第一层次结构的根、整个文件系统层次结构的根目录。 |
/bin/ |
需要在单用户模式可用的必要命令(可执行文件);面向所有用户,例如:cat、ls、cp,和/usr/bin类似。 |
/boot/ |
引导程序文件,例如:kernel、initrd;时常是一个单独的分区[6] |
/dev/ |
必要设备, 例如:, /dev/null. |
/etc/ |
特定主机,系统范围内的配置文件。 关于这个名称目前有争议。在贝尔实验室关于UNIX实现文档的早期版本中,/etc 被称为/etcetra 目录,[7]这是由于过去此目录中存放所有不属于别处的所有东西(然而,FHS限制/etc存放静态配置文件,不能包含二进制文件)。[8]自从早期文档出版以来,目录名称已被以各种方式重新称呼。最近的解释包括反向缩略语如:"可编辑的文本配置"(英文 "Editable Text |
/etc/opt/ |
/opt/的配置文件 |
/etc/X11/ |
X_Window系统(版本11)的配置文件 |
/etc/sgml/ |
SGML的配置文件 |
/etc/xml/ |
XML的配置文件 |
/home/ |
用户的家目录,包含保存的文件、个人设置等,一般为单独的分区。 |
/lib/ |
/bin/ and /sbin/中二进制文件必要的库文件。 |
/media/ |
可移除媒体(如CD-ROM)的挂载点 (在FHS-2.3中出现)。 |
/lost+found |
在ext3文件系统中,当系统意外崩溃或机器意外关机,会产生一些文件碎片在这里。当系统在开机启动的过程中fsck工具会检查这里,并修复已经损坏的文件系统。当系统发生问题。可能会有文件被移动到这个目录中,可能需要用手工的方式来修复,或移到文件到原来的位置上。 |
/mnt/ |
临时挂载的文件系统。比如cdrom,u盘等,直接插入光驱无法使用,要先挂载后使用 |
/opt/ |
可选应用软件包。 |
/proc/ |
虚拟文件系统,将内核与进程状态归档为文本文件(系统信息都存放这目录下)。例如:uptime、 network。在Linux中,对应Procfs格式挂载。该目录下文件只能看不能改(包括root) |
/root/ |
超级用户的家目录 |
/sbin/ |
必要的系统二进制文件,例如: init、 ip、 mount。sbin目录下的命令,普通用户都执行不了。 |
/srv/ |
站点的具体数据,由系统提供。 |
/tmp/ |
临时文件(参见 /var/tmp),在系统重启时目录中文件不会被保留。 |
/usr/ |
默认软件都会存于该目录下。用于存储只读用户数据的第二层次;包含绝大多数的(多)用户工具和应用程序。 |
/var/ |
变量文件——在正常运行的系统中其内容不断变化的文件,如日志,脱机文件和临时电子邮件文件。有时是一个单独的分区。如果不单独分区,有可能会把整个分区充满。如果单独分区,给大给小都不合适。 |
4.绝对路径与相对路径
(1)绝对路径:由根目录(/)开始写起的文件名或目录, 例如 /home/dmtsai/.bashrc;
(2)相对路径:相对于目前路径的文件名写法。 例如 ./home/dmtsai 或 ../../home/dmtsai/ 等等。 反正开头不是 / 就属于相对路径的写法 。
5.对目录和文件的常用操作
在了解了Linux的命令格式和目录的结构后,现在我们可以来学习常用的对文件、目录的命令操作,即在工作过程中用到非常普遍的命令。
(1)pwd命令的功能:确定现在所在的工作目录。
cd命令的功能:切换当前目录,例:切换到/home/dog目录的命令为,cd /home/dog
”cd ..”命令:进入上一级目录
”cd ~”命令:切换到用户的家目录
”cd 命令:同cd ~,也可切换到用户的家目录
”cd –”命令:切换到用户之前的工作目录
”cd 目录名”命令:切换到指定的目录。
(2)ls命令列出当前目录中的内容
“ls -a” 命令:列出目录下的所有文件,包括以“.”开头的隐含文件
例:列出/home/dog目录中的所有文件,包括隐藏文件的命令,ls -a /home/dog
“ls –l”命令:列出某个目录中每一个文件的详细资料
例:列出/home/dog目录中所有非隐藏文件的细节(包含权限)的命令,ls –l /home/dog
(3)cp命令复制文件和目录(可以是多个)
“cp 源文件 目标文件”命令的常用选项:
–r(recursive,递归的):递归地复制目录。当复制一个目录时,复制该目录中所有的内容,其中包括子目录的全部内容。
例:将/home/dog目录中的内容全部复制目录/home/cat中的命令为:cp –r /home/dog /home/cat
-f(force,强制):在目标文件已经存在的时候不询问直接强制复制。
例:列出/home/dog目录中所有非隐藏文件的细节的命令:ls –l /home/dog
(4)mv命令移动及修改文件和目录名
“mv 文件 目录”命令:当前目录中的文件移动到其子目录中
例:mv lists babydog,将当前目录中lists文件移动到babydog目录中。
“mv 旧目录名 新目录名”命令:重命名文件和目录
例:mv bigdog babydog,将旧目录名bigdog修改为新目录名babydog
(5)mkdir命令创建目录(详见linux系统管理P55)
“mkdir 目录名”命令:当前目录中创建一个新目录
例:mkdir dadgog,在当前目录中创建新目录dadgog
(6)touch命令创建文件:可以创建一个空文件,也可以同时创建多个文件(详见linux系统管理P56)
“touch 文件名”命令:在当前目录中创建一个新文件
例:touch babydog1 ,在当前目录中创建一个名为babydog1的文件
(7)rm命令删除文件:永久地在文件系统中删除文件或目录(详见linux系统管理P57)
“rm 文件名”命令:删除当前目录下的文件
rm命令的常用选项:
–r(recursive,递归的):递归地删除目录。当删除一个目录时,删除该目录中所有的内容,其中包括子目录中的全部内容。
–f(force,强制):系统并不询问而是强制删除,即直接删除原有的文件。
例:rm babydog1,删除当前目录中的babydog1文件的命令
(8)rmdir或rm –r命令删除目录(详见linux系统管理P59)
rmdir命令的功能:删除空目录
例:rmdir mumdog/girldog/babydog,删除空目录 mumdog/girldog/babydog
rm –r命令的功能:删除包含文件和子目录的目录。
例:rm –r mumdog,删除非空目录mumdog
(9)cat命令浏览正文文件的内容(详见linux系统管理P73)
cat命令的功能:将一个或多个文件的内容显示在屏幕上,该命令会不停的以只读的方式显示整个文件的内容。
例:cat game.txt,浏览game.txt文件中的全部内容
(10)head命令浏览文件中的内容(详见linux系统管理P75)
head命令的功能:默认将显示一个文件的前10行。
head命令的常用选项:
-n 改变显示的行数(默认10行)
例:head /etc/passwd,查看/etc/passwd文件中前10行的详细信息
例:head –5 /etc/passwd,查看/etc/passwd文件中前5行的详细信息
(11)tail命令浏览文件中的内容(详见linux系统管理P76)
tail命令的功能:默认显示文件最后10行的内容。
tail命令的常用选项:
-n 显示从文件末尾算起的n行(默认10行)
例:tail /etc/passwd,查看/etc/passwd文件中最后10行的详细信息
例:tail –5 /etc/passwd,查看/etc/passwd文件中最后5行的详细信息
(12)more命令浏览文件(详见linux系统管理P78)
more命令的功能:使用more命令之后,每次在屏幕上显示一屏(一页)的文件内容,并且在屏幕的尾部将会出现“—More--(n%)”的信息,其中,n%是已经显示文件内容的百分比。
例:more learning.txt, 分页浏览learning.txt文件内容
四、Linux权限与用户、群组
1.用户与群组概念
用户:额。。。。。。
群组:一组用户的集合。
2.Linux用户身份与群组记录的档案
在Linux系统当中,默认的情况下,所有的系统上的账号与一般身份使用者,还有root的相关信息, 都是记录在/etc/passwd这个档案内的。二个人的密码则是记录在/etc/shadow这个档案下。 此外,Linux所有的组名都纪录在/etc/group内!这三个档案可以说是Linux系统里面账号、密码、群组信息的集中地,所以这三个文件非常重要。
(1)passwd文件
1)/etc/passwd文件的功能:存储所有用户的相关信息,该文件也被称为用户信息数据库(Database)。
2)/etc/passwd文件每个字段的具体含义:
第1个字段(列)记录的是这个用户的名字(在创建用户时root用户起的)。
第2个字段(列)如果是x,表示该用户登录Linux系统时必须使用密码;如果为空,则该用户在登录时无须提供密码。
第3个字段(列)记录的是这个用户的uid。
第4个字段(列)记录的是这个用户所属群组的gid。
第5个字段(列)记录的是有关这个用户的注释信息(如全名或通信地址)。
第6个字段(列)记录的是这个用户的家目录的路径。
第7个字段(列)记录的是这个用户登录后,第一个要执行的进程。
(2)shadow文件(详见linux系统管理P133)
1) /etc/shadow文件的功能:存储所有用户的密码,每一个用户占用一行记录,该文件实际上就是存放用户密码的数据库(Database)。
2)/etc/shadow文件每个字段的具体含义:
第1个字段(列)是用户名。
第2个字段(列)是密码,这个密码是经过MD5加密算法加密过的密码。
(3)group文件(详见linux系统管理P135)
1) /etc/group文件的功能:存放了Linux系统中所有群组的信息,它实际上就是一个存放群组信息的数据库(Database)。
2) /etc/group文件每个字段的具体含义:
第1个字段是这个群组的名字。
第2个字段中的x表示这个群组在登录Linux系统时必须使用密码。
第3个字段记录的是这个群组的gid。
第4个字段记录的是这个群组里还有哪些群组成员。
(4)用户创建、修改信息、删除用户命令:
1)useradd命令新增一个用户。
useradd命令的常用选项:
–u:指定用户的UID
–g:指定用户所属的群组
–d:指定用户的家目录
–c:指定用户的备注信息
–s:指定用户所用的shell
例:useradd –u 600 –g police user01,在系统中新增一个用户user01,属组为police以及uid为600
2)usermod命令修改用户账户信息(详见linux系统管理P458)
usermod命令的常用选项:
–u:修改用户的UID
–g:修改用户的GID
–G:将一个用户加入到指定的群组中
–d:修改用户的家目录
–c:修改用户的备注信息
–s:修改用户所用的shell
例:usermod –d /home/babies babydog4,修改babydog4用户的家目录为/home/babies
例:usermod –G babydog6 babydog4,将babydog4这个用户添加到babydog6这个群组中
例:usermod –g dog babydog4,将babydog4这个用户的的gid变更为dog群组
usermod命令锁住用户及将用户解锁(详见linux系统管理P461)
usermod –L命户令的功能:将用户的账号锁住
usermod –U命户令的功能:将用户的账号解锁
例:将babydog6用户的账号锁住的命令:usermod –L babydog6
例:将babydog6用户的账号解锁的命令:usermod –U babydog6
3) userdel命令删除用户账号(详见linux系统管理P462)
userdel命令的常用选项:
–r:在删除用户的同时删除这个用户的家目录及其邮箱。
例:删除babydog5用户不删除其家目录的命令:userdel babydog5
例:删除babydog5用户,同时删除其家目录的命令:userdel –r babydog5
(4) 组创建、修改信息、删除命令
1)groupadd命令的功能:创建一个新的群组账号
groupadd命令的常用选项:
–g:指定群组的GID
例:在系统中新增加一个名为boydogs的群组的命令:groupadd boydogs
2)groupmod命令的功能:修改一个群组账号的信息
groupmod命令的常用选项:
–g:修改群组的GID
–n:修改群组的名称
例:修改police群组的gid为521的命令:groupmod –g 521 police
例:将群组boydogs改名为daddogs的命令:groupmod –n daddogs boydogs
3)groupdel命令的功能:删除一个群组账号
例:删除daddogs群组的命令:groupdel daddogs
3.Linux档案权限的概念
权限顾名思义就是一种对文件是否允许操作的描述。
在Linux中对文件进行操作的有三类用户,1是使用者,2是群组里的用户,3是其他用户。
但实际是上最终对文件进行操作的只有两类用户,一是有root权限的用户,二是无root权限的用户,只不过在考虑权限问题时软件设计者聪明的划分为前三类(即后两类可以以任意方式存在与前三类),也许是方便root用户管理系统(我瞎猜的),用久了Linux对比windows可能就会发现吧。
4.文件权限介绍(详见鸟哥的Linux私房菜基础篇P178,查看当前目录下所有文件的属性,命令为ls -l)
例:-rwxr-xr-- 1 test1 testgroup 5238 Jun 19 10:25 ping_tsai
解释:
r:表示read权限,也就是可以阅读文件或者ls命令列出目录内容的权限。
w:表示write权限,也就是可以编辑文件或者在一个目录中创建和删除文件的权限。
x:表示execute权限,也就是可以执行程序或者使用cd命令切换到这个目录以及使用带有-l选项的ls命令列出这个目录中详细内容的权限等。
-:表示没有相应的权限(与所在位置的r、w或x相对应)。
-rwxr-xr--分为:第一组-,第二组rwx,第三组r-x,第四组r--来看。test1代表属主(一般为创建用户,但可以修改),testgroup为属组(可以修改)。
-普通文件
rwx,test1(属主)用户对ping_tsai有读、写、执行的权限
r-x,testgroup(属组)组里的用户对ping_tsai有读、执行的权限
r--,其他用户对ping_tsai有读权限
5.修改属主、属组的方法
chown :改变档案拥有者 (属主)
chgrp :改变档案所属群组(属组)
例:chown user1 file1,将文件file1的属主修改为user1
chgrp grp1 file1,将文件file1的属组修改为grp
6.修改权限的方法(chmod)
(1)符号表示法
解释:chmod代表修改权限指令,u/g/o/a代表权限作用于谁,+-=代表怎样作用,rwx代表作用什么权限,档案或目录代表作用对象。
注意:-R选项,不但设置(或更改)该目录权限,而且还要递归地设置(或)更改该目录中所有文件或子目录的权限。
例:chmod u+r file2 在file2上对属主加上读权限。
(2)数字表示法
4:表示具有读(read)权限。
2:表示具有写(write)权限。
1:表示具有执行(execute)权限。
0:表示没有相应的权限。
解释:0代表没有任何权限,1代表只有执行权限,2代表只有写权限,3代表只有写和执行权限,4代表只有读权限,5代表只有读和执行权限,6代表只有读和写权限,7代表有读写执行权限。
例:chmod -R 754 /home/dog/babydog 使用数字表示法对owner开放/home/dog/babydog目录和其中所有文件的一切权限,但是对同组用户开放读和执行权限,而对其他用户只开放读权限的命令