易君召
发布于 2026-08-07 / 作者:易君召 / 4 阅读
0

Linux chmod、chown、chgrp 权限命令详解

Linux 文件权限分为 权限位 (chmod)属主属组 (chown/chgrp),两个概念要区分开。

一、基础概念

1. 文件权限字符含义

执行 ls -l filename 看到类似:

plaintext

-rwxr-xr--  1 root docker  123 test.sh
  • 第一位:文件类型 -普通文件,d目录,l软链接

  • 后面 9 位分 3 组:所有者 (user)、所属组 (group)、其他用户 (other)

plaintext

  u      g      o
r w x  r - x  r - -

表格

符号

含义

数字值

r

读 read

4

w

写 write

2

x

执行 execute

1

数字权限 = 各组权限数值相加

例:rwxr‑xr‑

  • u: r+w+x = 7

  • g: r+‑+x =5

  • o: r+‑+‑ =4

    最终权限:754

二、chmod:修改文件 / 目录权限(改 rwx,不改所有者)

格式:chmod [选项] 权限 文件/目录

两种写法:数字模式 / 符号模式

1)数字模式(最常用)

bash

chmod 755 test.sh
# u=7(rwx), g=5(r‑x), o=5(r‑x)
chmod 644 file.txt
# u=6(rw‑),g=4(r‑‑),o=4(r‑‑),普通文本默认

常见权限参考

  • 644:普通文件,所有者读写,其他人只读(日志、配置文件)

  • 755:程序 / 脚本、目录,所有者读写执行,其他人读执行

  • 700:私密文件,仅自己可读写执行

  • 777:全部开放,生产环境尽量不要用,有安全风险

2)符号模式 u g o a

  • u user 所有者;g group 组;o other 其他人;a all 全部

  • +增加权限,-移除权限,=设置权限

bash

# 给所有者增加执行权限
chmod u+x test.sh

# 去掉其他用户写权限
chmod o-w file.txt

# 给全部用户增加执行
chmod a+x run.sh

# 设置组权限为只读
chmod g=r file.txt

递归修改目录权限 -R

-R递归,目录 + 目录下所有文件一起改

bash

chmod -R 755 /opt/app/

⚠️注意:目录必须要有 x 权限才能进入访问;很多人递归把目录下所有文件设置 777,会带来安全隐患。

三、chown:修改【所有者 + 所属组】

chmod 改的是 rwx 权限;chown 改是谁拥有这个文件

格式:

bash

# 修改所有者
chown 用户名 文件

# 修改所有者:组
chown user:group file

# 只修改组
chown :group file

示例

bash

# 把app.log属主改成nginx用户
chown nginx:nginx app.log

# 递归修改整个目录属主属组
chown -R nginx:nginx /var/www/html

只有 root 可以修改文件属主;普通用户不能把自己的文件转给别人。

四、chgrp:只修改所属组(用的少,chown 可以替代)

bash

chgrp docker test.txt

五、重要坑点

  1. 目录和文件 x 权限意义不一样

    • 文件 x:代表可以运行这个程序脚本

    • 目录 x:代表可以 cd 进入目录,没有 x 就算有 r 也无法读取目录内文件

  2. -R递归慎用:不要随便 chmod -R 777 /xxx,会造成权限泄露,部分系统文件损坏

  3. suid/sgid/sticky 特殊权限(了解)

    • chmod u+s file suid,执行时使用文件所有者权限

    • chmod +t /tmp 粘滞位,典型 /tmp 目录,用户只能删自己的文件

  4. umask:新建文件 / 目录默认权限掩码,控制新建文件默认权限

六、实操小案例

场景:写一个 shell 脚本需要执行

bash

# 创建脚本
vim deploy.sh
# 增加执行权限
chmod +x deploy.sh
# 归属给普通用户app
chown app:app deploy.sh
# 运行
./deploy.sh

场景:网站目录,nginx 读取,不允许其他人写

bash

chown -R nginx:nginx /data/www
chmod -R 755 /data/www
find /data/www -type f -exec chmod 644 {} \;
# 文件644,目录755,分开设置,避免普通文件也带上执行权限

小技巧:stat 文件可以看详细权限、uid gid。


本文原创作者:易君召,详见:https://www.yijunzhao.cn/authors/yijunzhao,转载请注明出处。

原文链接 https://www.yijunzhao.cn/archives/linux-chmod-chown-chgrp-permissions-guide

欢迎访问 小易撩挨踢

https://www.yijunzhao.cn/