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设置项目 说明: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 |
注意:除了对用户、组进行设置外还可以对有效权限(mask)进行设置,用户或组所设置的权限必须要存在于mask的权限设置范围内才会生效
上面的例①可以如下操作:
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为例:
2、在/home/sticky目录中任何用户都可以创建文件或目录,但只有用户自身和root用户可以删除用户所创建的文件或目录。
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命令防止系统中某个关键文件被修改
1
2
3
4
5
6
|
[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 |
让某个文件只能往里面追加数据,但不能删除,适用于各种日志文件
1
|
[root@justin ~] # chattr +a /var/log/messages
|