chown -R 可递归修改目录及其所有子目录和文件的所属用户与用户组,需用 root 权限执行,常见形式包括 chown -R user:path、chown -R user:group path 和 chown -R :group path。

使用 chown -R 可以递归修改目录及其所有子目录、文件的所属用户和用户组。关键在于明确目标用户、路径,并注意权限与安全风险。
基本语法与常用形式
chown 的 -R(或 --recursive)选项用于向下遍历整个目录树。常见写法有:
-
只改用户:
chown -R username /path/to/project -
同时改用户和用户组:
chown -R username:groupname /path/to/project -
只改用户组(保留原用户):
chown -R :groupname /path/to/project或chown -R .groupname /path/to/project
执行前务必确认权限与归属
普通用户无法随意修改他人文件的归属,必须满足以下任一条件:
- 你是 root 用户(推荐用
sudo执行) - 你当前是目标文件的属主,且目标用户是你自己(仅限改组,且系统允许)
- 你拥有
CAP_CHOWN能力(极少见,通常不考虑)
建议先查看当前归属:ls -l /path/to/project | head -5,确认目录结构和原始权限。
避免误操作的实用建议
递归修改影响范围大,容易引发服务异常(如 Web 服务器拒绝读取文件)。推荐按顺序操作:
- 先用
--dry-run(部分 GNU 版本支持,非所有发行版可用),或先测试小范围:chown -R username:groupname /path/to/project/subdir - 确保目标用户和组已存在:
id username和getent group groupname - Web 类项目(如 PHP、Node.js)通常需设为
www-data:www-data(Debian/Ubuntu)或apache:apache(CentOS/RHEL) - 若只需修复权限不改归属,优先考虑
chmod,而非盲目 chown
典型场景示例
比如将 Laravel 项目整个归属改为 deploy:www-data:
sudo chown -R deploy:www-data /var/www/my-laravel-app
之后常配合设置目录和文件权限差异(如目录 755、文件 644),可补充执行:
find /var/www/my-laravel-app -type d -exec chmod 755 {} \;find /var/www/my-laravel-app -type f -exec chmod 644 {} \;


















