问题: CentOS 在文件夹或文件上使用 ACL 时似乎不考虑次要组
设想:CentOS 6 基本安装,使用 LDAP 帐户对用户进行身份验证。我正在尝试在某些文件夹上设置相当复杂的权限。我已确保文件系统已安装 ACL 支持,并确定 LDAP 用户能够正确登录。
重现步骤:
作为测试,我有一个简单的文件夹结构。该文件夹test1
由 root 拥有并具有 770 个权限,我已向该文件夹添加了另一个组。setfacl -m g:testgroup:rwx test1/
该文件夹的 getfacl 输出如下所示:
getfacl: Removing leading '/' from absolute path names
# file: share/test1/
# owner: root
# group: root
user::rwx
group::rwx
group:testgroup:rwx
mask::rwx
other::---
用户andrew
属于 domain 组和 testgroup,如图所示groups andrew
。组 domain 是用户的主要组。如果用户 andrew 尝试读取 test1 中的任何内容,则会显示权限被拒绝错误。但是,如果将用户的主要组更改为 testgroup,则用户可以与文件夹的内容进行交互。
谁能告诉我这里发生了什么,以及是否有办法获得预期的行为?
编辑这似乎是与 LDAP 相关的问题。我刚刚使用本地用户帐户进行了测试,一切正常。
答案1
正如您所说,这个问题与使用 LDAP 来存储用户信息有关。您的 Centos6 计算机的配置方式与 LDAP 服务器不兼容,因此当它尝试获取用户所属的补充组列表时,它找不到任何内容。
不幸的是,关于如何解释与 POSIX 组相关的 LDAP 属性,有几种标准 - rfc2307、rfc2307bis、IPA
Centos 6 使用 SSSD 来管理与远程目录和身份验证数据库的交互。SSSD 的默认设置是使用 rfc2307。
您可能会发现您的 LDAP 服务器正在使用 rfc2307bis。我们有一个 Centos 5 目录服务器,它默认配置为 rfc2307bis。更复杂的是,我们的 C5 目录使用属性“uniqueMember”或“member”来表示组成员。
要修复此问题,请编辑 /etc/sssd/sssd.conf 并添加以下行:
ldap_schema = rfc2307bis
ldap_group_member = uniqueMember
您可能还想参考以下内容:
答案2
你有没有尝试过看看数字用户所属组的 ID 和目录的 ACL 是什么?尝试将getfacl -n test1
列出的组与 的输出进行比较id -G andrew
。查看是否存在任何差异并尝试解决它。