1、 项目四 配置与管理管理文件系统文件系统 项目导入:作为Linux系统的网络管理员,学习Linux文件系统和磁盘管理是至关重要的。尤其对于初学者来说,文件的权限与属性是学习Linux的一个相当重要的关卡,如果没有这部份的概念,那么当你遇到“Permission deny”的错误提示时将会一筹莫展。 职业能力目标和要求: Linux文件系统结构。Linux系统的文件权限管理。磁盘和文件系统管理工具。Linux系统的权限管理的应用。项目四项目四 配置与管理管理文件系统文件系统 1. 全面理解文件系统与目录 2. 管理Linux文件权限 3. 修改文件与目录的默认权限与隐藏权限 4. 企业实战与应用
2、 7. 超级链接 5. 项目实录:配置与管文件权限 6. 实践习题 Red Hat Linux支持的文件系统: ext3文件系统 FAT(适用各种版本的DOS) NTFS(适用Windows NT - Windows 2000) VFAT和FAT32(适用Windows 9x) HFS(适用MacOS) HPFS(适用OS/2) 利用利用“ls /lib/modules/2.6.32-358.el6.x86_64/kernel/fs” 可以查看可以查看Linux系统所支持的文件系统。系统所支持的文件系统。注意,上面命令中注意,上面命令中“2.6.32-358.el6.x86_64”根据不同版本
3、会略有不同。根据不同版本会略有不同。4.1 任务1 全面理解文件系统与目录4.1.2 子任务2 理解Linux的目录结构 Linux文件系统使用单一的根目录结构 /位于Linux文件系统的顶层,所有分区都挂载到/下某个目录中 熟悉各个系统目录Linux文件系统标准结构/bin/sbin/usr/var/etc/lib/home/tmp/optbinlocalsrcrc.dnamedhttpdrc5.dftprc3.dinit.dbinetcpub认识系统目录1 在Linux系统中有许多系统默认的目录,这些目录按照不同的用途而放置了特定的文件l /: 根目录,包含整个linux系统的所有目录和文
4、件l /bin: 此目录放置操作系统运行时所使用的各种命令程序。如 cp,dmesg,kill,login,mv,rm等常用命令,还有各种不同的 shell,如bash,bash2等。l /boot: 系统启动时必须读取的文件,包括系统内核。l /dev: 存放外围设备代号的文件。如硬盘的/dev/hda、终端机的 /dev/tty0等。l /etc: 放置与系统设置、管理相关的文件。如passwd,shadow,以及 LILO配置文件lilo.conf等/etc/rc.d:包含了开机或关机时所执行的script文件/etc/X11:X Window配置文件的目录/home:此目录为默认用来放
5、置账号的自家目录/lib:放置一些共用的函数库/lib/modules: 存放系统内核的块/lost+found: 存放一些系统检查结果,把发现的一些不合法的文件或数据都存放在这里;通常此目录为空/mnt: 默认含有/mnt/cdrom和/mnt/floppy两个目录,用来作为光盘与软盘的挂载点/proc: 是一个虚拟文件系统,它存放当前内存映象,主要用于在不重启动机器的情况下管理内核认识系统目录2Linux的文件类型 文件是操作系统用来存储信息的基本结构,通过文件名来标识。 Linux系统中有三种基本的文件类型 l普通文件: 包括文本文件、数据文件、可执行的二进制程序文件等。 l目录文件:
6、Linux系统把目录看成是一种特殊的文件,利用它构成文件系统的树型结构。 l设备文件: Linux系统把每一个设备都看成是一个文件。 Linux的文件类型普通文件目录文件设备文件文本文件二进制文件数据文件块设备字符设备文件类型链接文件4.1.3 子任务3 理解绝对路径与相对路径 绝对路径:由根目录(/)开始写起的文件名或目录名称,例如/home/dmtsai/basher。 相对路径:相对于目前路径的文件名写法。例如 ./home/dmtsai或././home/dmtsai/等。 技巧:开头不是“/”的就属于相对路径的写法。4.1.3 子任务3 理解绝对路径与相对路径 cd /var/log
7、 (绝对路径) cd ./var/log (相对路径) :代表当前的目录,也可以使用./来表示。 :代表上层目录,也可以用./来代表。权限标识 拥有者 组名称文件与目录的相关信息4.2 任务2 管理Linux文件权限文件属性示意图 执行ls l命令后所显示的结果.最前面的第210个字符用来标示权限;第1个字符用于区别文件和目录。第1个字符的含义如下:d: 表示一个目录。在ext3中,目录是一种特殊的文件-: 表示一个普通文件l: 表示符号链接文件,实际上它指向另一个文件b、c:分别代表区块主设备和其他的外围设备。是特殊类型的文件s、p:这些文件关系到系统的数据结构和管道,通常很少见到。权限的意
8、义(1)1第1栏为文件类型权限 每一行的第210个字符表示文件的访问权限。这9个字符每3个为一组,左边三个字符表示所有者权限,中间3个字符表示与所有者同一组的用户的权限,右边3个字符是其他用户的权限。代表的意义如下。 字符2、3、4表示该文件所有者的权限,有时也简称为u(User)的权限。 字符5、6、7表示该文件所有者所属组的组成员的权限。 字符8、9、10表示该文件所有者所属组群以外的权限,简称为o(Other)的权限。权限的意义(1)1第1栏为文件类型权限这9个字符根据权限种类的不同,也分为3种类型。 r(Read,读取): w(Write,写入): x(execute,执行): -:表
9、示不具有该项权限。权限的意义(1)1第1栏为文件类型权限 举例说明。 brwxr-r-:该文件是块设备文件,文件所有者具有读、写与执行的权限,其他用户则具有读取的权限。 -rw-rw-r-x: drwx-x-x: lrwxrwxrwx:该文件是符号链接文件,文件所有者、同组用户和其他用户对该文件都具有读、写和执行权限。权限的意义(1)1第1栏为文件类型权限 2第第2栏表示有多少文件名连结到此节点(栏表示有多少文件名连结到此节点(i-node) 3第第3栏表示这个文件(或目录)的拥有者账号。栏表示这个文件(或目录)的拥有者账号。 4第第4栏表示这个文件的所属群组栏表示这个文件的所属群组 5第第5
10、栏为这个文件的容量大小,默认单位为栏为这个文件的容量大小,默认单位为bytes。 6第第6栏为这个文件的创建日期或者是最近的修改日期。栏为这个文件的创建日期或者是最近的修改日期。 7第第7栏为这个文件的文件名栏为这个文件的文件名权限的意义(权限的意义(2)4.2.3 子任务3 使用数字表示法修改权限 所谓数字表示法是指将读取(r)、写入(w)和执行(x)分别以4、2、1来表示,没有授予的部分就表示为0,然后再把所授予的权限相加而成。 例如为文件/etc/file设置权限:赋予拥有者和组群成员读取和写入的权限,而其他人只有读取权限。则应该将权限设为“rw-rw-r-”,而该权限的数字表示法为66
11、4,因此可以输入下面的命令来设置权限:如何更改权限文件权限属主(u)同组用户(g)其他用户(o)RWXRWXRWX4214214214.2.3 子任务3 使用数字表示法修改权限如果要将.bashrc这个文件所有的权限都设定启用,那么就使用如下命令:4.2.4 子任务4 使用文字表示法修改权限 使用权限的文字表示法时,系统用4种字母来表示不同的用户。 u:user,表示所有者。 g:group,表示属组。 o:others,表示其它用户。 a:all,表示以上三种用户。4.2.4 子任务4 使用文字表示法修改权限操作权限使用下面三种字符的组合表示法。 r:read,可读。 w:write,写入。
12、 x:execute,执行。操作符号包括以下几种。 :添加某种权限。 -:减去某种权限。 :赋予给定权限并取消原来的权限。4.2.4 子任务4 使用文字表示法修改权限以文字表示法修改文件权限时,上例中的权限设置命令应该为:rootServer # chmod u=rw,g=rw,o=r /etc/file 格式:chmod u g o a. + - = rwx 文件名 + :表示增加权限 - : 表示删除权限 = : 表示分配权限,同时将原有权限删除chmod更改权限命令roothost root# chmod g+x test 给同组用户分配执行权限 roothost root# chmod
13、 o-rx test给其他用户删除读和执行权限roothost root# chmod u+rwx,g+rwx,o+rwx test给所属主、同组和其他用户分配读、写和执行权限roothost root# chmod u-rx,g-rx test删除属主、同组的读和执行权限roothost root# chmod a+rwx test给所属主、同组和其他用户分配读、写和执行权限更改权限举例1(文字法) roothost root# chmod 777 test 给属主、同组和其他用户分配读、写和执行权限 roothost root# chmod 500 test 给属主用户分配读和执行的权限而
14、同组和其他用户无权限 roothost root# chmod 666 test 给属主、同组及其他用户分配读和写的权限 roothost root# chmod 711 test 给属主分配读、写、执行权限,同组和其他用户分配执行权限更改权限举例2(数字法)格式:chown 选项 用户:或.组 文件或目录roothost root# chown lrj test将test属主改为lrjroothost root# chown lrj.lrj test将test的属主改为lrj、属组改为lrjroothost root# chown -R wang:lrj test将test及在下的所有目录及
15、文件的属主改为wang,属组改为lrjroothost root# chgrp root test将test的属组改为root改变拥有权chown命令4.2.6 子任务6 理解权限与指令的关系(1)让用户能进入某目录成为可工作目录的基本权限。(2)用户在某个目录内读取一个文件的基本权限。(3)让使用者可以修改一个文件的基本权限。(4)让一个使用者可以建立一个文件的基本权限。(5)让用户进入某目录并执行该目录下的某个指令的基本权限。4.2.6 子任务6 理解权限与指令的关系 思考:让一个使用者bobby能够进行cp /dirl/filel /dir2的指令时,请说明dirl、filel、dir2
16、的最小所需权限是什么? 参考解答:执行cp时,bobby要能够读取源文件并且写入目标文件,所以应参考上述第2点与第4点的说明。因此各文件/目录的最小权限应该如下。 dirl:至少需要有x权限。 filel:至少需要有r权限。 dir2:至少需要有w、x权限。4.3 任务3 修改文件与目录的默认权限与隐藏权限修改文件与目录的默认权限与隐藏权限 4.3.1 子任务子任务1 理解文件预设权限:理解文件预设权限:umask umask就是指定目前用户在建立文件或目录时候的权限默认值。那么如何得知或设定umask呢? 请看下面的命令及运行结果:4.3 任务3 修改文件与目录的默认权限与隐藏权限修改文件与
17、目录的默认权限与隐藏权限 如果以上面的例子来说明的话,因为umask为022,所以user并没有被拿掉任何权限,不过group与others的权限被拿掉了2(也就是w这个权限),那么当使用者: 建立文件时:(-rw-rw-rw-) -(-w-w-)=-rw-r-r 建立目录时:(drwxrwxrwx) -(d-w-w-)=drwxr-xr-x4.3.2 子任务子任务2 利用利用umask 因此,当我们需要新建文件给同群组的使用者共同编辑时,umask的群组就不能去掉2这个w的权限。这时umask的值应该是002,才使新建的文件的权限是-rw-rw-r-。那么如何设定umask呢?简单得很,直接
18、在umask后面输入002就可以了。命令运行情况如下:4.3.3 子任务子任务3 设置文件的隐藏属性设置文件的隐藏属性1chattr功能说明:改变文件属性。语法:chattr -RV-v+/-/=文件或目录.4.3.3 子任务子任务3 设置文件的隐藏属性设置文件的隐藏属性2lsattr(显示文件隐藏属性)(显示文件隐藏属性)语法:rootwww# lsattr -adR文件或目录选项与参数:-a:将隐藏文件的属性也秀出来;-d:如果接的是目录,仅列出目录本身的属性而非目录内的文件名;-R:连同子目录的数据也一并列出来!4.3.4 子任务子任务4 设置文件特殊权限:设置文件特殊权限:SUID、S
19、GID、SBIT 我们前面一直提到关于文件的重要权限,那就是rwx这三个读、写、执行的权限。但是, /tmp和/usr/bin/passwd的权限却有点怪。怎么回事呢?让我们先看一下它们有何不同。4.3.4 子任务子任务4 设置文件特殊权限:设置文件特殊权限:SUID、SGID、SBIT 1Set UID 当s这个标志出现在文件拥有者的x权限上时,例如刚刚提到的/usr/bin/passwd这个文件的权限状态:-rwsr-xr-x,此时就被称为Set UID,简称为SUID的特殊权限。4.3.4 子任务子任务4 设置文件特殊权限:设置文件特殊权限:SUID、SGID、SBIT 1Set UID
20、 s或S(SUID,Set UID):可执行的文件搭配这个权限,便能得到特权,任意存取该文件的所有者能使用的全部系统资源。请注意具备SUID权限的文件,黑客经常利用这种权限,以SUID配上root账号拥有者,无声无息地在系统中开扇后门,供日后进出使用。4.3.4 子任务子任务4 设置文件特殊权限:设置文件特殊权限:SUID、SGID、SBIT 1Set UID SUID有这样的限制与功能。 SUID权限仅对二进制程序(binary program)有效。 执行者对于该程序需要具有x的可执行权限。 本权限仅在执行该程序的过程中有效(run-time)。 执行者将具有该程序拥有者(owner)的权
21、限。4.3.4 子任务子任务4 设置文件特殊权限:设置文件特殊权限:SUID、SGID、SBIT 2Set GID 当s标志出现在文件拥有者权限的x项时称为SUID,而当s标志出现在属组权限的x项时则称为Set GID,即SGID。s或S(SGID,Set GID):设置在文件上面,其效果与SUID相同,只不过将文件所有者换成用户组,该文件就可以任意存取整个用户组所能使用的系统资源。4.3.4 子任务子任务4 设置文件特殊权限:设置文件特殊权限:SUID、SGID、SBIT 除了binary program之外,事实上SGID也能够用在目录上,这也是非常常见的种用途。当一个目录设定了SGID的
22、权限后,将具有如下的功能。 用户若对于此目录具有r与x的权限时,该用户能够进入此目录。 用户在此目录下的有效群组(effective group)将会变成该目录的群组。 用途:若用户在此目录下具有用途:若用户在此目录下具有w的权限(可以新建文件),则使的权限(可以新建文件),则使用者所建立的新文件,该新文件的群组与此目录的群组相同。用者所建立的新文件,该新文件的群组与此目录的群组相同。4.3.4 子任务子任务4 设置文件特殊权限:设置文件特殊权限:SUID、SGID、SBIT 3Sticky Bit Sticky Bit(SBIT)目前只针对目录有效,对于文件没有效果。t或T(Sticky):
23、/tmp和 /var/tmp目录供所有用户暂时存取文件,即每位用户都拥有完整的权限进入该目录,去浏览、删除和移动文件。4.3.4 子任务子任务4 设置文件特殊权限:设置文件特殊权限:SUID、SGID、SBIT 3Sticky Bit SBIT对于目录的作用如下。 当用户对于此目录具有w、x权限,即具有写入的权限时。 当用户在该目录下建立文件或目录时,仅有自己与root才有权删除该文件。4.3.4 子任务子任务4 设置文件特殊权限:设置文件特殊权限:SUID、SGID、SBIT 3Sticky Bit 做一做: 以root登入系统,并且进入/tmp当中; touch test,并且更改test
24、权限成为777; 以般使用者登入,并进入/tmp;尝试删除test这个文件。4.3.4 子任务子任务4 设置文件特殊权限:设置文件特殊权限:SUID、SGID、SBIT 3Sticky Bit 做一做: 以root登入系统,并且进入/tmp当中; touch test,并且更改test权限成为777; 以般使用者登入,并进入/tmp;尝试删除test这个文件。4.3.4 子任务子任务4 设置文件特殊权限:设置文件特殊权限:SUID、SGID、SBIT4SUID/SGID/SBIT权限设定权限设定 前面介绍过SUID与SGID的功能,那么如何配置文件权限使其具有SUID与SGID的权限呢?这就需
25、要前面刚刚学过的数字更改权限的方法了。我们知道数字型态更改权限的方式为三个数字的组合,那么如果在这三个数字之前再加上一个数字的话,最前面的那个数字就代表这几个的权限了。其中4为SUID,2为SGID,1为SBIT。假设要将一个文件权限改为-rwsr-xr-x时,由于s在用户权力中,所以是SUID,因此,在原先的755之前还要加上4,也就是用chmod 4755 filename来设定。4.3.4 子任务子任务4 设置文件特殊权限:设置文件特殊权限:SUID、SGID、SBIT4SUID/SGID/SBIT权限设定权限设定 4.3.4 子任务子任务4 设置文件特殊权限:设置文件特殊权限:SUID
26、、SGID、SBIT4SUID/SGID/SBIT权限设定权限设定 除了数字法之外,我们可以透过符号法来处理。其中SUID为u+s,而SGID为g+s,SBIT则是o+t。请看下面的范例(设定权限为-rws-x-x): 4.4 任务任务4 企业实战与应用企业实战与应用1情境及需求情境及需求情境情境:设系统中有两个账号,分别是alex与arod,这两个人除了自己群组之外还共同支持一个名为project的群组。假设这两个用户需要共同拥有/srv/ahome/目录的开发权,且该目录不许其他人进入查阅。请问该目录的权限应如何设定?请先以传统权限说明,再以SGID的功能解析。目标目标:了解为何项目开发时
27、,目录最好需要设定SGID的权限。前提前提:多个账号支持同群组,且共同拥有目录的使用权。需求需求:需要使用root的身份运行chmod、chgrp等命令帮用户设定好他们的开发环境。这也是管理员的重要任务之一。4.4 任务任务4 企业实战与应用企业实战与应用2解决方案解决方案(1)首先制作出这两个账号的相关数据,如下图所示:4.4 任务任务4 企业实战与应用企业实战与应用2解决方案解决方案(2)再建立所需要开发的项目目录。4.4 任务任务4 企业实战与应用企业实战与应用2解决方案解决方案(3)从上面的输出结果可发现alex与arod都不能在该目录内建立文件,因此需要进行权限与属性的修改。由于其他人均不可进入此目录,因此该目录的群组应为project,权限应为770才合理。4.4 任务任务4 企业实战与应用企业实战与应用2解决方案解决方案(4)分别以两个使用者来测试,情况会如何呢?先用alex建立文件,然后用arod去处理。4.4 任务任务4 企业实战与应用企业实战与应用2解决方案解决方案(5)加入SGID的权限,并进行测试。4.4 任务任务4 企业实战与应用企业实战与应用2解决方案解决方案(6)测试:使用alex去建立一个文件,并且查阅文件权限看看: