5.OpenLDAPサーバの構築⑤ -LDAPユーザの設定

投稿者: | 2017年12月7日

4.OpenLDAPサーバの構築④ -オブジェクトクラス(objectClass)/組織(ou)/グループの設定が終わったら、次はユーザの設定。


■ユーザの設定

ここで、2.OpenLDAPサーバの構築② -管理者パスワードの設定のことを思い出してほしい。
管理者パスワードを設定する時、slappasswdコマンドでパスワードをソルト付きSHAで設定した。ユーザに設定するパスワードも同様で、ldifファイルにパスワードを記述する際に平文そのまま書くのもセキュリティ的にナンなので、slappasswdを使ってSSHAを生成する。

[root@ldapserver ~]# slappasswd -s ldapuser01    ->  「ldapuser01」はユーザに設定したいパスワード(任意)
{SSHA}p5saJY4uU3cIv1QcdAs6Uy9FNFnb4Vjj

slappasswdコマンドの-sオプションを付けると、そのあとに続く文字列をSSHAに変換して出力してくれる。これを一時的にメモ帳などに控えておくことをお勧めする。

出力されたSSHAを使用して、ユーザ設定用のldifファイルを作成する。

[root@ldapserver ~]# vi /root/ldif/useradd.ldif    ->  ファイル名は任意。
dn: uid=user01,cn=ldapmanager,ou=Group,dc=abc,dc=def,dc=com
objectClass: top
objectClass: posixAccount
objectClass: account
gecos: ldapsystem manager
cn: user01
uid: user01
uidNumber: 1001
gidNumber: 1001
homeDirectory: /home/user01
loginShell: /bin/bash
userPassword: {SSHA}p5saJY4uU3cIv1QcdAs6Uy9FNFnb4Vjj

「dn」はユーザのDN。どの位置にユーザを置くかによって内容が決まる。ここでは4.OpenLDAPサーバの構築④ -オブジェクトクラス(objectClass)/組織(ou)/グループの設定で設定したcn=ldapmanagerというグループの中に作ることにしたので、「uid=user01,cn=ldapmanager,ou=Group,dc=abc,dc=def,dc=com」となる。
オブジェクトクラスは「top」「posixAccount」「account」を設定する。「uid」属性はaccountに紐づき、それ以外の属性は「posixAccount」に紐づく。
「gecos」は任意の文字列。(この属性自体不要かもしれないが、一応設定する)
「uid」はログインする時のユーザ名に該当するもので、ユーザのDN「uid=user01,cn=ldapmanager,ou=Group,dc=abc,dc=def,dc=com」のuid=の部分と同じ文字列にする。
「cn」はuidと同じ文字列を設定。
「uidNumber」は/etc/passwdに該当するものなので、現状の/etc/passwdと重複しない数字を設定する。
「gidNumber」は4.OpenLDAPサーバの構築④ -オブジェクトクラス(objectClass)/組織(ou)/グループの設定で設定したgidNumberと同じ数字を設定する。異なる数字を設定した場合の動作は保証しない。
「homeDirectory」は、ldapユーザがldapサーバ管理下の別のサーバへログインする際に、ログイン直後に居ることになるディレクトリ。Linuxのuseraddコマンドでも原則/home配下にユーザ名のディレクトリが作られるため、同様に「/home/<ユーザ名>」にする。
「loginShell」はどのshを使うかを指定。Linuxの一般ユーザのように/bin/bashを指定しておく。
「userPassword」は上記slappasswdコマンドで生成したSSHAの文字列。このパスワードは後述の10.OpenLDAPサーバ/Clientにsshログインでsudo付コマンドを実行する際に使用する。また本稿では触れていないZabbixやgrafana等ldap連携できるアプリケーションでもこのパスワードを使用する。

上記ファイルを作成したら、ldapaddコマンドでユーザの設定を実行する。

[root@ldapserver ~]# ldapadd -x -D "cn=Manager,dc=abc,dc=def,dc=com" -w manager -f /root/ldif/useradd.ldif
adding new entry "uid=user01,cn=ldapmanager,ou=Group,dc=abc,dc=def,dc=com"

ldapaddコマンドのオプションは以下の通り。
「-x」 : 簡易認証。(-Y EXTERNALでSASL認証をしないやり方。)
「-D」 : どのDNに結び付けるかを指定する。グループやユーザを設定する場合は、管理者DNを指定する。
「-w」 : 管理者パスワードを設定する。ここでは2.OpenLDAPサーバの構築② -管理者パスワードの設定で「manager」と設定したので、managerと指定する。対話式(コマンド実行後パスワードを聞かれるようにする)の場合は「-W」を使い、コマンド上ではパスワードを設定しない。
「-f」 : 実行するldifファイルを指定する。

ldapaddコマンドの実行結果で「adding new entry ~」の後にエラーが出なければユーザ設定OK。ldapsearchコマンドでグループが投入されたかを確認する。

[root@ldapserver ~]# ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b 'dc=abc,dc=def,dc=com' 'uid=user01'
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
dn: uid=user01,cn=ldapmanager,ou=Group,dc=abc,dc=def,dc=com
objectClass: top
objectClass: posixAccount
objectClass: account
gecos: ldapsystem manager
cn: user01
uid: user01
uidNumber: 1001
gidNumber: 1001
homeDirectory: /home/user01
loginShell: /bin/bash
userPassword:: e1NTSEF9cDVzYUpZNHVVM2NJdjFRY2RBczZVeTlGTkZuYjRWamo=

ldapsearchコマンドのオプションは以下の通り。
「-LLL」 : 検索結果の内容の指定。-Lの場合はコメント行が付加され、-LLの場合はLDIFバージョンが付加される。その両方を省略するのが-LLL。
「-Y EXTERNAL」 : SASL認証を使用。
「-H」 : ldapサーバの指定。「ldapi:///」はローカルとなる。
「-b」 : 検索対象とするDNやolcDatabase、objectClassや属性を指定する。bはbindのb。複数の検索箇所を指定することも可能で、複数指定した場合AND条件での検索となる。上記の場合、「dc=abc,dc=def,dc=comというベースDN配下にある、uid=user01を検索する」という意味になる。

userPasswordについては、SSHAで投入すると、ldapsearchの検索結果では暗号化され違う文字列として表示される。パスワードが無事に登録されたかどうかは、実際に設定したユーザでsshログインを実施するべし。sshログインはさらに後述する。

ひとまず、これでldapユーザの登録は完了!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA