首先,感谢阅读。 我已经成功地运行了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
你现在应该在这个目录上设置权限(是的,只是剥离-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交换机,但是这会搞乱文件和目录的权限。