在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