"Change owner" 的缩写,是一个用于修改文件或目录的所有者(owner)和所属组(group) 的命令行工具。
该命令通过调整文件的所有权,控制哪个用户或用户组对文件拥有管理权限(如修改权限、删除文件等),是Linux系统中文件权限管理的重要命令,常用于文件共享或权限交接场景。
chown [选项] <新所有者>[:<新所属组>] <文件/目录1> <文件/目录2> ...<新所有者>可以是用户名或用户ID(UID)。<新所属组>可以是组名或组ID(GID),省略时仅修改所有者。格式变体:
chown :<新所属组> 文件可单独修改所属组(等效于chgrp命令)。
常用选项
-R或--recursive:"recursive",递归修改目录及其子目录中所有文件的所有者和所属组,例如chown -R john:dev docs/递归将docs/目录下所有内容的所有者改为john,所属组改为dev。-c或--changes:"changes",仅显示实际发生修改的文件信息,例如chown -c alice:team report.txt若权限有变更则输出修改详情,无变更则不显示。-v或--verbose:"verbose",显示所有操作的详细过程(包括未变更的文件),例如chown -v root:root /etc/config无论是否修改都输出操作信息。-f或--silent:"force",强制操作,不显示错误信息(如忽略无法修改的文件),例如chown -f nobody: nogroup temp/强制修改且不报错。--reference=<参考文件>:"reference",以参考文件的所有者和所属组为标准修改目标文件,例如chown --reference=template.sh script.sh使script.sh与template.sh拥有相同的所有者和所属组。
参考示例
示例1:修改文件的所有者 执行
chown alice data.csv,将data.csv的所有者改为用户alice,所属组保持不变,适合将文件所有权转移给指定用户。示例2:同时修改所有者和所属组 执行
chown bob:dev project.py,将project.py的所有者改为bob,所属组改为dev,确保用户和组对文件的协同管理权限。示例3:单独修改文件的所属组 执行
chown :test team.txt,仅将team.txt的所属组改为test(所有者不变),等效于chgrp test team.txt,适合调整文件的组权限范围。示例4:递归修改目录及内容的所有权 执行
chown -R www-data:www-data /var/www/html/,递归将网站目录及其所有子文件、子目录的所有者和所属组改为www-data(Web服务用户),确保Web服务器有权限访问网站文件。示例5:复制参考文件的所有权 执行
chown --reference=conf.example new.conf,使new.conf拥有与conf.example相同的所有者和所属组,保证配置文件权限一致性。示例6:在脚本中批量修改日志文件所有权 脚本中执行:
# 批量将/var/log/下的.log文件所有者改为root,所属组改为adm find /var/log/ -name "*.log" -exec chown root:adm {} \;统一日志文件的所有权,便于管理员查看和管理日志。
示例7:显示修改过程的详细信息 执行
chown -v john:staff docs/,输出changed ownership of 'docs/' from root:root to john:staff,明确显示所有权变更详情,适合手动操作时确认修改结果。示例8:修改符号链接的所有权(特殊处理) 执行
chown -h tom:users link_to_data,修改符号链接link_to_data自身的所有者和所属组(而非指向的目标文件),-h选项专门用于处理符号链接。
注意:
修改文件所有权通常需要
root权限(使用sudo),普通用户仅能修改自己拥有的文件的所属组(且必须是该用户所在的组)。递归修改大量文件时(如
-R选项),可能需要较长时间,建议在非高峰时段执行。所有权变更可能影响文件的访问权限,修改后需确认相关用户/组仍能正常访问文件。