Linux chgrp命令更改文件目录所属组

在Linux 每个文件都与一个所有者和一个组相关联,并具有确定哪些用户可以读取

4 min read
By myfreax
Linux chgrp命令更改文件目录所属组
Linux chgrp命令更改文件目录所属组

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

本教程介绍如何在Linux使用chgrp命令更改命令更改文件目录所属组。包括chgrp命令语法。

更改文件组的所有权,符号链接组的所有权,递归更改组所有权以及使用GID或者组名来更改组的所有权。

chgrp 命令语法

chgrp命令的语法形式是chgrp [OPTIONS] GROUP FILE..GROUP是组的名称或组ID也就是GID,GID必须以+符号作为前缀。FILE..一个或多个文件的名称。

与chown不同的是,chown命令允许您更改文件目录的所有者,chgrp更改文件目录组的所有权。

要找出文件的所属组,请运行使用ls命令ls -al。只有root用户或具有sudo权限的用户才能更改文件目录的所属组。

chgrp 命令更改文件目录组的所有权

要更改文件目录的所有组,请运行chgrp命令,后跟用户组的名称和目标文件作为参数。

例如sudo chgrp www-data filename命令修改filename文件的所属组为www-data

如果您以没有sudo权限的用户运行命令,则会收到Operation not permitted不允许操作的错误消息。

默认情况下,chgrp不产生任何输出成功时并返回退出代码0。要验证是否成功修改,请运行使用ls命令ls -al

sudo chgrp www-data filename
ls -al filename

您还可以将多个文件或者目录作为参数传递给chgrp命令,使用-v选项获取正在处理的文件信息。

也可以使用组ID/GID代替组名。例如命令sudo chgrp +1000 filename修改文件组的所有权为GID 1000。

chgrp www-data file1 file2 dir1
chgrp -v www-data file1 file2
chgrp +1000 filename
changed group of 'file1' from nginx to www-data
group of 'file2' retained as www-data

chgrp 命令修改符号链接所属组

在不进行递归修改所数组时,chgrp命令的默认行为是修改符号链接的目标文件所属组,而不是符号链接本身。

例如命令sudo chgrp www-data symlink1修改软链接symlink1的目标文件所属组,软链接文件所属组不会被修改。

sudo chgrp www-data symlink1

在修改文件目录所属组时,你很有可能您会收到错误消息cannot dereference ‘symlink1’: Permission denied。

发生错误是因为在大多数Linux发行版的符号链接都受到保护并且您无法在目标文件进行操作。

要启用或者禁用目标符号链接的保护,可以在/proc/sys/fs/protected_symlinks文件指定。1表示启用,0表示禁用。我们建议不要禁用符号链接保护。

当遇到受保护符号链接时,可以尝试使用chagrp命令的-h选项,该选项将会尝试 修改符号链接文件的所有权然后再修改目标的所数组。

sudo chgrp -h www-data symlink1

chgrp 命令递归更改文件目录所属组

要递归更改所有文件和目录组的所有权,请使用-R选项。如果指定-R选项chgrp命令不会遍历符号链接,也不会更改符号链接目标文件。

但你可以使用chgrp命令的-h选项修改符号链接目标文件组的所有权。如果符号链接的目标文件是一个目录,你还需要指定-H选项遍历目录。

除此之外你还需要使用-L选项遍历链接到目录的每个符号链接,在大多数情况,不建议使用-L-H选项,因为这可能会导致系统混乱或带来安全风险。

chgrp -R www-data /var/www
chgrp -hR www-data /var/www #include symlinks

结论

chgrp命令更改文件,目录和符号链接目标文件目录所数组。尽管您可以使用更流行的chown命令来更改文件目录的所属组。

chgrp命令具有易于记忆的简单语法。如果您有任何问题或反馈,请随时发表评论。

Related Articles