项目四 配置与管理文件系统
#职业能力目标和要求
理解 Linux文件系统结构。
能够进行Linux系统的文件权限管理,熟悉磁盘和文件系统管理工具。
掌握Linux系统权限管理的应用。
4.1 全面理解文件系统和目录
4.1.1 认识文件系统
(1)Ext3:是一款日志文件系统,能够在系统异常宕机时避免文件系统资料丢失,并能自动修复数据的不一致与错误。
**(2)Ext4:**该文件系统能够批量分配block块,从而提高读写效率。(RHEL 6 的默认文件管理系统)
**(3)XFS:**一种高性能的日志文件系统,而且是RHEL 7的默认文件系统。优势在发生宕机时恢复数据特别快!而且强大的日志功能只用花费极低的计算和存储性能。
Linux内核中的软件层为用户程序提供了一个VFS(虚拟文件系统)接口,
4.1.2 理解Linux文件系统目录结构
Linux系统中一切都是文件。并且按照文件系统层次标准采用数状结构来存放文件。
4.1.3 理解绝对路径和相对路径
- 绝对路径:由根目录(/)开始写起的文件名或目录名称。如/etc/sysconfig/network-scripts/
- 相对路径:相对于目前路径的文件写法。如/…/sysconfig/network-scripts/
- . :表示当前的目录,也可以使用./来表示。
- … :表示上一层目录,也可以用…/来表示。
4.2 管理Linux文件权限
4.2.1 理解文件和文件权限
1,根据赋予权限的不同,3中不同的用户**(所有者,用户组或其他用户)**能够访问不同的目录或者文件。
2,在Linux系统中,如果文件名是以”.“开始,表示为隐藏文件,需要使用”ls -a“才能显示。
3,用"ll"命令查看
4,第一套权限控制访问自己的文件权限,第二套权限控制用户组访问其中一个用户的权限,第三套用户权限控制其他所有用户访问一个用户的文件权限。就构成了一个9种类型的权限组。
4.2.2 详解文件的各种属性信息
1,第一组为文件类型权限:
d:表示一个目录。
-:表示普通文件。
l:表示一个符号链接文件,其实它指向另外一个文件。
b,c:分别表示为区块设备或其他的外围设备,是特殊类型的文件。
s,p:这些文件关系到系统的数据结构和管道。
(1)
(2)按权限种类的不同,也分为3种类型。
r(读):对于文件,具有读文件的权限;对于目录,具有浏览目录的权限
w(写):对于文件,具有新增/修改文件内容的权限;对于目录,具有删除/移动目录内文件的权限
x(执行):对于文件,具有执行的权限;对于目录。具有进入目录的权限
-:表示不具备该项权限。加权限:(umask +权限数)
用户登录系统时,用户环境就会自动执行umask命令来决定文件、目录的默认权限。
2,第2组表示有多少文件名连结到此节点( i-node )
3,第三组表示这个文件(或目录)的拥有者账号
4,第四组表示这个文件的所属群组
5,第五组为这个文件的容量大小,默认单位为bytes
6,第六组为这个文件的创建日期或者是最近的修改日期
- 如果想要显示完整的时间格式,可以利用ls -l --full-time
7,第七组为这个文件的文件名
4.2.3 使用数字表示法修改权限
可以使用chmod命令修改权限
chmod 选项 文件
数字表示法:读(r),写(w),执行(x)分别以数字4,2,1来表示。没有授予的就是0。
**例如:**不希望别人看到可以设置740的权限
4.2.4 使用文字表示法修改权限
1,文字表示法
(1)字母表示不同用户
- u:所有者
- g:属组
- o:其他用户
- a:以上三种用户
(2)字符组合表示法设置操作权限
- r:(read)可读
- w:(write)可写
- x:(execute)执行
(3)操作符号
- +:加权限
- -:减去权限
- =:赋予指定权限并取消原权限
修改目录权限和修改文件权限相同,都是使用chmod命令,但不同的是,要使用通配符“*”来表示目录中所有文件。如果目录中含子目录,则必须使用-R。
2,利用chmod命令可以修改文件的特殊权限
例如:文件的SUID权限,就可以使用u+s加权限
特殊权限也采用数字表示法。SUID,SGID,sticky权限分别为4,2,1。(加到普通权限数字前即可)
在+与-的状态下,只要不是指定的项目。权限是不会变动的。
4.3 修改文件与目录的默认权限与隐藏权限
1,文件权限包括读(r),写(w),执行(x)。
2,决定文件类型的属性包括目录(d),文件(-)连接符等。
3,修改权限的办法(chgrp,chown,chmod)。
- chgrp命令:
- chown命令:
- chmod命令:
4,设置系统隐藏属性使用chattr命令,使用lsattr命令可以查看隐藏属性。
5,基于安全机制的考虑,设定文件不可修改的特性,即文件的拥有者页不可以修改。
4.3.1 理解文件预设权限:umask
**umask命令:**指定的就是用户在建立文件或目录时的默认权限。
查看权限的方法:
- 直接输入:umask,可查看数字形态的权限设定。(有四组,第一组是特殊权限)
- 加-S,以符号类型的方式显示权限。
目录/文件权限解读:
-
建立文件的权限最大666.(就是没有x权限)-rw-rw-rw-(当创建文件时权限:-rw-r–r–)
-
建立目录的权限最大777.(全要)drexrwxrwx(当创建目录时权限:drwxr-xr-x)
-
去除权限的时候直接加减(r,w,x(4,2,1))
4.3.2 利用umask
1,新建文件的权限应该为-rw-rw-r–(当我们需要新建文件给同群组的使用者共同编时使用:umask 002)
2,umask与新建文件及目录的默认权限有很大关系。这个属性可以用在服务器上,尤其是文件服务器(file server)上。
3,umask为002,所以去掉的权限为:--------wx,因此
- 文件权限为:-rw-rw-r–
- 目录权限为:drwxrwxr–
4,root的umask值默认是002是基于安全的考虑,对一般用户,通常umask为002,即保留同组的写入权限。
4.3.3 设置文件隐藏属性
**1,chattr命令:**改变文件属性。
语法:chattr [-RV] [-v<版本编号>] [+/-/=<属性>] [文件或目录]
该命令可改变存放在ext4文件系统上的文件或目录属性。共8种属性:
- a:系统只允许在这个文件之后追加数据,不允许任何进程覆盖或截断这个文件。如果是目录则,只可建/改文件,不可删。
- b:不更新文件或目录最后存取时间。
- c将文件或目录压缩后存放。
- d:将文件或目录排除在操作之外。
- i:不得任意改动文件或目录。(该指令关乎数据安全)
- s:保密性删除文件或目录
- S:即时更新文件或目录。
- u:预防意外删除。
- -R:递归处理
- -v<版本编号>:设置文件或目录版本
- -V:显示指令执行过程
- +/-/=:开启/关闭/指定文件或目录的该项属性
在系统的数据安全方面很重要。
如果是log file(日志文件),需要+a属性:增加但不能修改与删除旧数据。
**2,lsattr命令:**显示文件隐藏属性
语法:lsattr [-adR] 文件或目录
-a:显示隐藏文件的属性
-d:如果是目录,仅列出目录本身的属性而非目录内的文件名
-R:连同子目录的数据一并列出
4.3.4 设置文件特殊权限:SUID,SGID,SBIT
4.4 文件访问控制列表
ACL:文件访问控制列表。基于普通文件或目录设置ACL其实就是针对指定用户或用户组设置文件或目录的操作权限。
如果针对某个目录设置了ACL,则目录中的文件会继承其ACL;若针对文件设置了ACL,,则文件不再继承其所在目录的ACL。
4.4.1 setfacl命令
用于管理文件的ACL规则。格式为**“setfacl [参数] 文件名称”**
-m:设置后续acl参数
-x:删除后续acl参数
-b:删除全部的acl参数
-k:删除默认的acl参数
-R:递归设置acl,包括子目录
-d:设置默认acl
针对目录文件需要使用-R递归参数;针对普通文件可以使用-m参数;如果要删除某个文件的ACL,可以使用-b参数。
4.4.2 getfacl命令
显示文件设置的ACL信息,格式为“getfacl 文件名称”
4.5 企业实战与应用
1,情境及需求
情境:假设系统中有两个账号,分别是alec与arod,这两个账号除了支持自己的群组,还共同支持一个名为project的群组。如这两个账号需要共同拥有/srv/ahome/目录的开发权,且该目录不允许其他账号进入查阅,请问该目录的权限应如何设定?
**目标:**了解为何项目开发时,目录最好设定SGID的权限。
**前提:**多个账号支持同一群组,且共同拥有目录的使用权。
**需求:**需要使用root的身份运行chomd,chgrp等命令。帮用户设定好他们的开发环境。
2,解决方案
(1)制作出这两个账号的相关数据。
(2)建立所需要开发的项目目录。
(3)从上面的输出结果可发现alex和arod都不能在该目录内建立文件,因此需要进行权限与属性的修改。
(4)分别以两个使用者来测试!
(5)加入SGID的权限,并进行测试。
(6)测试:使用alex来建立一个文件,并查阅文件权限。
由于两个账号均属于此群组,加上umask都是002,这样两个账号才可以互相修改对方的文件。