chown修改文件夹所属用户必须用root权限或sudo,普通用户仅能修改自己拥有的文件且目标用户须同组;不加-r仅改目录本身,递归需显式指定;冒号前后不可有空格。

chown 修改文件夹所属用户必须用 root 权限或 sudo
普通用户不能随意把文件夹的所有权转给别人,只有 root 或目标用户自己(且当前是所有者)才能执行 chown。如果你看到 Operation not permitted 或直接被拒绝,大概率是权限不够。
常见错误现象:chown user1 mydir 报错但没提示原因;或者命令看似成功,ls -l 却发现所有者没变——这通常是因为你不是该目录的当前所有者,也没用 sudo。
- 必须加
sudo:除非你是当前所有者,否则一律用sudo chown user1 mydir - 别漏掉空格:
chownuser1 mydir会被当做一个用户名,报invalid user - 路径要写对:相对路径容易出错,建议先
pwd确认位置,或用绝对路径如/home/user2/mydir
chown 同时改用户和用户组的写法容易混淆
只改用户时用 chown user1 dir;只改组用 chown :group1 dir(注意冒号开头);两者都改必须写成 chown user1:group1 dir,中间不能有空格。
常见错误现象:chown user1 group1 dir 会报 chown: invalid user: ‘group1’,因为命令把 group1 当成了第二个用户参数,而不是组名。
- 正确写法:
chown alice:devs /var/www/project - 如果只想改组不改用户,用
chown :devs /var/www/project或chown .devs /var/www/project(点号等价于冒号) - 用户和组名必须真实存在,查不到会报
invalid user或invalid group,可用id username或getent group groupname验证
递归修改子目录和文件要用 -R,但要注意副作用
-R 会让 chown 进入目录内部,把所有子目录、文件的属主一并修改。这很常用,但也很危险——比如误操作把 /etc 下的配置文件属主全改成普通用户,系统服务可能直接起不来。
常见错误现象:运行 sudo chown -R user1 /tmp/myapp 后,里面某个脚本突然无法执行,原因是原属主是 root,脚本依赖 setuid 或特定权限模型。
- 加
-v参数看实际改了哪些项:sudo chown -Rv user1:www-data /var/www/html - 慎用于系统路径:
/usr、/etc、/bin等目录下不要轻易-R - 如果只想改目录本身,不进子项,就别加
-R;它不会默认递归
符号链接的处理方式默认不一致
默认情况下,chown 作用在符号链接上,改的是链接文件本身的属主,而不是它指向的目标。但多数人想改的是目标——这时候得加 -h 或 --no-dereference 才能改链接自身,而加 --dereference 才会去改目标文件(但这个选项仅对符号链接有效,且要求你有目标文件的写权限)。
常见错误现象:对一个软链 ln -s /real/path linkname 执行 chown user1 linkname,ls -l linkname 显示属主变了,但 ls -l /real/path 没变——这是正常行为,不是 bug。
- 改软链本身(默认行为):
chown user1 linkname - 明确改软链本身(更清晰):
chown -h user1 linkname - 改软链指向的目标:
chown --dereference user1 linkname(需目标可写)
r-x)没开,得配合 chmod 补一刀。











