权限的各种数字代码

到目前为止,我经常遇到chmod指令后面添加权限的命令,比如500700755等等,还有比如+x+w等字母的命令,各种各样,这样的权限我本来是不理解的,但是,一旦你真正在控制文件的权限后才会慢慢懂得这是科学管理很智慧的设定。

我问了我全能的DeepSeek,于是,我就有了更多的答案和知识,接下来就用我所学,尽量讲清楚权限的哪些事。

权限的种类

一般而言权限分为下面几种

权限类型文件操作影响目录操作影响二进制位八进制值
读 (r)查看文件内容列出目录内容1004
写 (w)修改/截断文件创建/删除文件0102
执行 (x)作为程序执行进入目录0011

📌 ​重要规则:目录的w权限必须配合x权限才能生效

从二进制到八进制的变化其实就可以让我们更好的理解之前每个数字的意思,但是其实还需要理解三个数字排列起来是什么用意。

在任一个文件夹里面,输入:

1
ls -l

就会出现:

1
2
3
4
-rwxr-xr--
-rwxrwxrwx
drwxrwxrwx
drwxrwxrwx

这样的字眼代表其中三种权限,如下是第一个权限的详细图示

1
2
3
4
5
6
- rwx  r-x  r--    → 用户权限 | 组权限 | 其他用户权限
│  │   │    │
│  │   │    └─ 其他用户:可读
│  │   └─ 组用户:可读+执行
│  └─ 文件所有者:完全权限
└─ 文件类型(-表示普通文件)

分析步骤

  1. 识别文件类型

    • 首字符表示文件类型:
      • d:目录
      • -:普通文件
    • 示例:.gitignore是普通文件,archetypes是目录。
  2. 解析权限

    • 权限字段​(如rwxrwxrwx)分为三组:
      • 用户(所有者)、组、其他用户的rwx权限。
    • 示例:rwxrwxrwx对应数字权限777,表示所有用户有完全控制权。

权限的一般设置

权限三种类型也代表了三个递进的权限管理,具体如下表

操作需求所需权限示例代码
仅查看文件名r--chmod 444 dir/
创建/删除文件wxchmod 300 dir/
完整目录控制rwxchmod 700 dir/

他们具体和数字的关系如下表

权限组合二进制计算过程符号表示典型场景
00000+0+0---完全禁止访问
41004+0+0r--只读配置文件
51014+0+1r-x可执行脚本通用权限
61104+2+0rw-日志文件标准权限
71114+2+1rwx开发环境临时目录
20100+2+0-w-特殊写入权限(需配合x)
30110+2+1-wx上传目录基础权限

例子

这里尽量把所有高频出现的权限设置讲清楚:

一、符号权限模式详解

1. 基础权限组合表

数字代码符号表示权限说明典型应用场景
0---无任何权限敏感文件临时锁定
400r--------仅所有者可读个人加密文件
500r-x------所有者读+执行私有可执行脚本
600rw-------所有者读写SSH密钥文件(~/.ssh/id_rsa)
644rw-r--r--所有者读写,其他只读Web静态文件(HTML/CSS/JS)
700rwx------所有者完全控制用户家目录(~)
750rwxr-x---所有者完全控制,组可读执行团队共享工具目录
755rwxr-xr-x所有者完全控制,其他读执行公共可执行程序(/usr/bin)
777rwxrwxrwx所有用户完全控制高危!仅用于临时调试

2. 特殊权限组合

数字代码符号表示特殊权限说明应用场景
1777rwxrwxrwt粘滞位+完全权限公共上传目录(/tmp)
2750rwxr-s---SGID+标准权限团队协作目录(文件继承属组)
4755rwsr-xr-xSUID+标准权限特权命令(/usr/bin/passwd)

二、符号权限模式详解

1. 基础操作语法

1
chmod [角色][操作符][权限] 文件
  • 角色标识

    • 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
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# 允许组用户协同编辑(保留原有权限)
chmod g+w,o= shared_doc.txt

# 智能设置执行权限(仅对目录和可执行文件生效)
chmod -R a+X bin/

# 精确权限控制(所有者:rwx,组:rx,其他:无)
chmod u=rwx,g=rx,o= app

# 粘滞位设置(防止用户互删文件)
chmod +t /var/public_uploads/

三、典型场景对照表

1. Web服务器场景

文件类型推荐权限符号表示设置命令
PHP脚本644rw-r--r--chmod 644 index.php
上传目录1770rwxrwx--Tchmod 1770 uploads/
日志文件640rw-r-----chmod 640 access.log
SSL证书400r--------chmod 400 ssl.key

2. 开发环境场景

文件类型推荐权限符号表示设置命令
Python脚本755rwxr-xr-xchmod +x main.py
配置文件600rw-------chmod u=rw,go= config
测试目录775rwxrwxr-xchmod 775 test/
编译产物644rw-r--r--chmod a-w build/*.o

3. 系统管理场景

文件类型推荐权限符号表示设置命令
定时任务脚本750rwxr-x---chmod 750 /etc/cron.d/
系统日志640rw-r-----chmod g+r /var/log/
特权工具4750rwsr-x---chmod u+s,go=rx sudoer
临时文件1777rwxrwxrwtchmod +t /tmp/

四、危险权限警示表

危险权限风险示例安全建议
777攻击者可植入恶意脚本使用755并设置合适所有权
666配置文件可能被任意篡改设置为600并限制组访问
4777SUID程序可能被提权利用审计系统所有SUID/SGID文件
000可能造成服务不可用最低设置为444(只读)

五、最佳实践原则

  1. 目录权限黄金法则

    1
    2
    3
    
    # 常规目录权限设置公式
    chmod 755 /path/to/dir     # 公共可读目录
    chmod 750 /path/to/secure  # 受保护目录
    
  2. 文件权限安全基线

    1
    2
    3
    
    # 配置文件安全模板
    chmod 600 /etc/conf_file   # 私有配置
    chmod 644 /var/readonly    # 公共只读文件
    
  3. 递归权限设置警告

    1
    2
    3
    4
    5
    6
    
    # 危险操作!可能破坏系统权限
    chmod -R 777 /             # 绝对禁止!
    
    # 安全递归设置示例
    find . -type d -exec chmod 755 {} \;  # 仅修改目录
    find . -type f -exec chmod 644 {} \;  # 仅修改文件