Permissions

ldap 組通過 nslcd 的 Sudo 權限

  • September 13, 2015

我在 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 錯字。

問題解決了 :)

引用自:https://unix.stackexchange.com/questions/129079