Linux-chown

Linux-chown

chowm

作用

chown(change owner),它是 Linux/Unix 系统中修改文件/目录的所有者(User)和/或所属组(Group) 的核心命令(只有 root 或文件的原始所有者能修改,日常主要由 root 操作)。

注意事项

  1. 权限限制 :普通用户只能修改「自己拥有的文件」的所属组(且必须是自己所属的组),但无法修改所有者;只有root能修改任意文件的所有者/组。
  2. 符号链接 :默认情况下chown会修改符号链接指向的原文件 权限,若要改链接本身,需加-h参数。
  3. 目录权限 :修改目录权限时,务必加-R(递归),否则仅改目录本身,子文件/子目录不变。
  4. 生产场景 :Web/数据库等服务的目录/日志文件,通常会将所有者设为root,所属组设为服务运行用户(如nginx/mysql),避免权限过大导致安全风险。

格式

bash 复制代码
chown [参数] 新所有者[:新所属组] 文件/目录

说明:

  • 所有者可写「用户名」或「UID」(如 1000),所属组可写「组名」或「GID」(如 1000);
  • 仅改所有者:只写「新所有者」(不加冒号);
  • 仅改所属组:只写「:新所属组」(冒号前留空);
  • 同时改所有者和组:「新所有者:新所属组」(冒号无空格)。

参数

chown 命令行参数(选项)

这类参数控制命令执行行为,不直接修改权限,常用参数如下:

参数 全称/含义 核心作用 示例
-R recursive(递归) 递归修改目录及其下所有子文件/子目录的所有者/所属组(最常用) chown -R root:nginx /var/www/ 递归修改web目录的所有者为root、所属组为nginx
-v verbose(详细输出) 显示每个文件的修改结果(无论是否变更) chown -v root file.txt 输出:ownership of 'file.txt' changed to root
-c changes(仅显示变更) 仅输出权限发生实际变更的文件信息,无变化则静默 chown -c nginx file.txt 仅当file.txt所有者非nginx时才输出信息
-f force(强制) 忽略错误提示(如无权限修改、文件不存在等,不报错) chown -f test:test no_perm_file 即使无权限,也不输出错误
-h no dereference 仅修改符号链接本身的所有者/组,而非链接指向的原文件(默认改原文件) chown -h root:root /tmp/link 只改软链接link的权限,不改它指向的文件
--reference=参考文件 参考权限 将目标文件/目录的所有者+所属组,设为「参考文件」的所有者+组(无需手动指定) chown --reference=ref.txt target.txt 让target.txt和ref.txt的所有者/组一致
--from=原所有者[:原所属组] 条件修改 仅当文件的「原所有者/组」匹配指定值时,才修改为新值(精准批量修改) chown --from=olduser:oldgroup newuser:newgroup /data/* 仅把原属主olduser、原属组oldgroup的文件改成newuser:newgroup

chown 核心用法(修改所有者/所属组)

常用场景

场景 命令 说明
仅改所有者 chown root file.txt 将file.txt的所有者改为root(所属组不变)
仅改所属组 chown :nginx file.txt 将file.txt的所属组改为nginx(所有者不变)
同时改所有者+组 chown www:www /var/log/app.log 所有者和所属组都改为www用户/组
用UID/GID修改 chown 1001:1002 dir/ 所有者设为UID=1001的用户,所属组设为GID=1002的组
  1. 递归修改目录权限,且显示修改过程(运维高频):

    bash 复制代码
    # 把web项目目录的所有者设为root,所属组设为nginx,递归且显示过程
    chown -Rv root:nginx /usr/share/nginx/html/
  2. 仅修改「原属主为test」的文件为root(条件修改):

    bash 复制代码
    chown --from=test root -R /tmp/test_dir/
  3. 参考系统默认文件,统一设置权限:

    bash 复制代码
    # 让app.conf和/etc/nginx/nginx.conf的所有者/组完全一致
    chown --reference=/etc/nginx/nginx.conf /etc/nginx/conf.d/app.conf
相关推荐
春日见17 小时前
控制算法:PP(纯跟踪)算法
linux·人工智能·驱动开发·算法·机器学习
又是忙碌的一天17 小时前
SpringBoot 创建及登录、拦截器
java·spring boot·后端
fox_mt17 小时前
AI Coding - ClaudeCode使用指南
java·ai编程
HABuo17 小时前
【Linux进程(四)】进程切换&环境变量深入剖析
linux·运维·服务器·c语言·c++·ubuntu·centos
oMcLin17 小时前
如何在 Rocky Linux 8.7 上通过 Prometheus 与 Grafana 结合,提升大规模容器环境的监控与性能分析?
linux·grafana·prometheus
橘颂TA17 小时前
【Linux】死锁四条件的底层逻辑:从锁冲突到 STL 组件的线程安全实践(Ⅵ)
linux·运维·服务器·c++·死锁
毕设源码-郭学长17 小时前
【开题答辩全过程】以 基于SSM的高校运动会管理系统的设计与实现为例,包含答辩的问题和答案
java·eclipse
qq_54702617917 小时前
Maven 使用指南
java·maven
埃伊蟹黄面17 小时前
ELF深入解剖:从文件头到动态段,图解库的二进制构成
linux·c·
xiaolyuh12317 小时前
Arthas修改类(如加日志)的实现原理
java