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

Posted 我的番茄炒蛋

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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设置项目

说明: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
[[email protected] ~]# lsattr /etc/resolv.conf
-------------e- /etc/resolv.conf
[[email protected] ~]# chattr +i /etc/resolv.conf
[[email protected] ~]# lsattr /etc/resolv.conf
----i--------e- /etc/resolv.conf
[[email protected] ~]# vim /etc/resolv.conf

技术分享

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

 

1
[[email protected] ~]# chattr +a /var/log/messages

以上是关于RHEL6基础四十九之RHEL文件(夹)权限进阶篇的主要内容,如果未能解决你的问题,请参考以下文章

RHEL6-基础篇-1.系统结构与内核

C语言试题四十九之只删除字符串前导和尾部的*号,串中字母之间的*号都不删除。 n 给出了字符串的长度,h字符串中前导*号的个数,e给出了字符串中最后的*个数

C语言试题四十九之只删除字符串前导和尾部的*号,串中字母之间的*号都不删除。 n 给出了字符串的长度,h字符串中前导*号的个数,e给出了字符串中最后的*个数

Python进阶(四十九)-初识Flask Blueprint

C语言试题六十九之请编写函数判断一个数是不是素数

C语言试题六十九之请编写函数判断一个数是不是素数