我在同一组中有两个用户 1. 用户 1:数据用户 2. 用户 2:web用户 3. 组:apache
使用 setfact 为任一用户设置权限都可以递归创建目录/文件。
例如:目录 /web/foo/ 设置了什么权限/掩码(使用 setfact),以便 datauser/webuser 可以在 foo 目录下创建目录(递归)。
#datauser : mkdir -p /web/foo/datadir/
#webuser : mkdir -p /web/foo/datadir/webdir
#datauser : touch /web/foo/datadir/webdir/datafile.txt
#webuser : touch /web/foo/datadir/webfile.txt
etc...
I try with below command, but when any directory created using
webuser:apache, then datauser:apache not able to write under that.
setfacl -Rm u:webuser:rwX,d:u:webuser:rwX foo
setfacl -Rm u:datauser:rwX,d:u:datauser:rwX foo
setfacl -Rm m:rwX,d:m:rwX foo
umask 和 chmod 不起作用。
[datauser]$ mkdir foo
[datauser]$ chmod g+ws foo
[datauser]$ umask 002 foo
[datauser]$ getfacl foo
文件:foo
所有者:datauser 组:apache
标志:-s-
用户::rwx
组::rwx
其他::rx
现在使用 webuser:apache user 创建目录 [PHP : mkdir(/web/foo/browser, 0755, ture); ] 目录权限为: [datauser]$ getfacl foo/browser/ file: foo/browser/
Owner: apache
group: apache
flags: -s-
user::rwx
group::rx
other::rx
现在在浏览器目录下创建文件。权限被拒绝。
[datauser]$ touch foo/browser/command.txt
touch:无法触摸'foo/browser/command.txt':权限被拒绝
答案1
如何使用?这将在目录中chmod g+ws /web/foo
设置setgid
和位,从而使所有创建的文件的组都位于该目录中,并允许所有组用户写入该目录并在其中创建其他目录。write
apache
apache
您需要做的另一件事是更新您的,umask
以便组默认具有写入权限。因此,您应该umask 002
在启动文件中添加某个位置,以便组默认获得写入权限。