Linux中的Chgrp命令(更改组)

在Linux中,每个文件都与一个所有者和一个组相关联,并具有确定哪些用户可以读取,写入或执行该文件的权限。

本文介绍了如何使用 chgrp 命令更改给定文件的组所有权。

chgrp 命令语法

chgrp 命令采用以下形式:

chgrp [OPTIONS] GROUP FILE..
  • GROUP,新组的名称或组ID(GID)。 数字GID必须以开头 + 符号。
  • FILE..,一个或多个文件的名称。

不像 chown 该命令可让您更改用户和组的所有权, chgrp 仅更改组所有权。

要找出文件属于哪个组,请使用 ls -l 命令。

普通用户只有在拥有文件的情况下才能更改文件组,并且只能更改为他们所属的组。 管理用户可以更改所有文件的组所有权。

如何更改文件组所有权

要更改文件或目录的组所有权,请调用 chgrp 命令,后跟新的组名和目标文件作为参数。

例如,更改文件组 filenamewww-data 您将运行:

chgrp www-data filename

如果您以非特权用户身份运行该命令,则会收到“不允许操作”错误。 要取消显示此错误消息,请使用 -f 选项。 默认情况下,成功后, chgrp 不产生任何输出并返回零。

您还可以将多个文件作为参数传递给 chgrp 命令:

chgrp www-data file1 file2 dir1

使用 -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/file1chgrp 将更改符号链接指向的文件或目录的所有权:

chgrp www-data symlink1

很有可能您会收到“无法取消引用’symlink1’:权限被拒绝”错误,而不是更改目标组。

发生错误是因为默认情况下,在大多数Linux发行版中,符号链接都受到保护,并且您无法在目标文件上进行操作。 该选项在 /proc/sys/fs/protected_symlinks1 意味着启用和 0 禁用的。 我们建议不要禁用符号链接保护。

要更改符号链接本身的组所有权,请使用 -h 选项:

chgrp -h www-data symlink1

如何递归更改组所有权

要递归更改给定目录下所有文件和目录的组所有权,请使用 -R 选项。

例如,以下命令将更改目录下所有文件和目录的所有权 /var/www 目录到 www-data 组:

chgrp -R www-data /var/www

指定递归选项时 chgrp 不会遍历符号链接,也不会更改符号链接。 要更改符号链接的群组所有权,请传递 -h 选项:

chgrp -hR www-data /var/www

递归更改组所有权时可以使用的其他选项是 -H-L

如果参数传递给 chgrp 命令是一个符号链接, -H 选项将导致命令遍历它。 -L 告诉 chgrp 遍历每个符号链接到遇到的目录。 在大多数情况下,不应使用这些选项,因为这可能会破坏系统或造成安全风险。

结论#

chgrp 更改文件,目录和符号链接的组所有权。

虽然可以使用比较流行 chown 命令更改组, chgrp 具有易于记忆的简单语法。

有关的更多信息 chgrp 命令,请访问chgrp手册页或键入 man chgrp 在您的终端中。

如果您有任何疑问或反馈,请随时发表评论。

chgrp终端

Sidebar