Linux中chgrp命令
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命令更改文件或者目录的组。