Linux 权限是个老生常谈的话题,但真正搞清楚的人并不多。很多人只会 chmod 777 了事,生产环境出了安全问题才后悔。

基本权限模型

每个文件和目录都有三组权限:owner(所有者)、group(所属组)、others(其他人)。每组包含 read、write、execute 三个位。

$ ls -l /etc/passwd
-rw-r--r-- 1 root root 2847 Jan 10 08:00 /etc/passwd

第一个字段 -rw-r--r-- 就是权限位,依次是:文件类型、owner 权限、group 权限、others 权限。

chmod 数字表示法

r=4, w=2, x=1,三位相加即为该组的权限值。常见组合:

SUID / SGID / Sticky Bit

这三个特殊位经常被忽略:

ACL:更细粒度的控制

基本权限模型只有三组,有时候不够用。ACL 可以给特定用户或组单独设置权限:

# 给 deploy 用户添加读权限
$ setfacl -m u:deploy:r /var/log/app.log

# 查看 ACL
$ getfacl /var/log/app.log
← 返回