038 chown命令
命令说明
chown(change owner)用于修改文件或目录的所有者和所属组,只有 root 或具备 CAP_CHOWN 权限的进程才能把文件改属他人,是管理多用户共享目录归属的常用命令。
语法
chown [选项]... [所有者][:.][组] 文件...
常用参数
| 参数 | 说明 |
|---|---|
| -R | 递归修改目录树下所有文件的属主/属组 |
| -h | 只改符号链接本身而不跟随目标 |
| -c | 只报告发生变化的文件 |
| -v | 详细报告每个文件的处理结果 |
| -f | 静默忽略错误 |
| --reference=文件 | 参照文件设置相同属主属组 |
| --from=旧属主 | 只修改当前属主匹配的文件,防止误改 |
| user:group | 同时指定所有者与组(冒号写法优于点号) |
使用示例
$ chown www /var/www/html/index.html
把文件所有者改为 www 用户
$ chown www:www /var/www/html
同时改所有者和所属组
$ chown -R appuser:appgroup /opt/app
递归改整个应用目录归属(部署后常用)
$ chown :developers project/
只改所属组不动所有者
$ chown --reference=/etc/passwd /etc/shadow
参照 passwd 设置属主属组
$ chown -h root:root mylink
改符号链接自身的归属
$ chown -R --from=olduser newuser /data
只把原属主为 olduser 的文件改为 newuser
$ chown root:shadow /etc/shadow && chmod 640 /etc/shadow
shadow 文件标准属主与权限组合
实用技巧
- chown 改归属、chmod 改权限、chgrp 只改组;三者常配合使用,Web 目录典型组合是 chown -R www:www + chmod -R 755 目录 / 644 文件。
- 分隔符推荐用冒号 user:group;user.group 写法在用户名含点时会产生歧义。
- 改属主后原用户可能失去访问意义,脚本中改 /var/www、/opt 等目录前先用 ls -l 确认当前归属。
- 普通用户不能把自己的文件 chown 给别人(防配额与责任逃避),只能 chgrp 到自己加入的组。
- Web 服务上传目录被误改属主导致 500 错误时,可用 chown --from 精准回滚,避免大范围 -R 误伤。