我基本上想要做的就是能够在Samba共享上从Windows的某些目录设置SGID(setgid)。 提醒:在设置了SGID的目录中创build的文件和目录inheritance父目录的主要组。
我有一个需要访问与他们所属的项目相关的文件的几十个小组的环境。 由于项目组和成员本身的成员经常发生变化,所以我想尽可能地把权限设置给组长。 虽然pipe理小组成员是很容易的(GOSA特权代表团照顾好了这一点),我正在努力与文件权限。
注意:组和其他类似层次的数量很大,因此为每个组或层次创build不同的共享是行不通的(Windows中可能的挂载点数量是有限的,使用UNCpath不幸也是不可能的)。
共享中的文件夹如下所示:
/共享根
+ - 层次1
+ - 层次2
| ...
+ - 层次结构20
+ - 项目
+ - 项目A
| + - dir A
| + - 文件
+ - 项目B
+ - ...
+ - 项目Z
samba( acl group control )的一个很好的function允许我允许拥有该目录或文件的主要组的成员编辑它的权限(与smb.conf中的常规:owner,root和“admin users”不同)。
所以,当我有这样一个文件夹(来自getfacl POSIX ACL):
#文件:项目A #所有者:根 #group:proj-a-adm #flags:-s- 用户:: RWX 组:: RWX 组:域\ 040Users:RX 组:PROJ-A:RWX 面具:: RWX 其他:: - - 默认:用户:: RWX 默认:组:: RWX 默认:组:域\ 040Users:RX 默认:组:PROJ-A:RWX 默认:面膜:: RWX 默认:其他:: ---
group proj-a-adm可以编辑这个目录的权限(以及所有在其中创build的目录和文件),而proj-a组的成员可以自己修改文件,但是不能修改这些文件的权限。 Domain Users只能读取其中的文件。
当创build新项目时, root用户需要在命令行上运行chmod g+s projects/project\ AA 。
在使用Windows文件权限窗口创build新项目之后,我可以编辑文件和文件夹的权限,但没有问题,但创build新项目文件夹需要在shell中运行一个相当黑客的命令。
A)编写一个小的Web表单和一个小脚本,为项目创build一个组和一个目录。
B)写一个小的Windowsbatch file,将通过SSH做同样的事情。 你可以使用cygwin项目中的ssh客户端或者一些本地的windows ssh客户端。