RHEL6基础四十九之RHEL文件(夹)权限进阶篇

ACL权限管理

ACL(Access Control List,访问控制列表)主要是提供传统的owner,group,others的read,write,execute权限之外的具体权限设置,ACL可以针对单一用户、单一文件或目录来进行r,w,x的权限控制,对于需要特殊权限的使用状况有一定帮助。

例①:目录 /home/acl 的权限为:drwxr-x---,所有者与所属组均为 root,在不改变所有者的前提下,只要求other组的用户justin 对该目录有完全访问权限 (rwx)(justin不属于 root group)
(1) 对于/home/acl目录来说justin用户属于other组,如果给 /home/acl的 other 组增加 rwx 权限,这样所有other组成员都拥有了rwx权限。
(2) 如果将 justin 加入到 root 组,为 root 组分配 rwx 权限,显然和题意不符。

为了解决这个问题需要使用ACL的功能,ACL 可以设置特定用户或者用户组对于一个文件的操作权限

ACL权限管理

Setfacl:设置某个文件/目录的ACL设置项目

Getfacl:取得某个文件/目录的ACL设置项目

[d[efault]:] [u[ser]:]uid [:perms]  指定用户的权限,文件所有者的权限(如果uid没有指定)。

[d[efault]:] g[roup]:gid [:perms]   指定群组的权限,文件所有群组的权限(如果gid未指定)

[d[efault]:] m[ask][:] [:perms]     有效权限掩码

[d[efault]:] o[ther] [:perms]       其他的权限

perms域是一个代表各种权限的字母的组合:读-r写-w执行-x,执行只适合目录和一些可执行的文件,也可设置为八进制格式。

说明:ACL 有两种,一种是存取 ACL (access ACLs),针对文件和目录设置访问控制列表。一种是默认ACL(default ACLs),只能针对目录置。如果目录中的文件没置ACL,它就会使用该目录的默认 ACL.

参数功能参数功能
-m修改文件(夹)当前的ACL设置-x删除文件(夹)的ACL设置
-M读取文件(夹)修改的ACL设置-X读取删除的文件(夹)ACL设置
-b
删除所有的ACL设置-R递归设置ACL
-k删除默认的ACL设置-d设置默认的ACL

wKioOVLCdK2g6U1sAADf4x64hEo426.jpg

user::rw-       定义了ACL_USER_OBJ, 说明file owner拥有read and write permission

user:john:rw-   定义了ACL_USER,这样用户john就拥有了对文件的读写权限,实现了我们一开始要达到的目的

group::rw-      定义了ACL_GROUP_OBJ,说明文件的group拥有read and write permission

group:dev:r--   定义了ACL_GROUP,使得dev组拥有了对文件的read permission

mask::rw-       定义了ACL_MASK的权限为read and write

other::r--      定义了ACL_OTHER的权限为read


注意:除了对用户、组进行设置外还可以对有效权限(mask)进行设置,用户或组所设置的权限必须要存在于mask的权限设置范围内才会生效

上面的例①可以如下操作:

wKioOVLCdjHienLsAACXxlz3Jz8766.jpg


       SetUID SetGID 粘滞位sticky位

权限功能
SetUID

使用户具有文件所有者的权限.SetUID只会出现在二进制文件中,目录中存在将没有意义。当其它用户使用带用Setuid标识的命令时,自己对此命令也必需有X(执行)的权限

SetGID设置用户具有该目录所属组的权限。该权限只对目录有效. 目录被设置该位后, 任何用户在此目录下创建的文件都具有和该目录所属的组相同的组.
粘滞位粘滞位主要是为公共目录(例如权限为777的)设置,作用是用户不能删除该目录中其他用户的文件(root用户除外)。sticky只对文件有效

文件(夹)的权限实际上是由4位8进制数字表示,这4位数字由SetUID+SetGID+粘滞位、属主、属组、其他用户组成,SetUID、SetGID、粘滞位(sticky位)分别用数字4、2、1表示,设置后, 可以用 ls -l 来查看. 如果本来在该位上有x, 则这些特殊标志显示为小写字母 (s, s, t). 否则, 显示为大写字母 (S, S, T),赋予SetUID权限chmod命令:chmod 4xxx file(s)或chmod u+s file(s),撤销SetUID权限:chmod xxx file(s)或chmod u-s file(s)

例:1、以SetUID为例:

wKiom1LGb73AYEZfAADS2vqIk80276.jpg

2、在/home/sticky目录中任何用户都可以创建文件或目录,但只有用户自身和root用户可以删除用户所创建的文件或目录。

wKioL1LGb7DzpsUXAAEWHQdYAq0260.jpg


chattr与lsattr命令

这两个命令是用来查看和改变文件、目录属性的,与chmod这个命令相比,这两个命令是用来查看和改变文件、目录属性的,与chmod这个命令相比,chmod只是改变文件的读写、执行权限,更底层的属性控制是由chattr来改变的。

chattr命令的用法:chattr [ -RVf ] [ -v version ] [ mode ] files…

+ :在原有参数设定基础上,追加参数。+ :在原有参数设定基础上,追加参数。
- :在原有参数设定基础上,移除参数。
= :更新为指定参数设定。
A:文件或目录的 atime (access time)不可被修改(modified), 可以有效预防例如手提电脑磁盘I/O错误的发生。
S:硬盘I/O同步选项,功能类似sync。
a:即append,设定该参数后,只能向文件中添加数据,而不能删除,多用于服务器日志文件安全,只有root才能设定这个属性。
c:即compresse,设定文件是否经压缩后再存储。读取时需要经过自动解压操作。
d:即no dump,设定文件不能成为dump程序的备份目标。
i:设定文件不能被删除、改名、设定链接关系,同时不能写入或新增内容。i参数对于文件 系统的安全设置有很大帮助。
j:即journal,设定此参数使得当通过mount参数:data=ordered 或者 data=writeback 挂 载的文件系统,文件在写入时会先被记录(在journal中)。如果filesystem被设定参数为 data=journal,则该参数自动失效。
s:保密性地删除文件或目录,即硬盘空间被全部收回。
u:与s相反,当设定为u时,数据内容其实还存在磁盘中,可以用于undeletion。
各参数选项中常用到的是a和i。a选项强制只可添加不可删除,多用于日志系统的安全设定。而i是更为严格的安全设定,只有superuser (root) 或具有CAP_LINUX_IMMUTABLE处理能力(标识)的进程能够施加该选项。

用chattr命令防止系统中某个关键文件被修改

[root@justin ~]# lsattr /etc/resolv.conf
-------------e- /etc/resolv.conf
[root@justin ~]# chattr +i /etc/resolv.conf
[root@justin ~]# lsattr /etc/resolv.conf
----i--------e- /etc/resolv.conf
[root@justin ~]# vim /etc/resolv.conf

wKiom1N0eC6xJQOfAAEL_dsuTZ8845.jpg

让某个文件只能往里面追加数据,但不能删除,适用于各种日志文件

[root@justin ~]# chattr +a /var/log/messages


###########################################################

关注微信公众平台,了解最新动态

155940478.jpg

Linux交流QQ群:333212786

Linux系统运维技术交流

PS:由于学习阶段部分不确定性文章会暂时隐藏,后期会公开,新公开和修正的文章会

通过微信公众平台(justin_rsdd)给出提示,欢迎关注,同时也希望得到大家的指点!

##############################################################


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章