Linux 上是否有类似 Windows 的更高级的 Linux 权限控制功能?SeLinux 就是为此而生的吗?
答案1
几乎所有类 Unix 系统都支持 ACL;在 Linux 上,POSIX ACL格式。FreeBSD 支持 POSIX 和 NFSv4 样式的 ACL(定期尝试添加NFSv4 ACLLinux 上也可用)。
POSIX ACL 格式主要只是一种扩展,允许为多个用户指定读/写/执行权限:
$ setfacl -m u::rw,u:httpd:r,g::- ssl.key
$ getfacl ssl.key
# owner: root
# group: root
user::rw-
user:openldap:r--
user:httpd:r--
user:postfix:r--
group::---
mask::r--
other::---
继承是使用“默认 ACL”完成的:
$ getfacl /var/log/journal/
# owner: root
# group: systemd-journal
# flags: -s-
user::rwx
group::r-x
other::r-x
default:user::rwx
default:group::r-x
default:group:adm:r-x
default:group:wheel:r-x
default:mask::r-x
default:other::r-x
$ touch /var/log/journal/test
$ getfacl /var/log/journal/test
# owner: root
# group: systemd-journal
user::rw-
group::r-x #effective:r--
group:adm:r-x #effective:r--
group:wheel:r-x #effective:r--
mask::r--
other::r--
另一方面,NFSv4 ACL 格式与 Windows 和 NTFS 非常相似 - 主体名称略有不同(使用 NFSv4 样式的 user@domain 而不是 Windows SID 或 DOMAIN\name),但权限标志几乎相同。
ACL 和基本 Unix 权限都是“自主访问控制”工具——它们通常由对象的所有者设置;如果你创建了一个文件,你可以让任何人都可以读取它。而 SELinux 是强制的访问控制– 所有 SELinux 规则均由系统管理员编写,用户无法更改,即使是他们创建的文件也是如此。其他此类系统包括 AppArmor、SMACK;Windows Vista 有一个非常基本的方案,称为强制完整性控制。