LAN内に複数の計算マシンを雑に置きたい時、QNAPみたいなLDAP+NFSに対応したNASで管理することありますよね。でも、LDAPクライアント周りの日本語情報は少なめなのでメモ。元ネタはこちら。
結論をスクリプトで
適宜LDAPサーバIP、ドメイン、パスワード、等を書き換えて、以下のスクリプトをroot権限で実行すればOK.
解説
export DEBIAN_FRONTEND=noninteractive
apt update || exit 1
apt -y install libnss-ldapd libpam-ldapd ldap-utils || exit 1
ldap周りのソフトをインストールします。通常はapt install時にダイアログが立ち上がって、ldapサーバの設定を手入力するように求められるのですが、毎回打つのは面倒なので、DEBIAN_FRONTEND環境変数設定して質問せずに適当なデフォルト値を設定させます。
echo '
uid nslcd
gid nslcd
uri ldap://[QNAP(LDAPサーバ)のIPアドレス]/
base dc=some,dc=domain,dc=jp←QNAPの設定からコピー
binddn cn=admin,dc=some,dc=domain,dc=jp←QNAPの設定からコピー
bindpw [QNAPで設定したLDAPのパスワード]
' >/etc/nslcd.conf
LDAPの設定です。ubuntu20以前だとldap.confに書くという解説が結構ありますが、ubuntu22だとnslcd.confに書くようになったんですね。
nsswitch.confの設定は認証手段にldapを足すだけなので、特に解説はいらないかと思います。
echo '
Name: activate mkhomedir
Default: yes
Priority: 900
Session-Type: Additional
Session:
required pam_mkhomedir.so umask=0022 skel=/etc/skel
'> /usr/share/pam-configs/my_mkhomedir
ホームディレクトリを自動で用意するpamの設定を追加します。ここに書いた内容は後でpam-auth-updateコマンドを実行すると反映されます。/etc/skelの内容が各自のホームに初期値コピーされるので、NFSへのリンク等つっこんどくと良いでしょう。(私はhomeは各実機上において、別途ワークフォルダをNFS上に置く派)
echo '
Name: activate /etc/security/group.conf
Default: yes
Priority: 900
Auth-Type: Primary
Auth:
required pam_group.so use_first_pass
'>/usr/share/pam-configs/my_groups
後述の/etc/security/group.confを使うための設定。
#QNAPの特定グループ(SOME_LDAP_GROUP)をdockerユーザグループにも入れる場合は、
#以下を参考に記述
#echo "*;*;%SOME_LDAP_GROUP;Al0000-24000;docker" >/etc/security/group.conf
共用マシンで全員をdockerグループにチマチマいれるのは面倒です。LDAP上特定のグループに属している人はdoker使えるという風にするときにのようにgruop.confを使います。%SOME_LDAP_GROUPを*に書き換えると、誰でもdockerグループに追加します。
確認方法
getent passwd とか getent group とか書いて、LDAPに登録してるユーザが出てくればOKです。
参考:NFSについて
普通にマウントすれば、うまくいくんだけど。希にこのバグを踏むので私は以下URLの記事にあるworkaround記述のままにしてます。https://www.nasabi.me/?id=10
/mnt/mountpoint 10.10.10.10:/mounttarget nfs noauto,x-systemd.automount,x-systemd.device-timeout=30,_netdev 0 0