linux – 使用ACL的新创建的文件文件夹的默认权限不受“unzip”之类的命令的尊重

linux – 使用ACL的新创建的文件文件夹的默认权限不受“unzip”之类的命令的尊重,第1张

概述我在为多个用户访问同一组文件设置系统时遇到问题.我已经阅读过tuts和docs并使用ACL,但还没有成功. 我的情景: 拥有多个用户,例如user1和user2,它们属于名为sharedusers的组.它们必须具有对同一组文件和目录的所有WRITE权限,例如/ userdata / sharing /中的底层. 我将文件夹的组设置为sharedusers,并将SGID设置为将所有新创建的文件/ d 我在为多个用户访问同一组文件设置系统时遇到问题.我已经阅读过tuts和docs并使用ACL,但还没有成功.

我的情景:

拥有多个用户,例如user1和user2,它们属于名为sharedusers的组.它们必须具有对同一组文件和目录的所有WRITE权限,例如/ userdata / sharing /中的底层.

我将文件夹的组设置为sharedusers,并将sgiD设置为将所有新创建的文件/ dirs设置为同一组.

ubuntu@home:/userdata$ lldrwxr-sr-x  2 ubuntu sharedusers 4096 Nov 24 03:51 sharing/

我为这个目录设置了ACL,所以我可以拥有从其父目录继承的子目录/文件的权限.

ubuntu@home:/userdata$ setfacl -m group:sharedusers:rwx sharing/ubuntu@home:/userdata$ setfacl -d -m group:sharedusers:rwx sharing/

这是我得到的:

ubuntu@home:/userdata$  getfacl sharing/# file: sharing/# owner: ubuntu# group: sharedusers# flags: -s-user::rwxgroup::r-xgroup:sharedusers:rwxmask::rwxother::r-xdefault:user::rwxdefault:group::r-xdefault:group:sharedusers:rwxdefault:mask::rwxdefault:other::r-x

好像我在里面用新文件创建新文件夹并且权限是正确的.

ubuntu@home:/userdata/sharing$mkdir a && cd aubuntu@home:/userdata/sharing/a$touch a_testubuntu@home:/userdata/sharing/a$ getfacl a_test # file: a_test# owner: ubuntu# group: sharedusersuser::rw-group::r-x                  #effective:r--group:sharedusers:rwx       #effective:rw-mask::rw-other::r--

如您所见,共享用户组具有有效的权限rw-.

但是,如果我有一个zip文件,并使用unzip -q命令解压缩文件夹共享中的文件,则解压缩的文件夹没有组写入permisison.因此,来自组共享用户的用户无法修改这些提取的文件夹下的文件.

ubuntu@home:/userdata/sharing$ unzip -q Joomla_3.0.2-Stable-Full_Package.zip ubuntu@home:/userdata/sharing$ lldrwxrwsr-x+  2 ubuntu sharedusers    4096 Nov 24 04:00 a/drwxr-xr-x+ 10 ubuntu sharedusers    4096 Nov  7 01:52 administrator/drwxr-xr-x+ 13 ubuntu sharedusers    4096 Nov  7 01:52 components/

您可以找到文件夹a(之前创建)和解压缩提取的文件夹管理员之间的权限差异.以及管理员内部文件的ACL:

ubuntu@home:/userdata/sharing$ getfacl administrator/index.PHP # file: administrator/index.PHP# owner: ubuntu# group: ubuntuuser::rw-group::r-x                #effective:r--group:sharedusers:rwx     #effective:r--mask::r--other::r--

它也有ubuntu组,而不是预期的sharedusers组.

有人可以解释一下这个问题并给我建议吗?先感谢您!

解决方法 此行为是ACL_MASK正在工作.看看index.PHP文件,理论上它确实得到了预期的权限组:sharedusers:rwx,但实际上是另一个#effective:r–.这是因为理论值与掩码:: r–进行异或,以给出有效值,这是你用ls -l(或ll)看到的.

现在,mask :: r–的ACL_MASK实际上是ACL的安全功能,使您无法在不打算访问的地方进行访问:
添加现有文件(而不是创建新文件)时,ACL会将ACL_MASK设置为文件的前一个值,在本例中为r–.

这不仅限于解压缩.无论何时添加文件而不是创建文件,这都适用.例如,您可以尝试使用cp或tar,最终会得到相同的结果.

实际上文档(man 5 acl)在OBJECT CREATION和DEFAulT ACL段落中声明默认值仅适用于使用以下任何系统调用创建的对象:creat(),mkdir(),mknod(),mkfifo()或者open().

因此,我无法为您提供良好的解决方案,因为您将无法使用ACL默认机制来执行您所做的事情.

总结

以上是内存溢出为你收集整理的linux – 使用ACL的新创建的文件/文件夹的默认权限不受“unzip”之类的命令的尊重全部内容,希望文章能够帮你解决linux – 使用ACL的新创建的文件/文件夹的默认权限不受“unzip”之类的命令的尊重所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/1036717.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存