权限的各种数字代码
到目前为止,我经常遇到chmod指令后面添加权限的命令,比如500、700、755等等,还有比如+x、+w等字母的命令,各种各样,这样的权限我本来是不理解的,但是,一旦你真正在控制文件的权限后才会慢慢懂得这是科学管理很智慧的设定。
我问了我全能的DeepSeek,于是,我就有了更多的答案和知识,接下来就用我所学,尽量讲清楚权限的哪些事。
权限的种类
一般而言权限分为下面几种
| 权限类型 | 文件操作影响 | 目录操作影响 | 二进制位 | 八进制值 |
|---|---|---|---|---|
| 读 (r) | 查看文件内容 | 列出目录内容 | 100 | 4 |
| 写 (w) | 修改/截断文件 | 创建/删除文件 | 010 | 2 |
| 执行 (x) | 作为程序执行 | 进入目录 | 001 | 1 |
📌 重要规则:目录的
w权限必须配合x权限才能生效
从二进制到八进制的变化其实就可以让我们更好的理解之前每个数字的意思,但是其实还需要理解三个数字排列起来是什么用意。
在任一个文件夹里面,输入:
| |
就会出现:
这样的字眼代表其中三种权限,如下是第一个权限的详细图示
分析步骤
识别文件类型:
- 首字符表示文件类型:
d:目录-:普通文件
- 示例:
.gitignore是普通文件,archetypes是目录。
- 首字符表示文件类型:
解析权限:
- 权限字段(如
rwxrwxrwx)分为三组:- 用户(所有者)、组、其他用户的
rwx权限。
- 用户(所有者)、组、其他用户的
- 示例:
rwxrwxrwx对应数字权限777,表示所有用户有完全控制权。
- 权限字段(如
权限的一般设置
权限三种类型也代表了三个递进的权限管理,具体如下表
| 操作需求 | 所需权限 | 示例代码 |
|---|---|---|
| 仅查看文件名 | r-- | chmod 444 dir/ |
| 创建/删除文件 | wx | chmod 300 dir/ |
| 完整目录控制 | rwx | chmod 700 dir/ |
他们具体和数字的关系如下表
| 权限组合 | 二进制 | 计算过程 | 符号表示 | 典型场景 |
|---|---|---|---|---|
| 0 | 000 | 0+0+0 | --- | 完全禁止访问 |
| 4 | 100 | 4+0+0 | r-- | 只读配置文件 |
| 5 | 101 | 4+0+1 | r-x | 可执行脚本通用权限 |
| 6 | 110 | 4+2+0 | rw- | 日志文件标准权限 |
| 7 | 111 | 4+2+1 | rwx | 开发环境临时目录 |
| 2 | 010 | 0+2+0 | -w- | 特殊写入权限(需配合x) |
| 3 | 011 | 0+2+1 | -wx | 上传目录基础权限 |
例子
这里尽量把所有高频出现的权限设置讲清楚:
一、符号权限模式详解
1. 基础权限组合表
| 数字代码 | 符号表示 | 权限说明 | 典型应用场景 |
|---|---|---|---|
| 0 | --- | 无任何权限 | 敏感文件临时锁定 |
| 400 | r-------- | 仅所有者可读 | 个人加密文件 |
| 500 | r-x------ | 所有者读+执行 | 私有可执行脚本 |
| 600 | rw------- | 所有者读写 | SSH密钥文件(~/.ssh/id_rsa) |
| 644 | rw-r--r-- | 所有者读写,其他只读 | Web静态文件(HTML/CSS/JS) |
| 700 | rwx------ | 所有者完全控制 | 用户家目录(~) |
| 750 | rwxr-x--- | 所有者完全控制,组可读执行 | 团队共享工具目录 |
| 755 | rwxr-xr-x | 所有者完全控制,其他读执行 | 公共可执行程序(/usr/bin) |
| 777 | rwxrwxrwx | 所有用户完全控制 | 高危!仅用于临时调试 |
2. 特殊权限组合
| 数字代码 | 符号表示 | 特殊权限说明 | 应用场景 |
|---|---|---|---|
| 1777 | rwxrwxrwt | 粘滞位+完全权限 | 公共上传目录(/tmp) |
| 2750 | rwxr-s--- | SGID+标准权限 | 团队协作目录(文件继承属组) |
| 4755 | rwsr-xr-x | SUID+标准权限 | 特权命令(/usr/bin/passwd) |
二、符号权限模式详解
1. 基础操作语法
| |
角色标识:
u:文件所有者(user)g:同组用户(group)o:其他用户(other)a:所有用户(all,默认)
操作符:
+添加权限-移除权限=精确设置权限
权限标识:
r:读w:写x:执行X:智能执行(仅对目录/已有x权限的文件生效)
2. 常用操作示例
| 命令示例 | 权限变化说明 | 应用场景 |
|---|---|---|
chmod +x script.sh | 所有用户添加执行权限 | 使脚本可执行 |
chmod u=rw,go= file | 所有者读写,其他无权限 | 私有配置文件 |
chmod go-w .bashrc | 移除组和其他用户的写权限 | 防止用户配置文件被篡改 |
chmod a=rwx shared/ | 设置目录为完全开放权限 | 高危!仅用于临时共享目录 |
chmod -R o-rwx data/ | 递归移除其他用户所有权限 | 保护敏感数据目录 |
chmod g+s project/ | 启用SGID权限 | 团队项目目录文件继承组权限 |
3. 高级组合用法
三、典型场景对照表
1. Web服务器场景
| 文件类型 | 推荐权限 | 符号表示 | 设置命令 |
|---|---|---|---|
| PHP脚本 | 644 | rw-r--r-- | chmod 644 index.php |
| 上传目录 | 1770 | rwxrwx--T | chmod 1770 uploads/ |
| 日志文件 | 640 | rw-r----- | chmod 640 access.log |
| SSL证书 | 400 | r-------- | chmod 400 ssl.key |
2. 开发环境场景
| 文件类型 | 推荐权限 | 符号表示 | 设置命令 |
|---|---|---|---|
| Python脚本 | 755 | rwxr-xr-x | chmod +x main.py |
| 配置文件 | 600 | rw------- | chmod u=rw,go= config |
| 测试目录 | 775 | rwxrwxr-x | chmod 775 test/ |
| 编译产物 | 644 | rw-r--r-- | chmod a-w build/*.o |
3. 系统管理场景
| 文件类型 | 推荐权限 | 符号表示 | 设置命令 |
|---|---|---|---|
| 定时任务脚本 | 750 | rwxr-x--- | chmod 750 /etc/cron.d/ |
| 系统日志 | 640 | rw-r----- | chmod g+r /var/log/ |
| 特权工具 | 4750 | rwsr-x--- | chmod u+s,go=rx sudoer |
| 临时文件 | 1777 | rwxrwxrwt | chmod +t /tmp/ |
四、危险权限警示表
| 危险权限 | 风险示例 | 安全建议 |
|---|---|---|
| 777 | 攻击者可植入恶意脚本 | 使用755并设置合适所有权 |
| 666 | 配置文件可能被任意篡改 | 设置为600并限制组访问 |
| 4777 | SUID程序可能被提权利用 | 审计系统所有SUID/SGID文件 |
| 000 | 可能造成服务不可用 | 最低设置为444(只读) |
五、最佳实践原则
目录权限黄金法则
文件权限安全基线
递归权限设置警告