SUID和ACL文件权限有什么区别?另外,我应该什么时候使用?
答案1
尽管两者都松散地涉及文件权限,但它们彼此没有太多关系。
SUID(设置用户ID)是可以在可执行文件上设置的权限,以便该文件以文件所有者的权限运行,而不是以调用命令的用户的权限运行。这是通过命令完成的chmod u+s myfile
。
ACL(访问控制列表)rwx
与Linux 系统中默认使用的自主访问控制(对用户、组和其他的权限)相比,这是一种为文件提供更细粒度权限的方法。它们是使用setfacl
命令设置的。
您很少自行在文件上设置 SUID,因为这可能会导致安全漏洞。 (想想具有 SUID root 的 shell...)另一方面,ACL 则经常使用。
答案2
文件权限位从一开始就存在。看man -a chmod
。
文件权限位将总体划分为所有者、组、世界(相同 UID、相同 GID、其他所有人)。例如,“相同”比较将访问文件的进程的 UID 与文件的 UID 进行比较。
这不足以满足现代要求,其他操作系统提出了更好的想法(访问控制列表),计算机变得更快*,并且 ACL 被添加到 Linux 中,补充而不是取代文件权限位。man setfacl
将解释 ACL 的工作原理。
* 文件权限位位于 中inode
,在处理文件时很容易获得。访问控制列表需要以下列表、运行代码……它对旧的、低时钟速度的计算机产生了影响,而这正是 Unix/Linux 的诞生地。
“如果它有效,就不要修复它”。