系统是 ArchLinux,我正在使用 nss-pam-ldapd (0.8.13-4) 连接到 ldap。
相关配置文件:
我在 LDAP 中拥有用户和一些组:
[root@kain tmp]# getent group
<localgroups snipped>
dkowis:*:10000:
mp3s:*:15000:rkowis,dkowis
music:*:15002:rkowis,dkowis
video:*:15003:transmission,rkowis,dkowis,sickbeard
software:*:15004:rkowis,dkowis
pictures:*:15005:rkowis,dkowis
budget:*:15006:rkowis,dkowis
rkowis:*:10001:
我有一些 setgid 的目录,video
以便视频组保留,并且它们配置为 g=rwx,以便video
组内的成员可以对它们进行写入:
[root@kain video]# ls -ld /srv/video
drwxrwxr-x 8 root video 208 Oct 19 20:49 /srv/video
但是,该组的成员dkowis
不能写入该目录:
[root@kain video]# groups dkowis
mp3s music video software pictures dkowis
dkowis 所在的群组总数有 7 个,我在这里删除了一些。
[dkowis@kain wat]$ cd /srv/video
[dkowis@kain video]$ touch something
touch: cannot touch 'something': Permission denied
[dkowis@kain video]$ groups
dkowis mp3s music video software pictures
我不知道为什么我的组出现在 中getent groups
,但我的文件系统权限没有得到尊重。我尝试在 中创建一个新目录/tmp
并将其组权限设置为 rwx,然后尝试在其中写入文件,但不起作用。唯一起作用的情况是,如果我将其完全打开并允许 o=rwx。这显然不是我想要的,我无法弄清楚我缺少的部分是什么。
提前致谢。
编辑:停止 nscd 也没有任何效果。这似乎不是缓存问题。
编辑:有一点实验性:
本地定义的组工作正常,这似乎只影响 LDAP 组,添加到 /etc/group:
test:x:15007:dkowis
mkdir /tmp/wat
chgrp test /tmp/wat
chmod g+rws /tmp/wat
su - dkowis
cd /tmp/wat
touch something
[dkowis@kain wat]$ ls -la
total 0
drwxrwsr-x 2 root test 60 Oct 22 11:26 .
drwxrwxrwt 8 root root 160 Oct 22 11:26 ..
-rw-r--r-- 1 dkowis test 0 Oct 22 11:26 something
答案1
您正遇到命名空间冲突。
默认情况下/etc/nsswitch.conf
配置为首先查看文件,然后查看外部源
group: files ldap
。
这意味着来自的视频组/etc/group
将在 ldap 中的视频组之前匹配。运行 即可看到getent group video
。