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
相关推荐
代码游侠5 分钟前
学习笔记——设备树基础
linux·运维·开发语言·单片机·算法
Gary Studio6 分钟前
rk芯片驱动编写
linux·学习
mango_mangojuice7 分钟前
Linux学习笔记(make/Makefile)1.23
java·linux·前端·笔记·学习
程序员侠客行11 分钟前
Mybatis连接池实现及池化模式
java·后端·架构·mybatis
时艰.15 分钟前
Java 并发编程 — 并发容器 + CPU 缓存 + Disruptor
java·开发语言·缓存
Harvey90317 分钟前
通过 Helm 部署 Nginx 应用的完整标准化步骤
linux·运维·nginx·k8s
丶小鱼丶20 分钟前
并发编程之【优雅地结束线程的执行】
java
市场部需要一个软件开发岗位24 分钟前
JAVA开发常见安全问题:Cookie 中明文存储用户名、密码
android·java·安全
忆~遂愿28 分钟前
GE 引擎进阶:依赖图的原子性管理与异构算子协作调度
java·开发语言·人工智能
MZ_ZXD00133 分钟前
springboot旅游信息管理系统-计算机毕业设计源码21675
java·c++·vue.js·spring boot·python·django·php