前面文章介绍了linux中修改权限的chmod命令,在linux的多用户环境中,文件归属权是权限安全的基石。谁能读写、谁能管理、服务能否正常运行,往往都由归属权决定。chown(change owner)就是专门用来修改文件 / 目录的所有者与所属组的核心命令,也是运维、开发、后端同学必须熟练掌握的高频指令。
一、先搞懂:谁能改?改什么?
1. 作用
2. 权限要求
- 普通用户:组必须是自己的附属附加组,不能随意改成任意组
如上图中第3列root=所有者,第4列root=所属组。#标准格式chown [选项] 所有者:所属组 文件/目录#兼容格式(点号替代冒号)chown [选项] 所有者.所属组 文件/目录
-R:递归修改目录及所有子文件 / 子目录(最常用)-v:显示详细执行过程-c:只显示发生变更的内容-f:忽略错误信息,静默执行
#将test.txt所有者改为alice(非root用户需sudo)chown alice test.txt
#方式1:chown写法chown :dev test.txt#方式2:等价chgrp命令chgrp dev test.txt
#将 test.txt 归属改为 alice:devchown alice:dev test.txt
#将/var/www/mysite及其所有内容归属改为 alice:dev chown -R alice:dev /var/www/mysite
#先查UID/GIDid alice#直接用ID赋值chown 1001:1002 test.txt
#将file2的归属改为和file1一致chown --reference=file1 file2chown --reference=test.txt test1.txt
场景 1:Web服务器(Nginx/Apache)#站点目录归属web服务用户chown -R www-data:www-data /var/www/wordpress#配置文件安全归属rootchown root:root /etc/nginx/conf.d/mysite.conf
场景 2:数据库目录(MySQL/PostgreSQL)chown -R mysql:mysql /var/lib/mysqlchown -R postgres:postgres /var/lib/postgresql
#误操作后,把/home/alice归还用户 jackchown -R alice:alice /home/alice
#项目目录归dev组,所有组员可读写chown -R :dev /data/project#权限需要使用chmod进行修改,chown只改属组
- 不加 -R 只改目录本身,不改里面内容
- 普通用户不能改所有者
- 软链接默认不递归穿透
- 系统关键目录别乱改
/、/etc、/bin 等归属错误会导致系统崩溃。 - chown 与 chmod 分工不同
六、总结
chown看似简单,却是linux权限体系的基石操作。无论是部署服务、修复权限、管理共享目录,都离不开它。如果你觉得文章对你的运维工作有帮助,记得点赞加关注。
#运维#Linux运维#Linux实战#chown