你如何给多个组完全访问w / chmod? 需要使用ACL的?

首先,感谢阅读。 我已经成功地运行了LaunchAgents文件夹中的plist launchd作业。 它基本上调用一个小的shell脚本chmod的文件夹的权限。 然后我有另一个工作,调用另一个脚本,将其改回到之前的状态。

现在,我想弄清楚如何chmod文件夹/文件权限的特定组。 我意识到每个文件夹/文件都有一个属于一个组的所有者。 是的,但是我如何通过shell脚本明确授予另一组用户的权限? 这可能吗? 我也一直在读ACL,这是我应该去的路线吗?

我的脚本现在很简单:

chmod -R 777 <FOLDERNAME> 

然后回来:

 chmod -R 000 <FOLDERNAME> 

以pipe理员身份login时运行此操作。

但是,我想在理论上给予另一组的访问权:

chmod -R 777 <FOLDERNAME> <GROUPNAME> < – 哟,这就是我在想什么

你需要ACL。 首先,你的文件系统必须使用该选项进行装载。 您可以用以下选项重新安装它:

 # mount -o remount,acl /mount/point 

如果你希望这个选项是静态的(每次重新启动后都可用):

 # vi /etc/fstab #... /dev/partition /mount/point fstype defaults,acl 1 2 

这里的重要部分是选项栏中的“,acl”。 一切你可以忽略。

你需要安装acl软件包,并使用setfacl 。 设置一个目录的默认值(每个新创build的文件和子目录都有这些acls):

 # setfacl -d -mu::rwx,u:user1:rx,g::rx,g:group1:rwx,g:group2:rx,o::- directory 
  • 创build用户拥有完整的权限
  • user1只读取执行
  • 相同的默认组
  • group1已经读取执行和写入权限
  • group2读取并执行
  • 别人没有机会在这里

你现在应该在这个目录上设置权限(是的,只是剥离-d选项):

 # setfacl -mu::rwx,u:user1:rx,g::rx,g:group1:rwx,g:group2:rx,o::- directory 

请注意,如果这个目录中有任何内容,必须明确设置权限。 您可以使用find来正确设置权限(请记住,目录必须具有读取权限和执行权限才能访问/列出他们)。 为了开始这个主题,find./ -type d给你在当前位置的子目录,下面将设置每个这样的默认权限:

 # find ./ -type d -exec setfacl -d -m <acl> \{} \; 
  • <acl>应该是所需的acl
  • \{} \; 是查找的转义序列。

如果您想检查由创build的文件和目录inheritance的权限,请使用getfacl

您也可以使用-R | – recursion交换机,但是这会搞乱文件和目录的权限。