文章目录
- 引言
- [一、Linux 权限管理概述](#一、Linux 权限管理概述)
- 二、文件权限值的表示方法
- 三、文件访问权限的设置(chmod)
- 四、file指令:快速识别文件类型
- 五、目录的权限
- 六、普通文件的权限
- 七、权限总结
- 八、粘滞位
引言
在 Linux 系统中,权限管理是确保多用户环境下文件和目录安全的核心机制。无论是普通用户还是系统管理员,理解权限概念都至关重要。本文将带你从零开始,逐步掌握 Linux 权限的核心知识,包括权限表示、设置方法、目录权限等,帮助你快速上手。
一、Linux 权限管理概述
-
权限的作用
Linux 通过权限控制不同用户对文件和目录的访问权限(读、写、执行),确保:
- 所有者:文件 / 目录的创建者,拥有最高控制权。
- 组用户:同一用户组内的成员,权限由组设置决定。
- 其他用户:不属于上述两类的用户,权限通常更严格。
例如,/etc/shadow
文件仅 root
用户可读写,普通用户无法访问,保障系统安全。
二、文件权限值的表示方法
- 字母与数字对应
权限 | 字母 | 数字 | 含义 |
---|---|---|---|
读 | r | 4 | 查看内容(文件)/ 列出目录(目录) |
写 | w | 2 | 修改内容(文件)/ 创建删除文件(目录) |
执行 | x | 1 | 运行程序(文件)/ 进入目录(目录,如cd) |
- 权限字符串结构
使用 ls -l
查看文件权限,例如:
bash
drwxrwxr-x 4 zkp zkp 4096 Jun 2 22:05 a
- 第一位 - 表示文件类型(
d
为目录,l
为链接)。 - 接下来三组(rwx, rwx, r-x)分别对应 所有者 、组 、其他用户 的权限。
- 数字计算示例
- 755 表示:所有者
rwx
(7=4+2+1),组和其他r-x
(5=4+1)。 - 644 表示:所有者
rw-
(6=4+2),组和其他r--
(4)。
- 755 表示:所有者
三、文件访问权限的设置(chmod)
- 数字方式
bash
chmod 755 file.txt # 所有者rwx,组和其他rx
chmod 600 file.txt # 所有者rw-,组和其他无权限
- 符号方式
- u(用户)、g(组)、o(其他)、a(所有):
bash
chmod u+x file.txt # 给所有者添加执行权限
chmod g-w file.txt # 移除组的写权限
chmod o+rwx file.txt # 给其他用户添加全部权限(谨慎使用!)
- 实战举例
bash
# 创建文件,默认权限644(umask影响,可忽略)
touch test.txt
ls -l test.txt # -rw-r--r--
# 给所有用户添加执行权限(文件需可执行时用,如脚本)
chmod a+x test.txt # -rwxr-xr-x
四、file指令:快速识别文件类型
bash
file test.txt # 输出:test.txt: ASCII text(文本文件)
file /bin/ls # 输出:/bin/ls: ELF 64-bit executable(二进制可执行文件)
file /etc # 输出:/etc: directory(目录)
通过file指令,可快速判断文件是否为脚本、二进制程序或目录,辅助权限设置(如脚本需x权限)。
五、目录的权限
-
目录权限的特殊规则
- 读(r):ls 可列出目录内容,但无法 cd 进入(需x)。
- 写(w):可在目录内创建、删除文件(即使文件属主不是你,只要目录有w权限)。
- 执行(x):允许 cd 进入目录,是访问目录内容的前提(无x则ls也会报错)。
-
示例:公共目录权限
bash
mkdir public_dir
chmod 777 public_dir # 所有用户可读写执行(危险!测试用)
cd public_dir # 成功(x权限)
touch file1 # 成功(w权限)
ls # 成功(r权限)
实际中,公共目录(如/tmp)会设置粘滞位(见下文),避免误删他人文件。
六、普通文件的权限
-
普通文件权限的作用
普通文件(如文本文件、脚本、二进制程序等)的权限直接控制对文件内容的访问:
- 读(r):查看文件内容(如
cat file.txt
)。 - 写(w):修改文件内容(如
echo "new line" >> file.txt
)。 - 执行(x):运行文件(如脚本
./script.sh
或二进制程序./a.out
)。
- 读(r):查看文件内容(如
-
权限设置示例
(1)文本文件权限(644)
bash
touch notes.txt
chmod 644 notes.txt # 或 chmod u=rw,g=r,o=r notes.txt
ls -l notes.txt # -rw-r--r-- (所有者rw,组和其他r)
(2)可执行脚本权限(755)
bash
echo "#!/bin/bash\necho Hello" > script.sh
chmod 755 script.sh # 所有者rwx(可修改、运行),组和其他rx(可运行,不可修改)
./script.sh # 执行成功(需x权限)
(3)敏感文件权限(600)
bash
echo "secret: 12345" > secret.conf
chmod 600 secret.conf # 仅所有者可读写(如 `vim secret.conf` 可修改,`cat secret.conf` 可查看)
- 权限与文件类型的关联
- 文本文件:通常不需要 x 权限(除非是脚本,需手动添加 x)。
- 二进制程序:编译后默认可能有 x 权限(如 gcc 生成的可执行文件)。
- 脚本文件:需手动添加 x 权限(如
chmod +x script.sh
),否则无法直接运行(提示 "Permission denied")。
七、权限总结
- 普通文件权限重点:
- 644:最常见的文本文件权限(所有者 rw,组和其他 r)。
- 755:可执行文件(如脚本、程序)的典型权限。
- 避免给普通文件设置w权限(尤其是系统文件),防止意外修改。
八、粘滞位
粘滞位仅对目录有效,但影响目录内普通文件的删除规则:
- 无粘滞位时 ,目录有w权限的用户可删除任何文件(即使文件属主不同)。
- 有粘滞位时(如/tmp) ,用户只能删除自己的文件,保护他人数据。