LDAP グループは nslcd を通じて Sudo 権限を取得します。

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サーバーには、posixGroup、posixAccount、gid、gidNumber、uid、uidNumberなどの必須属性を追加するUnixパッケージがインストールされています。

私のユーザー例は次のとおりです。 (
安全のために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グループを確認してから、そのグループにコマンドを実行するための十分な権限があることを確認する必要があります。

残念ながら、どこから始めるべきかわかりません。他のすべてはこれまでうまくいきますが、sudo権限にのみ気になります。私はユーザーgidNumberフィールドをグループgidNumberフィールドにマップしようとしましたが、ユーザーフィールドをグループフィールドにマップすることができるかどうかわかりません。

私はそうは思わない。これは、nslcdのマッピングが次のように指定されたためです。

map passwd field1 field2

passwdはnslcdにユーザーフィールドをマップする必要があることを伝えます。 passwdの代わりにグループを使用できますが、どちらも使用できません。

ベストアンサー1

申し訳ありません。この投稿は長いですが、動作しているようです。ちょうど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タイプミスがまだ残っているので、これは修正されたとは思いません。

問題が解決しました:)

おすすめ記事