本文介绍在Linux系统中使用Chgrp命令的方法:更改组语法、更改文件组所有权、如何更改符号链接组所有权、如何递归更改组所有权。在Linux中,每个文件都与所有者和组相关联,并具有确定哪些用户可以读取、写入或执行文件的权限,chgrp命令更改给定文件的组所有权,本文介绍了如何使用chgrp。
chgrp命令语法 chgrp命令采用以下形式: chgrp [OPTIONS] GROUP FILE.. 1、GROUP,新组的名称或组ID(GID),数字GID必须以+符号为前缀。 2、FILE ..,一个或多个文件的名称。 与允许你更改用户和组所有权的chown命令不同,chgrp仅更改组所有权,参考在Linux系统中使用chown命令的示例。 要找出文件所属的组,请使用ls -l命令。 只有具有sudo权限的root用户或用户才能更改文件的组所有权。
如何更改文件组所有权 要更改文件或目录的组所有权,请调用chgrp命令,后跟新组名称和目标文件作为参数。 例如,要将文件filename的组更改为www-data,你将运行: $ chgrp www-data filename 如果你使用非特权用户运行该命令,则会出现“Operation not permitted”错误,要抑制错误,请使用-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 即 将'file1'组从nginx更改为www-data,'file2'组保留为www-data。 要仅打印有关组实际更改的文件的信息,请使用-c,而不是-v。 可以使用数字组ID(GID)代替用户名,以下示例将文件的组所有权更改为GID为1000的新组: $ chgrp +1000 filename
如何更改符号链接组所有权 如果不以递归方式运行,则chgrp命令的默认行为是更改符号链接目标的组所有权,而不是符号链接本身。 例如,如果你尝试更改指向/opt/file1的符号链接symlink1的组,则chgrp将更改符号链接指向的文件或目录的所有权: $ chgrp www-data symlink1 可能的是,将提示“symlink1’: Permission denied”错误,而不是更改目标组。 发生此错误是因为默认情况下,大多数Linux发行版上的符号链接都受到保护,你无法对目标文件进行操作,此选项在/proc/sys/fs/protected_symlink中指定,1表示启用,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命令查看。
相关主题 |