Linux 权限基础
Linux 权限系统基于三个核心概念:用户(User)
、组(Group)
和其他(Other)
。每个文件或目录的权限由三组字符表示,分别对应这三类实体的读(r)、写(w)、执行(x)权限:
-rw-r--r-- 1 user group 1024 Sep 1 10:00 file.txt
- 第一组
rw-
:所有者权限(可读可写) - 第二组
r--
:组权限(仅可读) - 第三组
r--
:其他用户权限(仅可读)
权限类型说明
读权限(r)
- 文件:允许查看文件内容
- 目录:允许列出目录下的文件(如
ls
命令)
写权限(w)
- 文件:允许修改文件内容
- 目录:允许创建/删除目录内文件(需同时具备执行权限)
执行权限(x)
- 文件:允许作为程序执行(如脚本或二进制文件)
- 目录:允许进入目录(如
cd
命令)
权限修改方法
数字模式(Octal) 通过三位八进制数设置权限,每位数字对应 用户|组|其他
的权限总和:
- 4 = 读(r)
- 2 = 写(w)
- 1 = 执行(x)
示例:
chmod 755 file.txt # 用户:rwx,组:r-x,其他:r-x
符号模式 使用 u/g/o/a
和 +/-/=
修改权限:
chmod u+x script.sh # 给用户添加执行权限
chmod go-w file.txt # 移除组和其他用户的写权限
特殊权限
SUID(Set User ID)
-
以文件所有者身份执行(如
/usr/bin/passwd
) -
设置方法:
chmod u+s file # 符号模式 chmod 4755 file # 数字模式(4开头)
SGID(Set Group ID)
-
对目录:新建文件继承目录的组
-
设置方法:
chmod g+s dir # 符号模式 chmod 2775 dir # 数字模式(2开头)
Sticky Bit
-
仅目录有效,限制用户只能删除自己的文件(如
/tmp
) -
设置方法:
chmod +t dir # 符号模式 chmod 1777 dir # 数字模式(1开头)
权限查看与验证
查看详细权限
ls -l file # 查看文件权限
ls -ld dir # 查看目录权限(不显示内容)
stat file # 显示权限数字格式
验证权限
test -r file && echo "可读" # 检查读权限
test -w file && echo "可写" # 检查写权限
test -x file && echo "可执行" # 检查执行权限
默认权限控制
umask 设置 定义新建文件的默认权限掩码(反码):
umask 022 # 默认权限:文件644(rw-r--r--),目录755
umask -S # 显示符号格式的当前umask
ACL 高级权限控制
设置访问控制列表
setfacl -m u:username:rwx file # 为用户添加权限
setfacl -m g:groupname:r-x dir # 为组添加权限
getfacl file # 查看ACL权限