在 Linux 中,每个文件都与一个所有者和一个组相关联,并具有确定哪些用户可以读取、写入或执行该文件的权限。
本文介绍了如何使用chgrp
命令更改给定文件的组所有权。
chgrp
命令语法#
The chgrp
命令采用以下形式:
chgrp [OPTIONS] GROUP FILE..
-
GROUP
、新组的名称或组 ID (GID)。数字 GID 必须以前缀+
symbol.
-
FILE..
,一个或多个文件的名称。
不像chown允许您更改用户和组所有权的命令,chgrp
仅更改组所有权。
要找出文件属于哪个组,请使用ls -l命令。
仅当普通用户拥有该文件并且只能更改为他们所属的组时,才可以更改该文件的组。管理用户可以更改所有文件的组所有权。
如何更改文件组所有权#
要更改文件或目录的组所有权,请调用chgrp
命令后跟新组名称和目标文件作为参数。
例如,更改文件的组filename
to www-data
你会运行:
chgrp www-data filename
如果您使用非特权用户运行该命令,您将收到“不允许操作”错误。要抑制错误消息,请使用以下命令调用该命令-f
选项。默认情况下,成功后,chgrp
不产生任何输出并返回零。
您还可以将多个文件作为参数传递给chgrp
命令:
chgrp www-data file1 file2 dir1
Use the -v
获取有关正在处理的文件的信息的选项:
chgrp www-data file1 file2
changed group of 'file1' from nginx to www-data
group of 'file2' retained as www-data
要仅打印有关组实际更改的文件的信息,请使用-c
代替-v
.
可以使用数字组 ID (GID) 代替用户名。以下示例将文件的组所有权更改为 GID 为 1000 的新组:
chgrp +1000 filename
如何更改符号链接组所有权#
当不递归操作时,默认行为chgrp
命令是更改符号链接目标的组所有权,而不是符号链接他们自己。
例如,如果您尝试更改符号链接的组symlink1
这指向/opt/file1
, chgrp
将更改符号链接指向的文件或目录的所有权:
chgrp www-data symlink1
您很可能不会更改目标组,而是会收到“无法取消引用‘symlink1’:权限被拒绝”错误。
发生该错误的原因是,默认情况下,在大多数 Linux 发行版上,符号链接受到保护,并且您无法对目标文件进行操作。该选项指定于/proc/sys/fs/protected_symlinks
. 1
意味着已启用并且0
禁用。我们建议不要禁用符号链接保护。
要更改符号链接本身的组所有权,请使用-h
option:
chgrp -h www-data symlink1
如何递归更改组所有权#
要递归更改给定目录下所有文件和目录的组所有权,请使用-R
option.
例如,以下命令将更改该目录下所有文件和目录的所有权/var/www
目录到www-data
group:
chgrp -R www-data /var/www
当指定递归选项时chgrp
不会遍历符号链接,也不会对符号链接进行任何更改。要更改符号链接的组所有权,请传递-h
option:
chgrp -hR www-data /var/www
递归更改组所有权时可以使用的其他选项是-H
and -L
.
如果参数传递给chgrp
命令是一个符号链接,-H
选项将导致命令遍历它。-L
tells chgrp
遍历每个符号链接到遇到的目录。在大多数情况下,您不应使用这些选项,因为这可能会弄乱您的系统或造成安全风险。
结论#
chgrp
更改文件、目录和符号链接的组所有权。
虽然您可以使用更流行的chown
更改组的命令,chgrp
语法简单,易于记忆。
欲了解更多信息chgrp
命令,访问chgrp人页面或类型man chgrp
在您的终端中。
如果您有任何问题或反馈,请随时发表评论。