进阶实战:权限体系实战

Linux 是一个多用户系统,权限(Permissions)是保护数据不被误删、系统不被攻击的第一道防线。如果你只会 chmod 777,那么你正在将系统置于巨大的风险之中。


1. 拆解 rwx 权限位

当你运行 ls -l 时,你会看到类似 -rwxr-xr-- 的字符串。

字符位置含义数字表示
rRead可读取文件内容 / 列出目录清单4
wWrite可修改文件 / 在目录内增删文件2
xExecute可执行脚本/程序 / 可进入目录1
ℹ️ 三组权限
  • 第一组 (rwx): 所有者 (Owner) 的权限。
  • 第二组 (r-x): 所属组 (Group) 的权限。
  • 第三组 (r--): 其他人 (Others) 的权限。

2. 特殊权限位:SUID, SGID 与 Sticky Bit

除了基础的 rwx,Linux 还有三个高阶权限:

2.1 SUID (Set User ID)

  • 表现: 所有者权限位显示为 s(如 -rwsr-xr-x)。
  • 作用: 让普通用户在执行该程序时,临时获得该程序所有者的权限。
  • 例子: passwd 命令。为了修改 /etc/shadow,普通用户必须临时“变身”为 root。

2.2 Sticky Bit (粘滞位)

  • 表现: 其他人权限位显示为 t(如 drwxrwxrwt)。
  • 作用: 确保一个目录下,用户只能删除自己创建的文件。
  • 例子: /tmp 目录。

3. 最小权限原则 (POLP)

在生产环境下,你应该遵循:只赋予完成任务所需的最小权限。

Web 目录不要设为 777。应该将所有者设为 www-datanginx 用户,并给目录 755,文件 644

日志文件应该只有 root 或特定审计组可读,权限应设为 600640


4. 实战:ACL (访问控制列表)

传统的 ugo 权限只能针对一个用户和一个组。如果你想让文件对 A 用户读,B 用户写,C 用户无权限,就需要 ACL

# 赋予 susu 用户对 file.txt 的读取权限
setfacl -m u:susu:r file.txt
 
# 查看 ACL 权限
getfacl file.txt

5. 结业练习

Navigation