Linux - 如何获取文件系统 ACL 以允许组拥有文件夹的权限

Linux - 如何获取文件系统 ACL 以允许组拥有文件夹的权限

我有点困惑如何让它工作。

我已经使 ACL 正常工作,并且需要创建两个组:

  • github-total:组,该组中的用户对文件夹“/var/git”有读/写/执行的权限。
  • github-read:组内的用户有对文件夹“/var/git”进行读取的权限。

对于“github-total”组我做了以下事情:

作为“git”用户:

$ cd /var
$ mkdir github
$ chmod 770 github
$ ls -al
drwxrwx---+  3 git git   4096 Oct  4 21:48 github


# useradd andre -m
# passwd andre
# groupadd github-total
# usermod -a -G github-total andre
# id andre
uid=500(andre) gid=500(andre) groups=500(andre),502(github-total) context=user_u:system_r:unconfined_t
# cd /var
# setfacl -R -m group:github-total:rwx github
# setfacl -R -d -m group:github-total:rwx github
# getfacl github
file: github
owner: git
group: git
user::rwx
user:git:rwx
group::rwx
group:git:rwx
group:github-total:rwx
mask::rwx
other::---
default:user::rwx
default:group::rwx
default:group:github-total:rwx
default:mask::rwx
default:other::---

不幸的是,这对我来说不起作用,对于用户“andre”,我无法列出“/var/github”

$ cd /var/github
bash: cd: /var/github: Permission denied

我如何列出此文件夹并将组添加到 ACL?

此致,

附言:抱歉我的英语不好……

更新 1:

我发现如果我这样做ID没有与用户“andre”的参数,我得到了这个:

$ id
uid=500(andre) gid=500(andre) groups=500(andre) context=user_u:system_r:unconfined_t

组“github-total”未包含在用户“andre”的组中

如果我做:

$ id andre
uid=500(andre) gid=500(andre) groups=500(andre),502(github-total) context=user_u:system_r:unconfined_t

这是什么意思?

答案1

您的 ACL 是正确的,所以这不是问题。我认为这是 andre 的组成员身份的问题。

如果在用户登录时将其添加到组,则组成员身份只有在用户注销并重新登录后才会生效。请尝试注销并重新登录,看看是否有效。

顺便说一句,当您创建组“github-read”时,该组将需要对目录具有读取和执行权限,而不仅仅是读取权限。我不知道您是否已经知道这一点,但我认为最好还是告诉您。

答案2

SELinux 的模式是什么?如果您正在运行“强制”,则必须调整您创建的文件夹的上下文。运行命令sestatus,如果已启用,则暂时将其关闭,setenforce 0然后查看您是否可以访问该文件夹。

对于 CentOS、RedHat 或 Scientific Linux,此链接应该有帮助CentOS SELinux 维基

相关内容