ldap 組通過 nslcd 的 Sudo 權限
我在 MS ActiveDirectory 到 Debian LDAP 身份驗證/授權設置中的 sudo 權限有問題。
到目前為止
,我已經通過 ldaps 使用 libpam-ldap 配置了 nslcd,並且 ssh 登錄效果很好。
getent passwd myuser myuser:*:10001:10015:myuser:/home/myuser:/bin/bash
在我的 ActiveDirectory 伺服器上,安裝了 Unix 包,它添加了必要的屬性,如 posixGroup、posixAccount、gid、gidNumber、uid、uidNumber 等。
我的範例使用者如下所示:(
為了安全起見,我選擇 10000+)
cn: myuser uid: myuser uidNumber: 10015 gidNumber: 10000
我可以通過將以下內容添加到 /etc/nslcd.conf 來限制 SSH 登錄
filter passwd (&(objectClass=posixAccount)(|(memberOf=CN=group1,OU=groups,DC=domain,DC=com)(memberOf=CN=group2,OU=groups,DC=domain,DC=com)))
這指定只有具有 objecClass=posixAccount 和組 group1 或 group2 的使用者才能登錄。
到現在為止還挺好。但是,我不能告訴 sudo 使用這些組。
這是我
在 /etc/sudoers 中嘗試過的
// This one works, but only because the user has gidNumber=10000 set. // It doesn't matter if a group with this ID actually exist or not. // So it's not really permission by LDAP group. %#10000 ALL=(root) ALL // This is what I want, but it doesn't work. %group1 ALL=(root) ALL
問題
不知何故,我需要告訴 sudo 獲取請求的使用者名,檢查它所屬的 ldap-groups,然後查看該組的權限是否足以執行命令。
不幸的是,我不知道從哪裡開始。到目前為止,其他一切都有效,我只被 sudo 權限困住了。我考慮過將使用者 gidNumber 欄位映射到組 gidNumber 欄位,但我不知道是否可以將使用者欄位映射到組欄位。
我不這麼認為,因為 nslcd 中的映射是這樣指定的
map passwd field1 field2
passwd 告訴 nslcd 它必須映射使用者欄位。我可以使用組而不是 passwd,但不能同時使用它們。
很抱歉這篇文章很長,但它似乎有效。我只是在 sudoers 文件中有錯字。我花了很長時間才找到它,因為語法仍然正確,但我無法執行任何命令。
但是,它現在正在工作。
// Problem was that one ALL was missing, allowing me to execute no root cmds. %group1 ALL=(root) !/bin/su // Fixed it %group1 ALL=(root) ALL, !/bin/su
更新:我意識到有點晚,但我也在 /etc/nsswitch.conf 中更改了以下內容
sudoers: ldap files
我只是不認為這是修復,因為我仍然有上面提到的 sudoers 錯字。
問題解決了 :)