LoginSignup
1
1

More than 1 year has passed since last update.

LDAPで快適Linux環境 #6 sudoの設定

Last updated at Posted at 2022-11-29

この記事は2020年に今は無き別サービスに投稿した記事を、今更Qiitaに再投稿したものです。

前回はクライアントからLDAPアカウントでログインするところまでいきました。今回はユーザーをごとの権限を管理するために、sudoとLDAPを連携させていきます。

サーバーの設定

必要なschemaファイルを取り寄せるため、sudo-ldapをインストールします。sudoが削除されて置き換えられますが、機能に不足は生じません。schemaファイルさえ手に入ればサーバーにsudo-ldapは不要になるので、sudoをインストールし直してもよいです。

root@server:~# apt install sudo-ldap

sudo-ldapをインストールすると、/usr/share/doc/sudo-ldap/schema.OpenLDAPが生成されます。このままではわかりにくいので、/etc/ldap/schemaへコピーしsudo.schemaにファイル名を変更します。

root@server:~# cp /usr/share/doc/sudo-ldap/schema.OpenLDAP /etc/ldap/schema/sudo.schema

sudo.confを作成し、以下の内容を記述します。

sudo.conf
include /etc/ldap/schema/sudo.schema

これをldifファイルに変換し、サーバーに読み込ませます。

root@server:~# slaptest -f sudo.conf -F /etc/ldap/slapd.d

autofsのときと同様、所有者をopenldap:openldapに変更します。

root@server:~# chown openldap:openldap /etc/ldap/slapd.d/cn=config/cn=schema/sudo.ldif

sudoers.ldifを新規作成し、以下の内容を記述します。

root@server:~# vi sudoers.ldif

dn: ou=sudoers,dc=example,dc=local
objectClass: organizationalUnit
ou: sudoers

dn: cn=default,ou=sudoers,dc=example,dc=local
objectClass: top
objectClass: sudorole
cn: default
sudoOption: ignore_local_sudoers
sudoUser: ALL
sudoCommand: /sbin/shutdown
sudoHost: ALL

dn: cn=admin,ou=sudoers,dc=example,dc=local
objectClass: top
objectClass: sudorole
cn: admin
sudoOption: ignore_local_sudoers
sudoUser: %admin
sudoCommand: ALL
sudoHost: ALL

sudoの設定を格納するためにdc=example,dc=localの下にou=sudoersを作成します。ALLとすることで全てのユーザー、コマンド、ホストをそれぞれ指定できます。sudoUser%[グループ名]とするとグループを指定できます。
cn=defaultでは、全てのユーザーが全てのホストで/sbin/shutdownを実行できるように許可しています。cn=adminでは、グループadminに所属するユーザーに全てのコマンドを実行する許可を与えています。工夫がここで活きました。
以下のコマンドでサーバーに適用します。

root@server:~# ldapadd -x -D cn=admin,dc=example,dc=local -W -f sudoers.ldif

クライアントの設定

クライアントにもsudo-ldapをインストールします。こちらは削除してはいけません。

root@client:~# apt install sudo-ldap

インストールすると、/etc/sudo-ldap.confが生成されます。コメントアウトを解除しつつ、以下を記述します。

root@client:~# vi /etc/sudo-ldap.conf

BASE            dc=example,dc=local
URI             ldap://192.168.x.x
sudoers_base    ou=sudoers,dc=exapmle,dc=local

/etc/nsswitch.confの最終行に以下のように追記します。

root@client:~# vi /etc/nsswitch.conf

sudoers: files ldap


これにて完成です。誰かのお役に立てれば幸いです。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1