当前位置:首页>Linux>Linux 权限 755、644 到底什么意思?chmod 和 chown 用法详解

Linux 权限 755、644 到底什么意思?chmod 和 chown 用法详解

  • 2026-09-09 08:10:30
Linux 权限 755、644 到底什么意思?chmod 和 chown 用法详解

Linux 权限 755、644 到底什么意思?chmod 和 chown 用法详解

chmod 755、chown root:root,这些命令天天用,但权限背后的原理你真的清楚吗?本文从二进制位到实战场景,彻底讲透 Linux 权限系统。

一、问题场景

# 部署应用后,页面报 403 Forbidden$ ls -l /var/www/html/index.html-rw------- 1 root root 1234 Jun 15 10:00 index.html# 或者$ ls -ld /data/appdrwxr-xr-x 3 root root 4096 Jun 15 10:00 /data/app

权限配错,服务起不来、文件读不了、脚本执行不了。理解权限位是运维的基本功。


二、权限位拆解:rwx 到底是什么

1. 10 位权限字符串

-rwxr-xr-x  1 root root 1234 Jun 15 10:00 script.sh│└┬┘└┬┘└┬┘│ │  │  ││ │  │  └── 其他用户权限 (o)│ │  └───── 所属组权限 (g)│ └──────── 文件所有者权限 (u)└────────── 文件类型 (- 普通文件, d 目录, l 链接)

2. rwx 的含义

权限
文件
目录
r (4)
读取内容
列出目录内容 (ls)
w (2)
修改内容
创建/删除/重命名目录内文件
x (1)
执行文件
进入目录 (cd)

3. 数字权限计算

数字
二进制
权限
7
111
rwx
6
110
rw-
5
101
r-x
4
100
r--
3
011
-wx
2
010
-w-
1
001
--x
0
000
---

常见组合:

权限值
含义
典型场景
777
rwxrwxrwx
开放权限(危险!)
755
rwxr-xr-x
可执行文件、目录
644
rw-r--r--
普通文件(如配置文件)
700
rwx------
私钥、密码文件
750
rwxr-x---
组内共享,外人不可见
660
rw-rw----
协作编辑的文件

三、chmod 命令详解

1. 数字模式

# 设置文件权限chmod 755 script.sh        # 所有者读写执行,其他人读执行chmod 644 config.ini       # 所有者读写,其他人只读chmod 600 id_rsa           # 私钥文件,仅所有者可读# 递归设置目录chmod -R 755 /data/app     # -R 递归,注意:会改所有子文件!

2. 符号模式(更精细)

chmod u+x script.sh        # 给所有者添加执行权限chmod g-w file.txt         # 去掉组的写权限chmod o=r file.txt         # 设置其他人只有读权限chmod a+x script.sh        # 给所有人添加执行权限(u+g+o)# 组合用法chmod u=rwx,g=rx,o=rx dir  # 等同于 chmod 755 dir

3. 特殊权限位

权限
数字
作用
SUID
4000
执行时以文件所有者身份运行
SGID
2000
执行时以文件所属组身份运行;目录下新建文件继承组
Sticky
1000
目录下只有文件所有者能删除自己的文件
# 设置 SUID(如 passwd 命令)chmod u+s /usr/bin/somebin    # 或 chmod 4755# 设置 SGID(共享目录常用)chmod g+s /data/shared        # 或 chmod 2755# 设置 Sticky(如 /tmp 目录)chmod +t /data/tmp            # 或 chmod 1777# 查看ls -l /usr/bin/passwd-rwsr-xr-x 1 root root 68208 Mar 23  2022 /usr/bin/passwd     ↑ s 表示 SUID

四、chown 命令详解

1. 基本用法

# 修改所有者chown alice file.txt# 修改所有者和所属组chown alice:developers file.txt# 只修改所属组chown :developers file.txt# 或chgrp developers file.txt# 递归修改chown -R alice:alice /data/app

2. 常用选项

选项
作用
-R
递归修改目录及子内容
--reference=RFILE
参考其他文件的权限设置
--from=CURRENT
只修改当前所有者为指定值
# 参考其他文件权限chown --reference=/etc/passwd /data/newfile# 只把 root 拥有的文件改为 alicechown --from=root alice /data/*

五、实战场景

场景1:Web 服务目录权限

# Nginx/Apache 运行用户通常是 www-data 或 nginx# 网站根目录需要:# - 所有者:部署用户(可读写)# - 组:web服务用户(可读)# - 其他人:只读# 创建目录结构mkdir -p /var/www/myappchown -R deploy:www-data /var/www/myappchmod -R 755 /var/www/myapp        # 目录chmod -R 644 /var/www/myapp/*.html # 静态文件# 上传目录需要 web 用户可写chmod 775 /var/www/myapp/uploads

场景2:SSH 私钥权限

# 私钥权限必须严格,否则 SSH 拒绝使用chmod 600 ~/.ssh/id_rsachmod 644 ~/.ssh/id_rsa.pubchmod 600 ~/.ssh/authorized_keyschmod 700 ~/.ssh

场景3:日志目录权限

# 应用日志目录:应用用户可写,其他用户只读mkdir /var/log/myappchown appuser:appuser /var/log/myappchmod 755 /var/log/myapp# 日志文件:应用用户可写,其他人可读chmod 644 /var/log/myapp/*.log  

场景4:共享协作目录(SGID 应用)

# 团队共享目录,新建文件自动继承组mkdir /data/teamchown root:developers /data/teamchmod 2775 /data/team    # 2 = SGID,775 = rwxrwxr-x# 效果:alice 在目录下新建的文件,组自动是 developers# 而不是 alice 的主组

六、umask:默认权限的幕后黑手

1. umask 是什么

新建文件/目录的默认权限 = 最大权限 - umask

类型
最大权限
umask 022
实际权限
文件
666
666 - 022 = 644
-rw-r--r--
目录
777
777 - 022 = 755
drwxr-xr-x

2. 查看和设置

# 查看当前 umaskumask0022    # 第一位是特殊权限,后三位是 ugo# 临时设置(当前会话)umask 027    # 新建文件 640,目录 750# 永久设置(写入配置文件)echo "umask 027" >> ~/.bashrc

3. 常见 umask 值

umask
文件默认
目录默认
场景
022
644
755
通用,较开放
027
640
750
较严格,组外不可见
077
600
700
最严格,仅自己可见

七、ACL:超越传统权限的精细控制

当传统 ugo 权限不够用时,用 ACL(Access Control List)。

# 给特定用户添加权限setfacl -m u:alice:rw file.txt# 给特定组添加权限setfacl -m g:developers:rwx /data/project# 查看 ACLgetfacl /data/project# 递归设置setfacl -R -m u:alice:rwX /data/project# 删除 ACLsetfacl -x u:alice file.txt# 清空所有 ACLsetfacl -b file.txt

启用 ACL:

# 检查文件系统是否支持mount | grep acl# 临时挂载mount -o remount,acl /data# 永久配置 /etc/fstab/dev/sda1  /data  ext4  defaults,acl  0 0

八、排查权限问题的思路

# 1. 查看文件权限ls -l file.txtls -ld /data/dir# 2. 查看当前用户身份whoamiidgroups# 3. 检查父目录权限(进入目录需要 x 权限)ls -ld $(dirname /data/app/config.ini)# 4. 检查 SELinux(可能阻止访问)getenforcels -Z file.txt# 5. 用 namei 追踪路径权限namei -l /data/app/config.ini

九、总结 checklist

□ 文件权限:r=4, w=2, x=1,三组叠加□ 目录需要 x 权限才能 cd 进入□ 私钥、密码文件必须 600□ 可执行脚本需要 x 权限□ 共享目录考虑 SGID(2)让新建文件继承组□ 公共可写目录加 Sticky(1)防止误删□ 用 umask 控制新建文件默认权限□ ACL 用于超越 ugo 的精细控制□ 修改权限前先用 ls -l 确认当前状态

最新文章

随机文章