必须使用chmod命令修改Linux文件或目录权限,其他命令如chown、chgrp仅更改归属而不影响读写执行权限;查看当前权限需用ls -l命令,其输出首字段10字符中第1位为文件类型,后9位按u/g/o三组各3位表示r/w/x权限。

chmod 是唯一能直接修改 Linux 文件权限的命令。其他命令(如 chown、chgrp)只改归属,不改读写执行权限。
怎么看当前权限?用 ls -l 确认再操作
别猜,先看清楚原始权限和文件类型:
-
ls -l filename输出首字段共 10 字符:第 1 位是类型(-普通文件、d目录),后 9 位每 3 个一组,对应所有者(u)、所属组(g)、其他用户(o)的r/w/x - 例如
-rw-r--r--表示:普通文件,所有者可读写,组和其他仅可读 - 目录必须有
x权限才能cd进入,有r才能ls列出内容——这点常被忽略
用数字模式设权限:三位八进制最常用但容易算错
每位是 4(r)+ 2(w)+ 1(x)的组合,范围 0–7。顺序固定为 ugo:
Linux 安全审计工具,检查 SSH 配置、开放/监听端口、防火墙规则(ufw/iptables/nftables)、失败登录尝试、sudoers 权限...
-
chmod 644 file.txt→ 所有者读写(4+2=6),组和其他只读(4) -
chmod 755 script.sh→ 所有者全权(7),组和其他读+执行(5=4+1) - 常见陷阱:给普通文件设
777或755没必要,且危险;给目录设644会导致无法cd或ls - 数字模式不能单独改某类用户权限,只能全量覆盖——想“只加执行”就得先查原值再重算
用符号模式增删权限:精准、可读、适合日常调整
语法灵活,支持组合操作,不依赖记忆数字:
-
chmod u+x script.sh→ 给所有者加执行权限(不影响组和其他) -
chmod go-w private.log→ 移除组和其他的写权限 -
chmod a=r file.conf→ 所有人只读(a= all,=是覆盖,不是叠加) - 多个操作用逗号隔开:
chmod u=rwx,g=rx,o= data/—— 注意逗号后**不能有空格** - 符号模式下,
x对目录和文件语义不同:文件是“可执行”,目录是“可进入”,别混淆
递归修改目录权限要特别小心
-R 会穿透整个目录树,误用可能锁死系统或暴露敏感数据:
-
chmod -R 755 myproject/→ 所有子目录得x,所有子文件也得x(多数文本文件不该可执行) - 更安全的做法是分两步:
find myproject/ -type d -exec chmod 755 {} \;(只改目录),find myproject/ -type f -exec chmod 644 {} \;(只改文件) - 千万别对
/、/etc、/usr等系统路径用-R,除非你清楚每一层改了什么 - 修改前建议先备份权限:
getfacl -R myproject/ > perms.bak,出问题可用setfacl --restore=perms.bak回滚(需 acl 工具)
chmod 语法重要得多。

















