2025年07月26日/ 浏览 4
在Linux系统中,每个文件都穿着”rwx”三件套——这是操作系统最基础的安全防护服。作为多用户系统的守护者,权限机制通过三个简单字母的组合,精确控制着”谁能在什么范围操作什么对象”。
当我们执行ls -l
时,看到的-rwxr-xr--
这类神秘代码,实际上是一套精密的权限密码:
– 首字符表示文件类型(-普通文件,d目录,l软链接)
– 后续9个字符分为三组,分别对应所有者、所属组、其他用户的权限
实际案例:目录必须有x权限才能cd进入,有r权限才能ls查看内容,二者缺一不可。这就是为什么新建目录默认权限是755而非644。
组合示例:
– 7(4+2+1):rwx完全权限
– 5(4+0+1):r-x读和执行
– 6(4+2+0):rw-读写但不执行
符号模式(适合精确调整):
bash
chmod u+x file.sh # 给所有者添加执行权限
chmod g-w,o-r file.log # 移除组写权限和其他用户读权限
chmod a=rw config.ini # 所有用户设为读写权限
数字模式(适合批量设置):
bash
chmod 755 startup.sh # 典型可执行文件权限
chmod 600 .ssh/id_rsa # 私钥文件推荐权限
通过umask(权限掩码)决定新建文件的默认权限:
bash
umask 022 # 默认设置,创建文件权限为644
umask 077 # 严格模式,创建文件权限为600
计算方式:目录最大权限777减去umask值,文件最大权限666减去umask值(因为默认不应有执行权限)
bash
chmod 4755 /usr/bin/passwd # 典型SUID应用
bash
chmod 1777 /shared_tmp
当基础权限不够精细时,可以使用ACL:
bash
setfacl -m u:jenkins:rx /build # 给jenkins用户单独授权
getfacl /build # 查看详细ACL权限
bash
chattr +i /etc/passwd # 添加不可修改属性
chmod 700 ~/.ssh # SSH目录严格防护
bash
find / -perm -4000 -type f 2>/dev/null # 查找所有SUID程序
生产环境警示:曾有用户误将/usr/bin目录设为777权限,导致系统被植入恶意程序。正确的权限管理是系统安全的第一道防线。