在Linux系统中,通过`chmod`命令可以设置文件和目录的可读(r)与可执行(x)权限。以下是具体方法和相关扩展知识:
1. 权限基础
符号表示法:
- `r`(读):允许查看文件内容或列出目录内容。
- `x`(执行):允许执行文件(如脚本或二进制程序)或进入目录(对目录而言)。
- 权限分为三类用户:所有者(`u`)、所属组(`g`)、其他用户(`o`),以及所有用户(`a`)。
2. 设置权限的方法
符号模式(直观)
bash
为所有者添加可读和可执行权限
chmod u+rx 文件名
为所有用户(所有者、组、其他)设置可读和可执行权限
chmod a+rx 文件名
移除其他用户的执行权限,保留读权限
chmod o-x 文件名
数字模式(八进制)
权限用三位八进制数表示,分别对应所有者、组、其他用户:
- `4`:读(r)
- `1`:执行(x)
- 组合示例:
bash
# 设置所有者为读写执行(7=4+2+1),组和其他为读执行(5=4+1)
chmod 755 文件名
# 设置所有用户均为读执行(5=4+1)
chmod 555 文件名
3. 目录与文件的权限差异
目录的`x`权限:允许用户`cd`进入目录或访问目录内文件的元数据(如`ls -l`)。即使无`r`权限,若`x`存在且知道文件名,仍可访问文件内容。
文件的`x`权限:仅对脚本(如`.sh`)或二进制程序有效,文本文件无此权限不影响读取。
4. 特殊场景与注意事项
递归设置权限:使用`-R`选项对目录及其内容批量操作:
bash
chmod -R a+rx 目录名
默认权限:通过`umask`控制新文件/目录的初始权限(如`umask 022`表示默认权限为`755`目录和`644`文件)。
安全建议:
- 脚本文件需同时具备`r`和`x`才能运行。
- 目录通常需要`rx`组合,否则用户无法查看或进入。
- 慎用`chmod 777`,可能导致安全风险。
5. 权限查看与调试
使用`ls -l`查看当前权限,输出中`-rwxr-xr--`表示所有者有`rwx`,组有`rx`,其他仅有`r`。
调试时可通过`test -r 文件名`或`[ -x 文件名 ]`检查当前用户是否有对应权限。
6. 扩展知识
SUID/SGID:通过`chmod u+s`或`g+s`设置特殊权限,使文件运行时继承所有者或组的权限(如`/usr/bin/passwd`)。
粘滞位(Sticky Bit):对目录设置`chmod +t`后,仅文件所有者可删除其中的文件(如`/tmp`目录)。
合理分配权限需结合业务需求与最小权限原则,避免过度开放或冲突设置。
查看详情
查看详情