chown -r 可递归修改目录及所有子项的属主和属组,格式为:仅改所有者用 chown -r 用户名 路径,仅改属组用 chown -r :组名 路径,同时修改用 chown -r 用户名:组名 路径;须用绝对路径、验证用户组存在、避免误改系统关键目录。

只改所有者(不碰属组)
命令格式是:chown -R 用户名 目录路径。例如把 /var/www/myapp 下所有内容的所有者都改成 www-data,但属组保持原样:
sudo chown -R www-data /var/www/myapp
注意:普通用户无法执行这个操作;必须有 root 权限,所以通常要加 sudo。
只改属组(不碰所有者)
用冒号开头,格式是:chown -R :组名 目录路径。比如只把整个项目属组统一设为 developers:
sudo chown -R :developers /home/project
等价于 chgrp -R developers /home/project,但语义更明确,也更安全——不会误动所有者。
同时改属主和属组(最常用)
格式是:chown -R 用户名:组名 目录路径,冒号前后不能有空格:
sudo chown -R nginx:nginx /usr/share/nginx/htmlsudo chown -R deploy:www-data /srv/app
这是部署 Web 应用、迁移数据时的标准操作。确保目标用户和组真实存在,可用 id 用户名 或 getent group 组名 验证。
执行前必须检查的三件事
递归操作不可逆,尤其在生产环境:
- 用
ls -ld /path/to/dir看当前归属,再用ls -l /path/to/dir | head -5抽样确认内部结构 - 确认用户名/组名存在,避免因拼写错误导致整批文件归属变成数字 ID(如
nobody) - 务必用绝对路径,比如写
/data/app,别写./app或漏掉开头斜杠,防止因当前工作目录不同而误改其他位置
别对 /etc、/bin、/usr 这类系统目录轻易加 -R,除非你清楚每一层的影响。











