Linux权限控制基于“三重身份(所有者/组/其他人)+三类操作(读/写/执行)”模型,chmod调控操作权限(符号模式如g+w,数字模式如755),chown变更归属关系(如alice:developers),二者协同实现精准访问控制。

Linux 权限控制不是“设个密码”那么简单,而是靠一套结构清晰的三重身份+三类操作模型来实现的。核心就两点:谁(所有者/组/其他人)能对文件或目录做什么(读/写/执行),而 chmod 和 chown 就是分别调控“做什么”和“谁来做”的两个关键命令。
chmod:管“能做什么”——调整读、写、执行权限
chmod 是 change mode 的缩写,它不改变文件归谁所有,只决定各类用户对它的操作能力。
-
符号模式更直观:用 u(所有者)、g(组)、o(其他人)、a(全部)搭配 +(添加)、-(移除)、=(设定)来操作 r(读)、w(写)、x(执行)。例如:
chmod g+w data.log给所属组加写权限;chmod a-x script.sh移除所有人的执行权限。 -
数字模式更高效:把 r=4、w=2、x=1 相加,三位数分别对应所有者/组/其他人。比如
chmod 644 config.ini表示所有者可读写(6),组和其他人只读(4);chmod 755 deploy.sh表示所有者全权限(7),组和其他人可读可执行(5)。 -
注意作用对象:对目录设 x 权限,实际是“允许进入该目录”;没 x 权限,即使有 r 权限也无法用
cd进入或ls列出内容(除非有执行权限)。
chown:管“归谁所有”——变更文件所有者与所属组
chown 是 change owner 的缩写,它不碰权限位,只改归属关系。普通用户只能修改自己拥有的文件的所属组(且目标组必须是自己所属的组之一),只有 root 或 sudo 用户才能任意更改所有者。
-
基本写法灵活:只改所有者:
sudo chown alice file.txt;只改组:sudo chown :developers file.txt(冒号不能省);同时改两者:sudo chown alice:developers file.txt。 -
递归修改很常用:Web 项目部署后常需统一归属,如
sudo chown -R www-data:www-data /var/www/html,-R 参数会把目录下所有子目录和文件一并处理。 -
小心符号链接:默认情况下 chown 修改的是链接指向的目标文件。若想改链接本身归属,得加
-h参数,例如chown -h user symlink。
典型组合场景与避坑提醒
单独用 chmod 或 chown 往往不够,真实运维中常配合使用:
- 上传一个脚本后想运行?先
chmod +x install.sh加执行权,再确认它归当前用户所有(或至少组权限匹配)。 - 团队共享目录需要协作编辑?
chmod 775 /shared开放组写权限,再chown :devteam /shared把组设为开发组,并确保成员都加入了该组。 - 保护敏感配置文件?
chmod 600 .env锁死仅所有者可读写,再chown appuser:appuser .env明确归属,避免被其他用户意外覆盖。 - 别对系统关键目录(如
/etc、/usr)轻易chown -R,可能破坏服务启动逻辑;也别给脚本随意加777,这是安全大忌。
怎么快速判断当前权限?
用 ls -l filename 查看最左边那串字符,比如 -rw-r-----:
- 首字符
-表示普通文件(d是目录); - 第2–4位
rw-是所有者权限(可读可写); - 第5–7位
r--是所属组权限(只读); - 第8–10位
---是其他人权限(无)。


















