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 のタイプミスがまだ残っていたため、これが修正だとは思っていませんでした。
問題が解決しました :)
答え2
私は一緒に行きましたユーザーにローカルグループを割り当てるpam_groupを介して同じ機能を実現します。/etc/security/groups.conf
次の行を追加しました
*;*;%administrators;Al0000-2400;adm,sudo,lpadmin
したがって、LDAP グループに属するすべての LDAP ユーザーは、ボックス上のローカルの 、、およびグループadministrators
にマップされます。 をインストールするよりも簡単なようですが、何か見落としているのでしょうか?adm
sudo
lpadmin
sudo-ldap