Linux 系统中的文件除了具备一般权限和特殊权限之外,还有一种隐藏权限,即被隐藏
起来的权限,默认情况下不能直接被用户发觉。有用户曾经在生产环境中
碰到过明明权限充足但却无法删除某个文件的情况,或者仅能在日志文件中追加内容而不能
修改或删除内容,这在一定程度上阻止了黑客篡改系统日志的图谋,因此这种“奇怪”的文
件也保障了 Linux 系统的安全性。

chartr命令:设置文件的隐藏权限,格式为“ chattr [参数] 文件”

如果想要把某个隐藏功能添加到文件上,则需要在命令后面追加“ +参数”,如果想要把某个隐藏功能移出文件,
则需要追加“ -参数”。

linux:文件的隐藏属性和文件访问控制表linux:文件的隐藏属性和文件访问控制表

举例:

echo "for Test" > linuxprobe

chattr +a linuxprobe

rm linuxprobe

删除会出错

 

lsattr:显示文件的隐藏权限,格式为“ lsattr [参数] 文件”。

文件访问控制表

一般权限、特殊权限、隐藏权限其实有一个共性—权限
是针对某一类用户设置的。如果希望对某个指定的用户进行单独的权限控制,就需要用到文
件的访问控制列表(ACL)了。通俗来讲,基于普通文件或目录设置 ACL 其实就是针对指定
的用户或用户组设置文件或目录的操作权限。另外,如果针对某个目录设置了 ACL,则目录
中的文件会继承其 ACL;若针对文件设置了 ACL,则文件不再继承其所在目录的 ACL

查看ACL信息:dmesg | grep -i acl

 

举例:

在没有对普通用户设置时,普通用户是无法访问root目录的,如cd /root 会出错

setfacl 命令用于管理文件的 ACL 规则,格式为“ setfacl [参数] 文件名称”。

文件的 ACL提供的是在所有者、所属组、其他人的读/写/执行权限之外的特殊权限控制,使用 setfacl 命令
可以针对单一用户或用户组、单一文件或目录来进行读/写/执行权限的控制。其中,针对目录
文件需要使用-R 递归参数;针对普通文件则使用-m 参数;如果想要删除某个文件的 ACL,
则可以使用-b 参数。下面来设置用户在/root 目录上的权限:

setfacl [-bkRd] [{-m|-x} acl参数] 文件名

linux:文件的隐藏属性和文件访问控制表

linux:文件的隐藏属性和文件访问控制表

linux:文件的隐藏属性和文件访问控制表

linux:文件的隐藏属性和文件访问控制表

 

setfacl -Rm u:linuxprobe:rwx /root

常用的 ls 命令是看不到 ACL 表信息的,但是却可以看到文件的权限最后一个点(.)变
成了加号(+) ,这就意味着该文件已经设置了 ACL 了。

getfacl命令:命令用于显示文件上设置的 ACL 信息,格式为“ getfacl 文件名称”。

 

 

 

 

相关文章: