直接用chown就能改属主,关键在写对格式、加对选项:不加-R只改目标自身,加-R才递归修改全部子项;支持alice、:developers、alice:developers等格式,冒号分隔且前后无空格。

直接用 chown 就能改属主,关键在写对格式、加对选项——不加 -R 只动目标本身,加了才进到里面所有子项。
改单个文件或目录的属主(不递归)
默认只影响你指定的那个路径,不管它里面有什么:
-
chown alice file.txt—— 只改所有者,属组保持不变 -
chown alice:developers file.txt—— 同时改属主和属组(冒号前后不能有空格) -
chown :developers file.txt—— 只改属组,属主不动(注意开头的冒号)
执行后用 ls -l file.txt 看第三列是属主、第四列是属组,别看错位置。
改整个目录及全部内容的属主(必须加 -R)
要让子目录、子文件、隐藏文件(比如 .env、.git)都跟着变,-R 不可省略:
-
sudo chown -R www-data /var/www/html—— 只改属主,属组不变 -
sudo chown -R www-data:www-data /var/www/html—— 属主和属组一起改(最常用) -
sudo chown -R :adm /var/log/myapp/—— 只统一加一个组,保留原作者便于追踪
漏掉 -R 是高频失误:部署完 Web 项目发现 PHP 报 403,往往就是子文件还挂着旧属主。
安全操作前必须确认三件事
递归修改不可逆,尤其在生产环境,跳过验证容易导致服务异常:
- 先用
ls -ld /path看目录自身归属,再用ls -l /path | head -3抽查几个子项是否一致 - 确认目标用户和组真实存在:
id username或getent group groupname - 路径务必用绝对路径,避免把
./data误写成/data,一不小心改到系统根下
普通用户能做什么
非 root 用户权限受限,但仍有可控操作空间:
- 只能改自己拥有的文件,且不能把属主改成别人(哪怕对方是同组用户)
- 可以把自己文件的属组改成自己所属的附加组,例如:
chown :docker config.yaml(前提是docker在你的id输出里) - 想改别人文件?得找管理员加 sudo 权限,或通过
sudoers配置最小权限策略


















