chown -R 可递归修改目录及其所有子项(含隐藏文件)的属主和属组;不加 -R 仅改目录本身。操作前需用 id 和 getent 确认用户与组存在,语法为 sudo chown -R 新属主:新属组 路径,支持只改属主、只改属组、-v 查看变更等选项。

用 chown -R 命令就能一次性改完目录及其所有子文件、子目录、隐藏文件(比如 .git)的属主和属组,不加 -R 只动目录本身,里面的东西完全不变——这是最常出错的地方。
确认目标用户和组是否存在
执行前先检查新属主和属组是否真实存在:
- 查用户:
id newuser(返回用户 UID 和所属组) - 查组:
getent group newgroup(确认组名在/etc/group中) - 如果不存在,需先用
useradd或groupadd创建
基本递归修改命令格式
语法统一为:sudo chown -R 新属主:新属组 目录路径
- 例如把
/var/www/html及其全部内容改为www-data:www-data:sudo chown -R www-data:www-data /var/www/html - 只改属主、保留原属组:省略冒号后部分,如
sudo chown -R alice /home/alice/project - 只改属组、保留原属主:写成
:newgroup,如sudo chown -R :developers /srv/app
加 -v 查看实际修改了哪些文件
加上 --verbose 或 -v 参数,能逐行输出被修改的路径,方便核对范围是否正确:
sudo chown -Rv www-data:www-data /var/www/html- 特别适合在测试环境或重要目录操作前验证效果
- 若只想看真正发生变更的条目,可用
-c(changes)代替-v
注意权限与安全限制
普通用户无法随意更改文件属主,这类操作通常需要 root 权限:
- 必须加
sudo(除非你就是 root) - 系统默认启用
--preserve-root,防止误对/执行-R,无需额外加参数 - 符号链接默认修改指向的目标文件;如需改链接本身,加
-h选项


















