Linux中chgrp命令

时间:2020-03-05 15:26:11  来源:igfitidea点击:

Linux中的chgrp命令是什么?

如果我们使用了chmod计算器,那么我们将了解Linux中的文件权限,也可能会了解组所有权。

Linux中的chgrp命令用于更改文件或者目录的组。

它代表“变更组”‘change group’。

chgrp命令的语法为:

chgrp [options] groupname file

Linux中chgrp命令的5个实用示例

让我们看看如何通过这些有用的示例使用chgrp命令。

1.更改文件/目录组

这是chgrp的最简单的方法,也许是最突出的方法。
要更改文件或者目录的组所有权,可以按以下方式使用chgrp命令:

chgrp group_name file_name

我们还可以一次更改多个文件的组:

chgrp group_name file1 file2 file3

我们不必与文件位于同一目录。
我们也可以提供绝对或者相对路径。

我们当前的特权很重要。
如果尝试将组更改为admin或者root,则可能需要超级用户权限。
在这种情况下,我们应该会看到“不允许操作”错误。

Tip: chgrp supports tab completion. Just type a few letters for the group name and hit tab to see what groups exist with those letters.

2.递归使用chgrp更改所有文件和子目录的分组

默认情况下,如果将chgrp与目录一起使用,它将仅更改目录的组。
文件和子目录保持不变。

如果要更改目录和子目录中所有文件的组,可以使用递归选项-R。

chgrp -R group_name path_to_directory

3.知道我们是否成功更改了组

我们可以使用“ ls -l”命令来确定是否更改了组。
但是,如果我们一次更改了几个文件的组,就像使用上一节中看到的递归方法一样,该怎么办?

chgrp提供了一种详细模式,可以告诉我们chgrp命令执行了哪些操作。
我们可以使用-v选项在详细模式下运行chgrp命令。

chgrp -vR igi samplechanged group of 'sample/agatha.txt' from sudo to igi
group of 'sample/a.text' retained as igi
changed group of 'sample/text/sherlock.txt' from sudo to igi
changed group of 'sample/text' from sudo to igi
changed group of 'sample' from sudo to igi

我们可能会注意到,详细模式还会告诉我们文件组是否保持不变。
如果只想查看组所有权实际上发生更改的文件的此信息,则可以使用选项-c。

Tip: You can use chgrp to give execute permission to a command (in bin or in init) or so that the command can be executed by all users belonging to a specific group (instead of root).

4.更改组所有权,使其与参考文件相同

想象一下,我们想要将文件A的组更改为与文件B相同的组。
我们将如何做?
我们可以查找文件B的组,然后将chgrp命令与文件B的组名一起使用。

好吧,这是做到这一点的一种方式。
但是,chgrp提供了一种专用的方式,可以基于参考文件来更改组,而不是显式使用组的名称。

chgrp --reference=file2 file1

如果要编写脚本,其中文件的组所有者需要更改为参考文件,这将特别有用。

5.将chgrp与符号链接一起使用

默认情况下,如果将chgrp命令与符号链接一起使用,则更改的是引用文件的组所有者,而符号链接组保持不变。

例如,这是链接及其引用文件的状态:

ls -l agatha.txt link.txt 
-r--r--rw- 1 igi igi 457 Aug 10 11:55 agatha.txt
lrwxrwxrwx 1 igi igi  10 Aug 19 10:19 link.txt -> agatha.txt

现在,如果我们像这样更改符号链接的组:

chgrp sudo link.txt

符号链接组将保持不变,而引用文件的组将被更改。

ls -l agatha.txt link.txt 
-r--r--rw- 1 igi sudo     457 Aug 10 11:55 agatha.txt
lrwxrwxrwx 1 igi igi  10 Aug 19 10:19 link.txt -> agatha.txt

如果只想更改符号链接的组所有权而不是所引用的文件本身,则可以使用-h选项。

chgrp -h sudo link.txt

但是,我不建议这样做,因为在Linux中,链接权限没有意义。
所引用的文件在这里很重要。

可以使用chown更改组时为什么使用chgrp?

我们也可以使用chown命令来更改文件组,但是通过chown命令仅更改组是不标准的。
同样,为此目的使用chown可能会造成混淆。
chgrp非常简单,建议使用chgrp命令更改文件或者目录的组。