1、项目四 配置与管理文件系统2项目导入理解Linux文件系统结构。能够进行Linux系统的文件权限管理,熟悉磁盘和文件系统管理工具。掌握Linux系统权限管理的应用。职业能力目标和要求 Linux系统的网络管理员需要学习Linux文件系统和磁盘管理。尤其对于初学者来说,文件的权限与属性是学习Linux的一个相当重要的关卡,如果没有这部分的知识储备,那么当你遇到“Permission deny”的错误提示时将会一筹莫展。项目四 配置与管理文件系统34.1 全面理解文件系统与目录4.2 管理Linux文件权限4.3 修改文件与目录的默认权限和隐藏权限4.4 文件访问控制列表4.5 企业实战与应用4.
2、6 项目实录44.1 任务1 全面理解文件系统与目录4.1.1 子任务1 认识文件系统文件系统(File System)是磁盘上有特定格式的一片区域,操作系统利用文件系统保存和管理文件。用户在硬件存储设备中执行的文件建立、写入、读取、修改、转存与控制等操作都是依靠文件系统来完成的。文件系统的作用是合理规划硬盘,以保证用户正常的使用需求。Linux系统支持数十种的文件系统,而最常见的文件系统如下所示。(1)Ext3:是一款日志文件系统,能够在系统异常宕机时避免文件系统资料丢失,并能自动修复数据的不一致与错误。然而,当硬盘容量较大时,所需的修复时间也会很长,而且也不能百分之百地保证资料不会丢失。它
3、会把整个磁盘的每个写入动作的细节都预先记录下来,以便在发生异常宕机后能回溯追踪到被中断的部分,然后尝试进行修复。(2)Ext4:Ext3的改进版本,作为RHEL 6系统中的默认文件管理系统,它支持的存储容量高达1EB(1EB=1 073 741 824GB),且能够有无限多的子目录。另外,Ext4文件系统能够批量分配block块,从而极大地提高了读写效率。(3)XFS:是一种高性能的日志文件系统,而且是RHEL 7中默认的文件管理系统。它的优势在发生意外宕机后显得尤其明显,即可以快速地恢复可能被破坏的文件,而且强大的日志功能只用花费极低的计算和存储性能。它最大可支持的存储容量为18EB,这几乎
4、满足了所有需求。RHEL 7系统中一个比较大的变化就是使用了XFS作为文件系统,XFS文件系统可支持高达18EB的存储容量。日常在硬盘需要保存的数据实在太多了,因此Linux系统中有一个名为super block的“硬盘地图”。Linux只是把每个文件的权限与属性记录在inode中,而且每个文件占用一个独立的inode表格。该表格的大小默认为128字节,里面记录着如下信息。该文件的访问权限(read、write、execute)。该文件的所有者与所属组(owner、group)。该文件的大小(size)。该文件的创建或内容修改时间(ctime)。该文件的最后一次访问时间(atime)。该文件的
5、修改时间(mtime)。文件的特殊权限(SUID、SGID、SBIT)。该文件的真实数据地址(point)。5 文件的实际内容则保存在block块中(大小可以是1KB、2KB或4KB),一个inode的默认大小仅为128B(Ext3),记录一个block则消耗4B。当文件的inode被写满后,Linux系统会自动分配出一个block块,专门用于像inode那样记录其他block块的信息,这样把各个block块的内容串到一起,就能够让用户读到完整的文件内容了。对于存储文件内容的block块,有下面两种常见情况(以4KB的block大小为例进行说明)。情况1:文件很小(1KB),但依然会占用一个b
6、lock,因此会潜在地浪费3KB。情况2:文件很大(5KB),那么会占用两个block(5KB4KB后剩下的1KB也要占用一个block)。6 计算机系统在发展过程中产生了众多的文件系统,为了使用户在读取或写入文件时不用关心底层的硬盘结构,Linux内核中的软件层为用户程序提供了一个VFS(Virtual File System,虚拟文件系统)接口,这样用户实际上在操作文件时就是统一对这个虚拟文件系统进行操作了。图4-1所示为VFS的架构示意图。图4-1 VFS的架构示意图74.1.2 子任务2 Linux文件系统目录结构 在Linux系统中,目录、字符设备、块设备、套接字、打印机等都被抽象成
7、了文件:Linux系统中一切都是文件。想要找到一个文件,我们要依次进入该文件所在的磁盘分区(假设这里是D盘),然后在进入该分区下的具体目录,最终找到这个文件。在Linux系统中并不存在C/D/E/F等盘符,Linux系统中的一切文件都是从“根(/)”目录开始的,并按照文件系统层次化标准(Filesystem Aierarchy Standard,FHS)采用树形结构来存放文件,以及定义了常见目录的用途。Linux系统中的文件和目录名称是严格区分大小写的。例如,root、rOOt、Root、rooT均代表不同的目录,并且文件名称中不得包含斜杠(/)。Linux系统中的文件存储结构如图4-2所示。
8、图4-2 Linux系统中的文件存储结构8在Linux系统中,最常见的目录以及所对应的存放内容如表4-1所示。目录名称目录名称应放置文件的内容应放置文件的内容/Linux文件的最上层根目录/boot开机所需文件内核、开机菜单以及所需配置文件等/dev以文件形式存放任何设备与接口/etc配置文件/home用户家目录/binBinary的缩写,存放用户的可运行程序,如ls、cp等,也包含其他shell,如bash和cs等表4-1 Linux系统中常见的目录名称以及相应内容9在Linux系统中,最常见的目录以及所对应的存放内容如表4-1所示。表4-1 Linux系统中常见的目录名称以及相应内容/li
9、b开机时用到的函数库,以及/bin与/sbin下面的命令要调用的函数/sbin开机过程中需要的命令/media用于挂载设备文件的目录/opt放置第三方的软件/root系统管理员的家目录/srv一些网络服务的数据文件目录/tmp任何人均可使用的“共享”临时目录/proc虚拟文件系统,如系统内核、进程、外部设备及网络状态等/usr/local用户自行安装的软件/usr/sbinLinux系统开机时不会使用到的软件/命令/脚本/usr/share帮助与说明文件,也可放置共享文件/var主要存放经常变化的文件,如日志/lost+found当文件系统发生错误时,将一些丢失的文件片段存放在这里104.1.
10、3 子任务3 理解绝对路径和相对路径绝对绝对路径与相对路径与相对路径路径绝对路径:由根目录(/)开始写起的文件名或目录名称,如/home/dmtsai/basher。相对路径:相对于目前路径的文件名写法,如./home/dmtsai或././home/dmtsai/等。相对路径是以当前所在路径的相对位置来表示的。举例来说,你目前在/home这个目录下,如果想要进入/var/log这个目录时,可以怎么写呢?有两种方法。cd /var/log:绝对路径。cd ./var/log:相对路径。因为你目前在/home下,所以要回到上层(./)之后,才能进入/var/log目录。特别注意两个特殊的目录。:
11、代表当前的目录,也可以使用./来表示。:代表上层目录,也可以用./来代表。常常看到的cd.或./command之类的指令表达方式,就是代表上一层与目前所在目录的工作状态。114.2 任务2 管理Linux文件权限 文件是操作系统用来存储信息的基本结构,是一组信息的集合。文件通过文件名来唯一地标识。Linux中的文件名称最长可允许255个字符,这些字符可用AZ、09、.、_、-等符号来表示。与其他操作系统相比,Linux没有“扩展名”的概念,也就是说文件的名称和该文件的种类并没有直接的关联。它的另一个特性是Linux文件名区分大小写。在Linux中的每一个文件或目录都包含有访问权限,这些访问权限
12、决定了谁能访问和如何访问这些文件和目录。通过设定权限可以从以下3种访问方式限制访问权限。只允许用户自己访问。允许一个预先指定的用户组中的用户访问。允许系统中的任何用户访问。4.2.1 子任务1 理解文件和文件权限12 根据赋予权限的不同,3种不同的用户(所有者、用户组或其他用户)能够访问不同的目录或者文件。所有者是创建文件的用户,文件的所有者能够授予所在用户组的其他成员以及系统中除所属组之外的其他用户的文件访问权限。每一个用户针对系统中的所有文件都有它自身的读、写和执行权限。第一套权限控制访问自己的文件权限,即所有者权限。第二套权限控制用户组访问其中一个用户的文件的权限。第三套权限控制其他所有
13、用户访问一个用户的文件的权限。这三套权限赋予用户不同类型(即所有者、用户组和其他用户)的读、写及执行权限,就构成了一个有9种类型的权限组。我们可以用“ls-l”或者ll命令显示文件的详细信息,其中包括权限。如下所示:rootRHEL7-1#lltotal 84drwxr-xr-x 2 root root 4096 Aug 9 15:03 Desktop-rw-r-r-1 root root 1421 Aug 9 14:15 anaconda-ks.cfg-rw-r-r-1 root root 6107 Aug 9 14:15 install.log.syslogdrwxr-xr-x 2 roo
14、t root 4096 Sep 1 13:54 webmin图4-3 文件属性示意图134.2.2 子任务2 详解文件各种属性信息1第第1组为文件类型权限组为文件类型权限 每一行的第一个字符一般用来区分文件的类型,一般取值为d、-、l、b、c、s、p。具体含义如下。d:表示是一个目录,在ext文件系统中目录也是一种特殊的文件。-:表示该文件是一个普通的文件。l:表示该文件是一个符号链接文件,实际上它指向另一个文件。b、c:分别表示该文件为区块设备或其他的外围设备,是特殊类型的文件。s、p:这些文件关系到系统的数据结构和管道,通常很少见到。14 每一行的第210个字符表示文件的访问权限。这9个字
15、符每3个为一组,左边3个字符表示所有者权限,中间3个字符表示与所有者同一组的用户的权限,右边3个字符是其他用户的权限。代表的意义如下。字符2、3、4表示该文件所有者的权限,有时也简称为u(User)的权限。字符5、6、7表示该文件所有者所属组的组成员的权限。例如,此文件拥有者属于“user”组群,该组群中有6个成员,表示这6个成员都有此处指定的权限。简称为g(Group)的权限。字符8、9、10表示该文件所有者所属组群以外的权限,简称为o(Other)的权限。这9个字符根据权限种类的不同,也分为3种类型。r(Read,读取):对文件而言,具有读取文件内容的权限;对目录来说,具有浏览目录的权限。
16、w(Write,写入):对文件而言,具有新增、修改文件内容的权限;对目录来说,具有删除、移动目录内文件的权限。x(execute,执行):对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限。-:表示不具有该项权限。下面举例说明。brwxr-r-:该文件是块设备文件,文件所有者具有读、写与执行的权限,其他用户则具有读取的权限。-rw-rw-r-x:该文件是普通文件,文件所有者与同组用户对文件具有读写的权限,而其他用户仅具有读取和执行的权限。drwx-x-x:该文件是目录文件,目录所有者具有读写与进入目录的权限,其他用户能进入该目录,却无法读取任何数据。lrwxrwxrwx:该文件是符
17、号链接文件,文件所有者、同组用户和其他用户对该文件都具有读、写和执行权限。152第第2组表示有多少文件名连结到此节点(组表示有多少文件名连结到此节点(i-node)每个文件都会将其权限与属性记录到文件系统的i-node中,不过,我们使用的目录树却是使用文件来记录,因此每个文件名就会连接到一个i-node。这个属性记录的就是有多少不同的文件名连接到相同的一个i-node。3第第3组表示这个文件(或目录)的拥有者账号组表示这个文件(或目录)的拥有者账号4第第4组表示这个文件的所属群组组表示这个文件的所属群组 在Linux系统下,你的账号会附属于一个或多个的群组中。举例来说明:class1、clas
18、s2、class3均属于projecta这个群组,假设某个文件所属的群组为projecta,且该文件的权限为(-rwxrwx-),则class1、class2、class3 3人对于该文件都具有可读、可写、可执行的权限(看群组权限)。但如果是不属于projecta的其他账号,对于此文件就不具有任何权限了。165第第5组为这个文件的容量大小,默认单位为组为这个文件的容量大小,默认单位为bytes6第第6组为这个文件的创建日期或者是最近的修改日期组为这个文件的创建日期或者是最近的修改日期这一栏的内容分别为日期(月/日)及时间。如果这个文件被修改的时间距离现在太久了,那么时间部分会仅显示年份而已。如
19、果想要显示完整的时间格式,可以利用ls的选项,即ls -l-full-time就能够显示出完整的时间格式了。7第第7组为这个文件的文件名组为这个文件的文件名比较特殊的是:如果文件名之前多一个“.”,则代表这个文件为隐藏文件。请读者使用ls及ls-a这两个指令去体验一下什么是隐藏文件。174.2.3 子任务3 使用数字表示法修改权限通常在权限修改时可以用两种方式来表示权限类型:数字表示法和文字表示法。chmod命令的格式是:chmod 选项选项 文件文件 所谓数字表示法是指将读取(r)、写入(w)和执行(x)分别以数字4、2、1来表示,没有授予的部分就表示为0,然后再把所授予的权限相加而成。表4
20、-2是几个示范的例子。原 始 权 限转换为数字数字表示法rwxrwxr-x(421)(421)(401)775rwxr-xr-x(421)(401)(401)755rw-rw-r-(420)(420)(400)664rw-r-r-(420)(400)(400)644表4-2 以数字表示法修改权限的例子184.2.4 子任务4 使用数字表示法修改权限1文字表示法文字表示法使用权限的文字表示法时,系统用4种字母来表示不同的用户。u:user,表示所有者。g:group,表示属组。o:others,表示其他用户。a:all,表示以上3种用户。使用下面3种字符的组合表示法设置操作权限。r:read,可
21、读。w:write,写入。x:execute,执行。操作符号包括以下几种。:添加某种权限。-:减去某种权限。:赋予给定权限并取消原来的权限。以文字表示法修改文件权限时,上例中的权限设置命令为rootRHEL7-1#chmod u=rw,g=rw,o=r/etc/file修改目录权限和修改文件权限相同,都是使用chmod命令,但不同的是,要使用通配符“*”来表示目录中的所有文件。192利用利用chmod命令也可以修改文件的特殊权限命令也可以修改文件的特殊权限例如,要设置/etc/file文件的SUID权限的方法如下rootRHEL7-1#ll/etc/file-rw-rw-rw-.1 root
22、root 0 5月 20 23:15/etc/filerootRHEL7-1#chmod u+s/etc/filerootRHEL7-1#ll/etc/file-rwSrw-rw-.1 root root 0 5月 20 23:15/etc/file特殊权限也可以采用数字表示法。SUID、SGID和sticky权限分别为4、2和1。使用chmod命令设置文件权限时,可以在普通权限的数字前面加上一位数字来表示特殊权限。例如:rootRHEL7-1#chmod 6664/etc/filerootRHEL7-1#ll /etc/file-rwSrwSr-1 root root 22 11-27 11
23、:42 file203使用文字表示法的有趣实例使用文字表示法的有趣实例【例4-1】假如我们要“设定”一个文件的权限为-rwxr-xr-x时,所表述的含义如下。user(u):具有可读、可写、可执行的权限。group与others(g/o):具有可读与执行的权限。执行结果如下:rootRHEL7-1#chmod u=rwx,go=rx .bashrc#注意:u=rwx,go=rx是连在一起的,中间并没有任何空格rootRHEL7-1#ls -al .bashrc-rwxr-xr-x 1 root root 395 Jul 4 11:45.bashrc【例 4-2】假如设置-rwxr-xr-这样的
24、权限又该如何操作呢?可以使用“chmod u=rwx,g=rx,o=r filename”来设定。此外,如果不知道原先的文件属性,而想增加.bashrc文件的所有人均有写入的权限,那么可以使用如下命令:rootRHEL7-1#ls -al .bashrc-rwxr-xr-x 1 root root 395 Jul 4 11:45.bashrcrootRHEL7-1#chmod a+w .bashrcrootRHEL7-1#ls -al .bashrc-rwxrwxrwx 1 root root 395 Jul 4 11:45.bashrc21【例4-3】如果要将权限去掉而不改动其他已存在的权限
25、呢?例如,要去掉所有人的可执行权限,则可以使用如下命令:rootRHEL7-1#chmod a-x .bashrcrootRHEL7-1#ls -al .bashrc-rw-rw-rw-1 root root 395 Jul 4 11:45.bashrc特别提示:在+与-的状态下,只要不是指定的项目,权限是不会变动的。224.2.5 子任务5 理解权限与指令间的关系权限对于使用者账号来说非常重要,因为权限可以限制使用者能不能读取/建立/删除/修改文件或目录。11理解权限与指令间的关系234.3 任务3 修改文件与目录的默认权限与隐藏权限 文件权限包括读(r)、写(w)、执行(x)等基本权限,决
26、定文件类型的属性包括目录(d)、文件(-)、连结符等。修改权限的方法(chgrp,chown,chmod)在前面已经提过。在Linux的ext2/ext3/ext4文件系统下,除基本r、w、x权限外,还可以设定系统隐藏属性。设置系统隐藏属性使用chattr命令,而使用lsattr命令可以查看隐藏属性。另外,基于安全机制方面(security)的考虑,设定文件不可修改的特性,即文件的拥有者也不能修改。4.3.1 子任务1 理解文件预设权限:umask查阅默认权限的方式有两种:一是直接输入umask,可以看到数字形态的权限设定;二是加入-S(Symbolic)选项,则会以符号类型的方式显示权限。2
27、4 目录与文件的默认权限是不一样的。我们知道,x权限对于目录是非常重要的。但是一般文件的建立是不应该有执行的权限。因为一般文件通常是用于数据的记录,当然不需要执行的权限。因此,预设的情况如下。若使用者建立文件,则预设没有可执行(x)权限,即只有rw这两个项目,也就是最大为666,预设权限为:-rw-rw-rw-。若用户建立目录,则由于x与是否可以进入此目录有关,因此默认所有权限均开放,即为777,预设权限为:drwxrwxrwx。umask的分值指的是该默认值需要减掉的权限(r、w、x分别对应的是4、2、1),具体如下。去掉写入的权限时,umask的分值输入2。去掉读取的权限时,umask的分
28、值输入4。去掉读取和写入的权限时,umask的分值输入6。去掉执行和写入的权限时,umask的分值输入3。25 以上面的例子,因为umask为022,所以user并没有被去掉任何权限,不过group与others的权限被去掉了2(也就是w这个权限),那么使用者的权限如下。建立文件时:(-rw-rw-rw-)-(-w-w-)=-rw-r-r-。建立目录时:(drwxrwxrwx)-(d-w-w-)=drwxr-xr-x。是这样吗?请看测试结果。rootRHEL7-1#umask0022rootRHEL7-1#touch test1rootRHEL7-1#mkdir test2rootRHEL7-
29、1#11-rw-r-r-1 root root 0 Sep 27 00:25 test1drwxr-xr-x 2 root root 4096 Sep 27 00:25 test2264.3.2 子任务2 利用umask 假如你与同学进行的是同一个专题,你们的账号属于相同群组,并且/home/class/目录是你们的专题目录。想象一下,有没有可能你所制作的文件你的同学无法编辑?如果是这样,该怎么办呢?这个问题可能经常发生。以上面的案例,test1的权限是644。也就是说,如果umask的值为022,那新建的数据只有用户自己具有写入(w)的权限,同群组的人只有读取(r)的权限,肯定无法修改。这样
30、怎么能共同制作专题呢?因此,当我们需要新建文件给同群组的使用者共同编辑时,umask的群组就不能去掉2这个w的权限。这时umask的值应该是002,这样才能使新建的文件的权限是-rw-rw-r-。那么如何设定umask呢?直接在umask后面输入002就可以了。命令运行情况如下:rootRHEL7-1#umask 002rootRHEL7-1#touch test3rootRHEL7-1#mkdir test4rootRHEL7-1#11-rw-rw-r-1 root root 0 Sep 27 00:36 test3drwxrwxr-x 2 root root 4096 Sep 27 00:
31、36 test427思考:假设umask为003,在此情况下建立的文件与目录的权限又是怎样的呢?umask为003,所以去掉的权限为-wx,因此相关权限如下。文件:(-rw-rw-rw-)-(-wx)=-rw-rw-r-。目录:(drwxrwxrwx)-(d-wx)=drwxrwxr-。284.3.3 子任务3 设置文件影藏属性1chattr命令命令功能说明:改变文件属性。语法:chattr-RV-v+/-/=文件或目录文件或目录.。这项指令可改变存放在ext4文件系统上的文件或目录属性,这些属性共有以下8种模式。a:系统只允许在这个文件之后追加数据,不允许任何进程覆盖或截断这个文件。如果目录
32、具有这个属性,系统将只允许在这个目录下建立和修改文件,而不允许删除任何文件。b:不更新文件或目录的最后存取时间。c:将文件或目录压缩后存放。d:将文件或目录排除在倾倒操作之外。i:不得任意改动文件或目录。s:保密性删除文件或目录。S:即时更新文件或目录。u:预防意外删除。29chattr的相关参数如下。其中,最重要的是+i与+a这两个属性。由于这些属性是隐藏的,所以需要使用lsattr命令。-R:递归处理,将指定目录下的所有文件及子目录一并处理。-v:设置文件或目录版本。-V:显示指令执行过程。+:开启文件或目录的该项属性。-:关闭文件或目录的该项属性。=:指定文件或目录的该项属性。【例4-4
33、】请尝试在/tmp目录下建立文件,加入i参数,并尝试删除。rootRHEL7-1#cd /tmprootRHEL7-1 tmp#touch attrtest =建立一个空文件rootRHEL7-1 tmp#chattr +i attrtest=给予i属性rootRHEL7-1 tmp#rm attrtest =尝试删除,查看结果rm:remove write-protected regular empty file attrtest?yrm:cannot remove attrtest:Operation not permitted=操作不允许#看到了吗?连root也没有办法将这个文件删除!赶
34、紧解除设定吧将该文件的i属性取消的代码如下:rootRHEL7-1 tmp#chattr-i attrtest302lsattr命令(显示文件隐藏属性)命令(显示文件隐藏属性)该命令的语法为rootRHEL7-1#lsattr-adR文件或目录文件或目录该命令的选项与参数如下-a:将隐藏文件的属性也显示出来。-d:如果是目录,仅列出目录本身的属性而非目录内的文件名。-R:连同子目录的数据也一并列出来。例如:rootRHEL7-1 tmp#chattr +aiS attrtestrootRHEL7-1 tmp#lsattr attrtest-S-ia-attrtest4.3.4 子任务4 设置文
35、件特殊权限:SUID、SGID、SBIT 在复杂多变的生产环境中,单纯设置文件的rwx权限无法满足我们对安全和灵活性的需求,因此便有了SUID、SGID与SBIT的特殊权限位。这是一种对文件权限进行设置的特殊功能,可以与一般权限同时使用,以弥补一般权限不能实现的功能。12设置文件特殊权限:SUID、SGID、SBIT314.4 任务4 文件访问控制列表 一般权限、特殊权限、隐藏权限其实有一个共性权限是针对某一类用户设置的。如果希望对某个指定的用户进行单独的权限控制,就需要用到文件的访问控制列表(Access Control List,ACL)了。为了更直观地看到ACL对文件权限控制的强大效果,
36、可以先切换到普通用户,然后尝试进入root管理员的家目录中。在没有针对普通用户对root管理员的家目录设置ACL之前,其执行结果如下所示:rootRHEL7-1#su-bobbyLast login:Sat Mar 21 16:31:19 CST 2017 on pts/0bobbyRHEL7-1$cd/root-bash:cd:/root:Permission deniedbobbyRHEL7-1 root$exit324.4.1 setfacl命令 setfacl命令用于管理文件的ACL规则,格式为“setfacl 参数 文件名称”。文件的ACL提供的是在所有者、所属组、其他人的读/写/执
37、行权限之外的特殊权限控制,使用setfacl命令可以针对单一用户或用户组、单一文件或目录来进行读/写/执行权限的控制。其中,针对目录文件需要使用-R递归参数;针对普通文件可以使用-m参数;如果想要删除某个文件的ACL,可以使用-b参数。下面来设置用户在/root目录上的权限:rootRHEL7-1#setfacl-Rm u:bobby:rwx/rootrootRHEL7-1#su-bobbyLast login:Sat Mar 21 15:45:03 CST 2017 on pts/1bobbyRHEL7-1$cd/rootbobbyRHEL7-1 root$lsanaconda-ks.cfg
38、 Downloads Pictures PublicbobbyRHEL7-1 root$cat anaconda-ks.cfgbobbyRHEL7-1 root$exit怎样查看文件上有哪些ACL呢?常用的ls命令看不到ACL表信息,却可以看到文件的权限最后一个点(.)变成了加号(+),这就意味着该文件已经设置了ACL。rootRHEL7-1#ls-ld/rootdr-xrwx-+14 root root 4096 May 4 2017/root334.4.2 getfacl命令 getfacl命令用于显示文件上设置的ACL信息,格式为“getfacl 文件名称”。Linux系统中的命令就是这
39、么可爱又好记。想要设置ACL,用的是setfacl命令;要想查看ACL,则用的是getfacl命令。下面使用getfacl命令显示在root管理员家目录上设置的所有ACL信息。rootRHEL7-1#getfacl/rootgetfacl:Removing leading/from absolute path names#file:root#owner:root#group:rootuser:r-xuser:bobby:rwxgroup:r-xmask:rwxother:-344.5 企业实战与应用1情境及需求情境及需求情境:假设系统中有两个账号,分别是alex与arod,这两个账号除了支持自
40、己的群组,还共同支持一个名为project的群组。如这两个账号需要共同拥有/srv/ahome/目录的开发权,且该目录不许其他账号进入查阅,请问该目录的权限应如何设定?请先以传统权限说明,再以SGID的功能解析。目标:了解为何项目开发时,目录最好设定SGID的权限。前提:多个账号支持同一群组,且共同拥有目录的使用权。需求:需要使用root的身份运行chmod、chgrp等命令,帮用户设定好他们的开发环境。这也是管理员的重要任务之一。2解决方案解决方案(1)制作出这两个账号的相关数据,如下所示。rootRHEL7-1#groupadd project =增加新的群组rootRHEL7-1#use
41、radd-G project alex =建立alex账号,且支持projectrootRHEL7-1#useradd-G project arod =建立arod账号,且支持projectrootRHEL7-1#id alex =查阅alex账号的属性uid=1008(alex)gid=1012(alex)组=1012(alex),1011(project)=确定有支持!rootRHEL7-1#id arodid=1009(arod)gid=1013(arod)组=1013(arod),1011(project)35(2)建立所需要开发的项目目录。rootRHEL7-1#mkdir /srv
42、/ahomerootRHEL7-1#ll -d /srv/ahomedrwxr-xr-x 2 root root 4096 Sep 29 22:36/srv/ahome(3)从上面的输出结果可发现alex与arod都不能在该目录内建立文件,因此需要进行权限与属性的修改。由于其他人均不可进入此目录,所以该目录的群组应为project,权限应为770才合理。rootRHEL7-1#chgrp project /srv/ahomerootRHEL7-1#chmod 770 /srv/ahomerootRHEL7-1#ll-d/srv/ahomedrwxrwx-2 root project 4096
43、Sep 29 22:36/srv/ahome#从上面的权限来看,由于alex/arod均支持project,所以似乎没问题了36(4)分别以两个使用者来测试,情况会如何呢?先用alex建立文件,再用arod去处理。rootRHEL7-1#su -alex =先切换身份成为alex来处理alexRHEL7-1$cd /srv/ahome =切换到群组的工作目录去alexRHEL7-1 ahome$touch abcd =建立一个空的文件出来!alexRHEL7-1 ahome$exit =离开alex的身份rootRHEL7-1#su -arodarodRHEL7-1$cd /srv/ahome
44、arodRHEL7-1 ahome$11 abcd-rw-rw-r-1 alex alex 0 Sep 29 22:46 abcd#仔细看一下上面的文件,群组是alex,而群组arod并不支持#因此对于abcd这个文件来说,arod应该只是其他人,只有r权限arodRHEL7-1 ahome$exit37(5)加入SGID的权限,并进行测试。rootRHEL7-1#chmod 2770 /srv/ahomerootRHEL7-1#ll -d /srv/ahomedrwxrws-2 root project 4096 Sep 29 22:46/srv/ahome(6)测试:使用alex去建立一个
45、文件,并且查阅文件权限看看。rootRHEL7-1#su -alexalexRHEL7-1$cd /srv/ahomealexRHEL7-1 ahome$touch 1234alexRHEL7-1 ahome$ll 1234-rw-rw-r-1 alex project 0 Sep 29 22:53 1234#没错!这才是我们要的!现在alex、arod建立的新文件所属群组都是project#由于两个账号均属于此群组,加上umask都是002,这样两个账号才可以互相修改对方的文件384.6 项目实录:配置与管理文件权限1视频位置实训前请扫二维码,观看“实训项目 管理文件权限”慕课。2项目实训目
46、的掌握利用chmod及chgrp等命令实现Linux文件权限管理的方法。掌握磁盘限额的实现方法(下个项目会详细讲解)。3项目背景某公司有60个员工,分别在5个部门工作,每个人的工作内容不同。需要在服务器上为每个人创建不同的账号,把相同部门的用户放在一个组中,每个用户都有自己的工作目录。另外,需要根据每个人的工作性质对每个部门和每个用户在服务器上的可用空间进行限制。假设有用户user1,请设置user1对/dev/sdb1分区的磁盘限额,将user1对blocks的soft设置为5000,hard设置为10000;inodes的soft设置为5000,hard设置为10000。4项目实训内容练习chmod、chgrp等命令的使用,练习在Linux下实现磁盘限额的方法。5做一做根据项目实录视频进行项目的实训,检查学习效果。实训项目 管理文件权限39