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
問題
どういうわけか、要求しているユーザー名を取得し、それが属するLDAPグループを確認し、そのグループの権限がコマンドを実行するのに十分かどうかを確認するようにSudoに指示する必要があります。
残念ながら、どこから始めればいいのかわかりません。他のすべてはこれまでのところ機能し、私は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のタイプミスがまだあったので、それが修正であるとは思いませんでした。
問題が解決しました :)
私は ローカルグループをユーザーに割り当てる からpam_groupを使用して同じ機能を取得しました。 /etc/security/groups.conf
に次の行を追加しました
*;*;%administrators;Al0000-2400;adm,Sudo,lpadmin
したがって、LDAPグループadministrators
に属するLDAPユーザーは、ボックスのローカルadm
、Sudo
、およびlpadmin
グループにマッピングされます。何かを逃していない限り、Sudo-ldap
をインストールする必要があるよりも簡単に思えますか?