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
相关推荐
可乐ea16 分钟前
【知识获取与分享社区项目 | 项目日记第 21 天】索引构建与联想建议:Outbox 增量更新 + Completion Suggester
java·大数据·mysql·elasticsearch·搜索引擎
RainCity20 分钟前
Java Swing 自定义组件库分享(十一)
java·笔记·后端
好家伙VCC26 分钟前
Qdrant + LangChain 实战:构建毫秒级语义检索服务
java·langchain
AI人工智能+电脑小能手29 分钟前
【大白话说Java面试题 第93题】【Mysql篇】第23题:从查找速度来看,聚集索引和非聚集索引哪个更快?
java·开发语言·数据库·mysql·面试
摇滚侠37 分钟前
JDBC 基础到高级一套通关!高级篇 28-40
java
Smoothcloud润云1 小时前
5大功能精修,重构AI算力使用体验!
java·人工智能·windows·算法·重构·编辑器·sublime text
LZZ and MYY1 小时前
RTS 在windows和Linux之间ShareMem
linux·运维·服务器
aningx1 小时前
openSUSE Leap 16.0 运行 sunshine 报错的解决方法
linux
爱学习的徐徐1 小时前
Linux 基础IO
linux·服务器
zt1985q1 小时前
本地部署源代码管理解决方案 Bitbucket Data Center 并实现外部访问
运维·服务器·数据库·网络协议·postgresql·源代码管理