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
相关推荐
xbgRS17 分钟前
spring整合mybaits
java·spring·mybatis
张龙68728 分钟前
Docker 镜像瘦身实战:从 1.2GB 到 128MB,我踩过的 7 个坑和一套可复制的方法论
运维·后端·docker
Tim_101 小时前
【C++】024、new[]与delete[]配对使用
java·开发语言
外滩运维专家1 小时前
Nginx 上的通配符证书 90 天到期,续签这事我是这么搞的
运维
小黑技术栈2 小时前
Java前端基础到入门——16day
java·开发语言·前端
2401_827499992 小时前
C++(黑马)05-提高编程
java·开发语言·c++
科技新资讯2 小时前
国内AI影视制作服务商哪家口碑好
运维·人工智能·devops
jufeng13072 小时前
【系列:MiniKV 原理剖析 · 第 6 篇】
linux·软件工程·个人开发·makefile
卷心菜的学习路2 小时前
基于多模态向量检索的数学相似题推荐系统:完整设计、算法与实验
java·python·算法·大模型·推荐算法·数学相似题
IT摆渡者3 小时前
ubuntu系统网络问题
linux·运维·ubuntu