如何使用 'chmod' 指定组

36 unix permissions

我被要求向另一个用户的主文件夹中的目录添加 group-wrx 权限。

我相信我应该chmod 771 -R directoryname在父目录中运行。我找不到如何指定要向哪个组授予这些权限。我个人在许多组中,并且在一群我不知道作为 root 的人中。

以防万一,系统运行的是Red Hat Linux 5.4。

Jon*_*ler 41

chmod()系统调用,并通过扩展chmod程序,不影响该组的文件或目录的(或其他类型的文件:块特殊的,个性独特,插座,...符号链接是一种特殊情况的东西)。因此,授予权限的组将是文件或目录所属的组。

要添加组rwx权限,您应该使用:

chmod -R g+rwx DirectoryName
Run Code Online (Sandbox Code Playgroud)

但是,这会为每个文件和每个目录添加权限,并不是所有文件都应该是可执行的。就我个人而言,如果有人为我的所有(或任何)目录提供组写权限,我会非常不高兴,但那是另一回事了。

要仅影响目录,请find改用:

find DirectoryName -type d -exec chmod g+rwx {} +
Run Code Online (Sandbox Code Playgroud)

+符号是 POSIX 2008;虽然 Linux 支持,但并非所有 Unix 系统都支持它。)

  • 如果您使用+X(大写X),则仅当文件是目录或已具有某些用户的执行权限时,您才会添加执行(或“搜索”)权限。 http://linux.die.net/man/1/chmod (2认同)

小智 13

ext文件系统上的每个文件都有:

  1. 所有者用户
  2. 业主组
  3. 此用户、此组和其他所有人的权限。

如果您在文件上设置 rwx 组权限,则只有该文件的所有者组才能读/写/执行它。但是,您可以通过以下方式更改用户和所有者:

chown username file1 file2 ...
chown -R username somedir
chgrp groupname file1 file2 ....
chgrp -R groupname somedir
chown username:groupname file1 file2 ...
Run Code Online (Sandbox Code Playgroud)

扩展文件系统权限有不同的实现,即Mac OS X 上的ACL(访问控制列表)。