文章目录
- [1. 描述](#1. 描述)
- [2. 语法](#2. 语法)
- [3. 参数](#3. 参数)
- [4. 例子](#4. 例子)
1. 描述
chown
是 Linux 中用于更改文件或目录的所有者和所有者组的命令。
2. 语法
bash
chown [选项] 所有者[:组] 文件名
详细用法:
bash
Usage: chown [OPTION]... [OWNER][:[GROUP]] FILE...
or: chown [OPTION]... --reference=RFILE FILE...
Change the owner and/or group of each FILE to OWNER and/or GROUP.
With --reference, change the owner and group of each FILE to those of RFILE.
-c, --changes like verbose but report only when a change is made
-f, --silent, --quiet suppress most error messages
-v, --verbose output a diagnostic for every file processed
--dereference affect the referent of each symbolic link (this is
the default), rather than the symbolic link itself
-h, --no-dereference affect symbolic links instead of any referenced file
(useful only on systems that can change the
ownership of a symlink)
--from=CURRENT_OWNER:CURRENT_GROUP
change the owner and/or group of each file only if
its current owner and/or group match those specified
here. Either may be omitted, in which case a match
is not required for the omitted attribute
--no-preserve-root do not treat '/' specially (the default)
--preserve-root fail to operate recursively on '/'
--reference=RFILE use RFILE's owner and group rather than
specifying OWNER:GROUP values
-R, --recursive operate on files and directories recursively
The following options modify how a hierarchy is traversed when the -R
option is also specified. If more than one is specified, only the final
one takes effect.
-H if a command line argument is a symbolic link
to a directory, traverse it
-L traverse every symbolic link to a directory
encountered
-P do not traverse any symbolic links (default)
--help display this help and exit
--version output version information and exit
Owner is unchanged if missing. Group is unchanged if missing, but changed
to login group if implied by a ':' following a symbolic OWNER.
OWNER and GROUP may be numeric as well as symbolic.
3. 参数
以下是chown
命令常用的参数选项及其详细解释:
-
-R, --recursive
递归地改变文件及其目录内所有子文件和子目录的所有者和组。
例如:
chown -R user:group directory
,将会改变directory
及其内部所有文件和子目录的所有者和组。 -
-h, --no-dereference
只改变符号链接本身的所有者和组,而不是它指向的文件或目录。
例如:
chown -h user:group symlink
,只改变符号链接syrmlink
的所有者和组。 -
-f, --silent, --quiet
抑制错误信息,当
chown
尝试更改不存在的文件或目录时不会显示错误消息。例如:
chown -f user:group file
,如果file
不存在,不会显示错误信息。 -
-v, --verbose
显示详细信息,显示更改了哪些文件的所有者和组。
例如:
chown -v user:group file
,会输出更改file
所有者和组的详细信息。 -
--from=OWNER[:GROUP]
只更改当前所有者和组与指定的所有者和组匹配的文件。
例如:
chown --from=user:group newowner:newgroup file
,只会更改当前所有者为user
且组为group
的file
。 -
--reference=REF
使用引用文件的所有者和组来更改文件。
例如:
chown --reference=ref_file file
,将会把file
的所有者和组改成与ref_file
相同的。 -
--no-preserve-root
默认情况下,如果用户不是超级用户(root),则不允许指定
/
作为文件名。此选项取消此限制。例如:
chown --no-preserve-root user:group /
,允许非root用户尝试更改根目录的所有者和组。 -
--preserve-root
强制
chown
检查是否为根用户(root),如果不是,则拒绝任何尝试更改根目录(/
)的行为。这是默认行为。 -
--help
显示帮助信息。
-
--version
显示版本信息。
使用chown
命令时,可以将所有者和组分开指定,也可以同时指定:
- 只指定所有者:
chown newowner file
- 只指定组:
chown :newgroup file
- 同时指定所有者和组:
chown newowner:newgroup file
请注意,更改文件或目录的所有者和组通常需要超级用户权限(root权限),除非更改的对象是你自己拥有的文件或目录。
4. 例子
-
更改文件所有者:
chown user1 file.txt
将 file.txt
的所有者更改为 user1
。
-
更改所有者和组:
chown user1:group1 file.txt
同时更改文件的所有者为 user1
,组为 group1
。
-
递归更改目录及其内容:
chown -R user1:group1 /path/to/directory
递归地更改目录和子文件的所有者及组。