chown 命令详解
更新时间:2026-08-28。本文是「一个命令一个文档」系列,聚焦
chown(change owner,改属主)——文件与目录命令族 / 用户与权限命令族(见用户与权限命令族)的基础命令,和 chmod 互补。
chown 修改文件或目录的属主(owner,文件的拥有者用户)和属组(group,文件所属的用户组)。权限系统先看"你是谁"(属主/属组/其他),chown 就是改这个"身份归属"——属主通常对自己文件有完全控制权。
一、基本写法
chown user file # 改属主为 user,属组不变
chown user:group file # 同时改属主和属组
chown :www-data file # 只改属组(冒号前留空)
chown user: file # 属主改为 user,属组改为 user 的登录组
user:group是核心语法:冒号前是属主、后是属组。只写user(无冒号)只改属主;写:group(冒号前空)只改属组——这个"只改组"的写法很常用(比如把文件交给某个组共享,但属主不动)。注意和 chmod 区分:chmod 改"能不能",chown 改"是谁的"。
二、递归:-R
chown -R www-data:www-data /var/www/site # 递归改整个目录树改目录权限几乎都要
-R递归,否则只改了目录本身、里面文件还是旧属主。Web 部署后常需要把整站归属交给www-data让 nginx 能读。-R同样有风险:确认路径正确再跑,别把/或系统目录 chown 了(会出大乱子)。
三、参考复制与符号链接
chown --reference=ref.txt file2 # 照 ref.txt 的属主属组设 file2
chown -h symlink # 只改符号链接本身(不追到目标)
chown -H symlink # 改链接指向的文件
--reference照葫芦画瓢,批量统一属主属组方便。-hvs 默认:对符号链接,chown默认改的是链接指向的文件;加-h才改链接本身。多数情况你想要的正是追到目标文件,所以默认行为通常是对的,但知道有这区别能避免意外。
四、与 chmod / umask 的分工
| 命令 | 改什么 |
|---|---|
chown | 文件的属主 / 属组("是谁的") |
| chmod | 权限位 rwx("能不能",见 chmod) |
| umask | 新建文件的默认权限掩码 |
三者构成权限管理全貌:chown 定归属、chmod 定权限、umask 定新建默认。常见组合:"把站点目录归属给 www-data,并设 755 让其他用户可读"——
chown -R www-data /var/www && chmod -R 755 /var/www。只改 chmod 不改 chown,可能属主不对导致服务仍读不了。
五、实战:Web 目录权限修复
# nginx 报 403 Forbidden:文件属主不对或权限不够
ls -l /var/www/site/index.html # 看属主/权限
chown -R www-data:www-data /var/www/site # 交给 web 用户
chmod -R 755 /var/www/site # 目录可执行(进)、文件可读403 常见根因:文件属主不是 web 服务用户、或权限位不对(目录缺 x、文件缺 r)。先 ls -l 看清现状,再 chown + chmod 组合修复。更多权限位细节见 chmod。
一句话总结
chown = 改文件属主/属组("是谁的"):user:group 同时改、user 只改主、:group 只改组;-R 递归改目录树(路径务必确认);与 chmod(改"能不能")互补、配合 umask 构成完整权限管理。Web 403 常因属主不对,chown + chmod 组合修复。