linux--文件权限控制
1. 权限格式详解
权限字符串格式:-rwxr-xr-- 1 root staff 1024 Jan 1 10:00 file.txt
(共10位,首字符表示文件类型,后9位分3组权限)
① 首字符:文件类型
| 字符 | 含义 | 示例 |
|---|---|---|
- |
普通文件 | -rwxr--r-- |
d |
目录 | drwxr-xr-x |
l |
符号链接(软链接) | lrwxrwxrwx |
c |
字符设备文件 | /dev/tty |
b |
块设备文件 | /dev/sda |
s |
Socket 文件 | 较少见 |
p |
管道文件(FIFO) | 进程间通信 |
② 后9位:权限分组
每3位一组,分别对应:
用户(Owner) | 组(Group) | 其他(Others)rwx | r-x | r--
- 权限字符含义:
r(Read):读权限(数值 4)w(Write):写权限(数值 2)x(eXecute):执行权限(数值 1)-:无对应权限
2. 权限数值计算
每组权限的数值是 r、w、x 对应值的和:
| 权限组合 | 数值计算 | 示例 |
|---|---|---|
rwx |
4+2+1=7 | 用户权限 7 |
r-x |
4+0+1=5 | 组权限 5 |
r-- |
4+0+0=4 | 其他权限 4 |
--- |
0+0+0=0 | 无权限 |
完整权限示例:-rwxr-xr-- = 用户(7) + 组(5) + 其他(4) = 754
3. 修改权限的常用命令
(1) chmod:修改文件权限
-
符号模式(推荐新手):
bashchmod u+x file.txt # 给用户添加执行权限 chmod g-w file.txt # 移除组的写权限 chmod o=r file.txt # 设置其他用户仅可读 chmod a+r file.txt # 给所有用户添加读权限(a=all) -
数字模式(高效):
bashchmod 755 file.txt # 设置权限为 -rwxr-xr-x chmod 644 script.sh # 设置权限为 -rw-r--r--(脚本通常需要执行权限)
(2) chown:修改文件所有者/组
bash
| chown user:group file.txt # 修改所有者和组 |
| chown user file.txt # 仅修改所有者 |
| chown :group file.txt # 仅修改组 |
(3) chgrp:修改文件组(较少用)
bash
| chgrp developers file.txt # 将组改为 developers |
4. 权限的实际作用
(1) 对普通文件的影响
r:允许查看文件内容(如cat、less)。w:允许修改文件内容(如echo重定向、vim编辑)。x:允许将文件作为程序执行(如./script.sh)。
(2) 对目录的影响
目录的权限行为与文件不同:
r:允许列出目录内容(如ls)。w:允许在目录中创建/删除/重命名文件(需同时有目标文件的写权限)。x:允许进入目录(如cd)或访问目录内文件的元信息(如stat)。
示例:
若目录权限为 drwxr-xr--(754):
- 用户(Owner):可读、写、进入目录。
- 组(Group):可读、进入目录,但不能创建/删除文件(缺少
w)。 - 其他用户:仅可读目录名(无法进入或查看内容)。
5. 特殊权限位(进阶)
在标准权限之外,还有3个特殊权限位(位于用户权限前):
| 权限位 | 字符 | 数值 | 作用 |
|---|---|---|---|
| SUID | s |
4 | 文件执行时以所有者身份运行 |
| SGID | s |
2 | 目录中新建文件继承组身份 |
| Sticky | t |
1 | 目录中仅文件所有者可删除文件 |
示例:-rwsr-xr-t = SUID(4) + 用户权限(7) + 组权限(5) + Sticky(1)
6. 权限最佳实践
- 最小权限原则:仅授予必要的权限(如脚本通常设为
755或750)。 - 避免
777:对世界可写(o+w)的文件可能导致安全风险。 - 目录需执行权限:进入目录必须要有
x权限。 - 脚本添加执行权限:
bash
chmod +x script.sh # 自动给用户添加 x 权限
7. 权限查看命令
bash
| ls -l file.txt # 查看单个文件权限 |
| ls -ld /dir # 查看目录本身权限(而非内容) |
| stat file.txt # 显示详细权限信息(包括特殊权限) |
| namei -l /path # 检查路径中每一级的权限(排查权限问题) |
总结表
| 概念 | 示例 | 说明 |
|---|---|---|
| 标准权限 | -rwxr-xr-- (754) |
用户/组/其他权限组合 |
| 特殊权限 | -rwsr-sr-t |
SUID/SGID/Sticky |
| 修改命令 | chmod 755 file.txt |
常用权限设置方式 |
| 权限作用 | 目录需 x 才能进入 |
文件与目录权限行为不同 |
浙公网安备 33010602011771号