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
相关推荐
Lyinj5 小时前
从一个编辑校验问题谈接口设计的边界
java·spring boot·python·学习
消失的旧时光-19435 小时前
Java 线程通信:彻底理解 wait / notify(原理 + 图解 + 实战)
java·开发语言
梦白.5 小时前
Python字符串类型
linux·python
测试人社区-千羽5 小时前
Apple自动化测试基础设施(XCTest/XCUITest)面试深度解析
运维·人工智能·测试工具·面试·职场和发展·自动化·开源软件
秋刀鱼 ..5 小时前
第二届电气、自动化与人工智能国际学术会议(ICEAAI 2026)
大数据·运维·人工智能·机器人·自动化
小花5 小时前
SpringMvc中的拦截器
java·spring·springmvc
Apibro5 小时前
【LINUX】QEMU执行第一个驱动
linux
测试人社区—小叶子5 小时前
移动开发新宠:用Flutter 4.0快速构建跨平台应用
运维·网络·人工智能·测试工具·flutter·自动化
okseekw5 小时前
Java网络编程从入门到实战:吃透三要素,玩转CS/BS架构
java·后端·http