如何用chmod指定组?


34

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

我相信我应该做的是chmod 771 -R directoryname在父目录中运行。我找不到任何地方的管子是如何指定哪些,我想给这些权限组。我个人有很多小组,一堆我根本不知道。

万一重要,系统将运行Redhat 5.4。

Answers:


37

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

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

chmod -R g+rwx DirectoryName

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

仅影响目录,请find改用:

find DirectoryName -type d -exec chmod g+rwx {} +

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


1
如果您使用+ X(大写X),则仅在文件是目录或已经具有某些用户的执行权限的情况下才添加执行(或“搜索”)权限。linux.die.net/man/1/chmod
Dave

@Dave:chmod +X似乎在BSD(Mac OS X)上也受支持。仔细检查POSIX 毕竟chmod表明这+X是POSIX功能:如果文件是目录,或者当前(未修改的)文件模式位至少具有以下一项,则烫发符号X表示文件模式位的执行/搜索部分。执行位(S_IXUSR,S_IXGRP或S_IXOTH)置1。如果该文件不是目录,并且当前文件模式位中未设置任何执行位,则将忽略该值。请注意以下基本原理。
乔纳森·莱夫勒

12

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 ...

扩展的文件系统特权有不同的实现方式,即Mac OS X上的ACL(访问控制列表),但是由于我不是Linux专家,因此您可能应该在Server Fault中询问。


“因此,如果您在文件上设置rwx组权限,则只有该文件的所有者组才能读取/写入/执行它”,这可能会误导您,首先,如果您是所有者用户,当然如果既不是所有者用户,也不是所有者组中的其他用户,则以所有者用户规则为准。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.