在Linux系统中,文件权限管理是保障系统安全的核心机制,通过控制不同用户对文件的读、写、执行权限,避免未授权访问或误操作,Linux文件权限主要针对三类用户:文件所有者(User)、所属组(Group)和其他用户(Other),每类用户对应的权限组合为读(r)、写(w)、执行(x),其中读允许查看文件内容,写允许修改或删除文件,执行允许运行文件(如脚本或程序)或进入目录。

权限表示方法
Linux文件权限通过字符或数字表示:
- 字符表示法:
r(读)、w(写)、x(执行),表示无权限,例如-rw-r--r--表示所有者有读写权限,组用户和其他用户仅有读权限。 - 数字表示法:将权限对应为数字,
r=4、w=2、x=1,叠加后得到三位数,例如644中6=4+2(rw-)、4=4(r–)、4=4(r–),与字符表示法一一对应。
修改权限:chmod命令
chmod(change mode)是修改文件权限的核心命令,支持符号模式和数字模式。
符号模式(推荐初学者使用)
格式:chmod [用户类型][操作][权限] 文件名,其中用户类型u(所有者)、g(所属组)、o(其他用户)、a(所有用户);操作(添加权限)、(移除权限)、(设置权限)。
- 示例:
- 给所有者添加执行权限:
chmod u+x script.sh - 移除其他用户的写权限:
chmod o-w document.txt - 设置所有用户仅有读权限:
chmod a=r data.log
- 给所有者添加执行权限:
数字模式(高效简洁)
格式:chmod [数字权限] 文件名,直接通过三位数字设置权限。

- 示例:
- 设置文件所有者可读写执行(7),组用户可读执行(5),其他用户可读执行(5):
chmod 755 dir/ - 设置敏感文件仅所有者可读写(6),其他用户无权限(0):
chmod 600 config.ini
- 设置文件所有者可读写执行(7),组用户可读执行(5),其他用户可读执行(5):
修改所有者和所属组
权限管理需结合文件所有者和所属组,通过chown(change owner)修改所有者,chgrp(change group)修改所属组。
chown命令
- 格式:
chown [所有者]:[所属组] 文件名,仅修改所有者可省略[所属组]。 - 示例:
- 将文件
file.txt的所有者改为user1:chown user1 file.txt - 同时修改所有者为
user1、所属组为group1:chown user1:group1 file.txt - 递归修改目录及其下所有文件的所有者(需
-R参数):chown -R user1 /path/to/dir
- 将文件
chgrp命令
- 格式:
chgrp [所属组] 文件名 - 示例:将
file.txt的所属组改为group1:chgrp group1 file.txt
默认权限与umask
新建文件或目录的权限受umask(用户文件创建掩码)影响,umask值从默认权限中减去对应权限。
- 文件默认权限:
666(rw-rw-rw-),目录默认权限:777(rwxrwxrwx)。 - 计算:实际权限 = 默认权限 – umask值,例如
umask=022时,文件权限为666-022=644(rw-r–r–),目录权限为777-022=755(rwxr-xr-x)。 - 修改umask:临时修改
umask 0022,永久修改需编辑~/.bashrc或/etc/profile,添加umask 0022后执行source ~/.bashrc生效。
递归设置权限
对目录及其子目录/文件统一设置权限时,需使用chmod -R(递归),但需注意目录必须拥有执行权限(x),否则无法进入。
- 示例:
chmod -R 755 /path/to/dir/,递归设置目录及其下所有文件/目录的权限为755(目录)或644(文件,需单独处理,避免文件被赋予执行权限)。
常见权限场景对照表
| 权限数字 | 字符表示 | 适用场景 |
|---|---|---|
| 644 | -rw-r–r– | 普通文件(如配置文件、日志) |
| 755 | drwxr-xr-x | 共享目录(如网站目录) |
| 600 | -rw——- | 敏感文件(如私钥、密码文件) |
| 700 | drwx—— | 用户私有目录 |
| 777 | -rwxrwxrwx | 不推荐使用(安全风险高) |
相关问答FAQs
Q1:如何查看文件的详细权限信息?
A:使用ls -l命令查看,例如ls -l file.txt,输出结果中第2-10位即为权限信息(如-rw-r--r--),其中第1位为文件类型(表示普通文件,d表示目录)。

Q2:为什么设置了文件可执行权限后,普通用户仍无法执行?
A:可能原因有三:① 文件所有者不是当前用户,且用户组或其他用户无执行权限;② 系统安全模块(如SELinux)限制执行;③ 文件路径权限不足(如父目录无执行权限,导致无法访问文件),可通过ls -l检查权限,或临时关闭SELinux(setenforce 0)测试。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/27162.html