Linux chown ( change owner ) 命令用于更改文件、目录或者符号链接的所有者(用户)或组。用户可以是用户名或者用户 ID,组可以是组名或者组 ID,文件是以空格分割的文件列表,支持通配符匹配。

在 Linux 中,所有文件都会有一个所有者和一个组,并为文件所有者、组成员和其他用户分配访问权限。

chown 命令多数情况下需要根用户 root 权限或者具有能执行 sudo 权限的才能执行,非根用户不能修改文件、目录或符号连接的所有者(用户),可以修改组(用户所在的组);同时修改文件的组也可以使用chgrp 命令。

chown 命令的定义解释

在 Linux 或 FreeBSD 系统中,chown ( change owner )用于更改文件、目录或者符号链接的所有者(用户)或组。用户可以是用户名或者用户 ID,组可以是组名或者组 ID。chown 命令一次可以修改一个文件,多个文件或者是目录的所有者或组。默认情况下,chown 执行成功时不会有任何输出,并返回零。

chown 命令语法

chown  [选项]...  [用户][:[组]]  文件...
chown  [选项]...  --reference=参考文件  文件...
  • [选项]:选项带着中括号 [] 表示可选,使用时可以提供,也可以不提供。
  • 用户: 三个中至少提供一个
  • 用户:用户名用户ID
  • 组:组名组ID

在 chown 命令中指定用户或组的语法介绍

基本语法结构:

chown  [选项]...  [用户][:[组]]  文件...

需要提供的用户和组的情况解释:

需提供的用户或组 解释说明
用户 当指定了用户时,则指定的用户成为给定文件的所有者;不改变组的所有权
用户: 当用户名后面带冒号 : 且未指定组名时,该用户成为文件的所有者,文件组更改为该用户的登录组
用户:组 同时指定了用户和组(中间没有空格),则文件的用户更改为给定的用户,组更改为给定的组
:组 省略用户并以冒号为前缀的组,则只将文件的组更改为给定的组
: 只给出冒号 :,而不指定用户和组时,则不做任何更改

使用 ls -l file1.txt 命令可以查看文件的所有者和组信息:

输出:
-rw-r--r-- 12 shizhi u1shizhi 2.0K Apr  29 18:25 file1.txt
|[-][-][-]-   [------] [---]
                |       |
                |       +-----------> 组 Group
                +-------------------> 所有者 Owner

在 chown 命令中使用参考文件语法介绍

基本语法结构:

chown  [选项]...  --reference=参考文件  文件...

当指定参考文件时,会把参考文件的所有者和组赋予要设定的文件,它会同时设置用户和组

chown 命令使用示例

chown 命令指定用户或组示例

1、将文件 file1.txt 的所有者更改为 shizhi,群体的使用者 u1shizhi

chown shizhi:u1shizhi file1.txt

2、同时文件 file1.txt 和目录 dir1 的所有者更改为 shizhi,群体的使用者 u1shizhi

chown shizhi:u1shizhi file1.txt dir1

3、同时文件 file1.txt 和目录 dir1 的所有者更改为 shizhi

chown shizhi file1.txt dir1

4、把文件 file1.txt 的所有者更改为 UID 为 1000 的用户:

chown 1000 file1.txt

5、把文件 file1.txt 的组更改为 www-data,不更改所有者:

chown :www-data file1.txt

6、把目录 dir1 及其内部的所有文件的所有者更改为 shizhi,组更改为 u1shizhi

chown-R shizhi:u1shizhi dir1

chown 命令使用参考文件示例

把文件 file2.txt 的所有者和组设置为 file1.txt 的所有者和组:

chown --reference=file2.txt file1.txt

chown 命令选项解释

如下给出了 Linux chown 命令中所有选项的解释说明:

选项 解释说明
-c, --changes 类似 -v, --verbose 参数, 但只在发生变化时才会输出信息
-f, --silent, --quiet 隐藏大多数错误信息
-v, --verbose 对于处理的每个文件,都输出处理的详细信息
--dereference (默认设置)更改每个符号链接所引用的文件的用户和组, 而不是符号链接本身的
-h, --no-dereference 更改每个符号链接本身的用户和组,而不是所引用的文件的
--no-preserve-root (默认设置)不对 '/' 特殊处理
--preserve-root 不允许递归修改根目录 '/' 下所有文件的用户和组
-R, --recursive 递归的修改目录下所有文件
--help 显示帮助信息后退出
--version 显示版本信息后退出

注意:当指定了 -R 选项时, 下面的几个选项会修改遍历目录的方式。 如果指定了以下多个选项, 只有最后一个选项才会生效。

指定 -R 时的附加选项 解释说明
-H 如果命令行参数是一个指向目录的符号链接, 则遍历该目录
-L 遍历目录中的每一个符号链接
-P (默认设置)不遍历任何一个符号链接

结语

在本教程中我们介绍了如何使用 chown ( change owner ) 命令用于更改文件、目录或者符号链接的所有者(用户)或组。用户可以是用户名或者用户 ID,组可以是组名或者组 ID,文件是以空格分割的文件列表,支持通配符匹配。chown 命令一次可以修改一个文件,多个文件或者是目录的所有者或组。默认情况下,chown 执行成功时不会有任何输出,并返回零。

该 chown 命令可以在 Linux 系统中使用,也可以在 FreeBSD 系统中使用。