ノートPCからWinbind経由でidmap backend adなsamba4 ad dcにて認証を行おうとしたところ、サスペンドからの復帰に時間が2分ほどかかり、実用的ではありませんでした。オフラインでは認証すらできず、困っていたところ、いろいろ試してみましたが改善されません。
そこではたと思い付き、winbindではなくsssdによる認証に切り替えたところ、サスペンドからの復帰で数秒程度、ハイバネーションからの復帰でGUIが立ち上がってから10秒程度、オフライン状態でも数秒でcacheを参照しつつ認証でき実用的になったので本稿を挙げた次第です。なお、環境はサーバ・クライアント共にdebian10/buster(10.9)にて確認しています。追記2021/05/07:Debian 11/Bullseyeクライアントでも動作確認できました。
早速設定です。まず、idmap backend adなsamba4 サーバ上で、rfc2307スキーマを付与しつつユーザーを作成します。idmap backend adなsamba4 サーバの構築はこちらかこちらを参照してください。
続いて クライアントのノートPCでsssdをインストールします。
続いてdebian10の場合、/lib/systemd/system/sssd.serviceを一部修正し、自動起動するようにしておきます。
続いて sssd を起動時に自動実行するようにしておきます。
編集が済んだらパーミッションを必ず設定しておいてください。
スキーマデータやidが取得できないときは、ad dc上でdns登録されているかどうか確認してください。その他ネットワーク接続を各種確認してください。
続いて新規にログインした場合、ホームディレクトリを自動で作成するようになっているか確認します。
もし、こうなっていない場合は、
ところでsambaパッケージについてですが、sssdでad認証をおこなうだけなら、sambaパッケージをインストール・設定する必要はありません。
しかしながら、sssdのad認証と並行してsambaの共有を行いたい場合などがあると思いますので、sambaを追加でインストールするには以下の様にします。
続いて sambaを起動し、/etc/sssd/sssd.confを編集します。
参考までに、キャッシュされている限り、NetworkManagerでWifiをオフにしても上述で作成したユーザにてログインできました。これで、デスクトップPC・モバイルPCにかかわらず、FC2307スキーマデータを含め、uid/gidをサーバ・メンバーマシンを通して一貫して扱うことができるので、ユーザ管理が格段にしやすくなったといえると思います。 今回は以上です。それでは。
そこではたと思い付き、winbindではなくsssdによる認証に切り替えたところ、サスペンドからの復帰で数秒程度、ハイバネーションからの復帰でGUIが立ち上がってから10秒程度、オフライン状態でも数秒でcacheを参照しつつ認証でき実用的になったので本稿を挙げた次第です。なお、環境はサーバ・クライアント共にdebian10/buster(10.9)にて確認しています。追記2021/05/07:Debian 11/Bullseyeクライアントでも動作確認できました。
早速設定です。まず、idmap backend adなsamba4 サーバ上で、rfc2307スキーマを付与しつつユーザーを作成します。idmap backend adなsamba4 サーバの構築はこちらかこちらを参照してください。
sudo samba-tool user create user20000 P@ssw0rd98765 --description user20000 \ --nis-domain=mydomain.site --uid=user20000 --uid-number=20000 --gid-number=28513 \ --login-shell=/bin/bash --unix-home=/home/user20000続いて クライアントのノートPCでのネットワーク名解決を設定しておきます。/etc/resolv.confが ad dc サーバを参照するようにしておいてください。
search mydomain.site nameserver 10.1.4.63 nameserver 2www.xxxx.yyyy.zzzz::63また、ホストネームの設定も行っておきます。
## /etc/hostsを編集 ===================== 127.0.0.1 localhost 127.0.1.1 m51.mydomain.site m51 2www:xxxx:yyyy:zzzz::51 m51.mydomain.site m51 10.1.4.51 m51.mydomain.site m51 # The following lines are desirable for IPv6 capable hosts ::1 localhost ip6-localhost ip6-loopback ff02::1 ip6-allnodes ff02::2 ip6-allrouters =====================続いてクライアント側でntpの設定を行います。
# apt-get install ntp # systemctl stop ntp # cd /etc # mv /etc/ntp.conf /etc/ntp.conf.bk00 ## edit /etc/ntp.conf ==================== # Local clock. server 127.127.1.0 fudge 127.127.1.0 stratum 10 # Where to retrieve the time from server -6 sv63.mydomain.site iburst prefer server -4 sv63.mydomain.site iburst prefer driftfile /var/lib/ntp/ntp.drift logfile /var/log/ntp # deny all. restrict default ignore # allow from localhost restrict -6 ::1 restrict -4 127.0.0.1 # Enable the time source(ad dc) to provide the time to this host. restrict -6 sv63.mydomain.site mask ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff nomodify notrap nopeer noquery restrict -4 sv63.mydomain.site mask 255.255.255.255 nomodify notrap nopeer noquery ==================== # chmod 644 /etc/ntp.conf # chown root.root /etc/ntp.confntpの設定が済んだら、systemctl restart ntpとして下さい。
続いて クライアントのノートPCでsssdをインストールします。
apt-get install realmd sssd sssd-tools adcli packagekit samba-libsなお、sambaを使用せずにsssdでad認証を行うだけでかつクライアントマシンで名前解決ができていれば、sssd用のkrb5関連パッケージが自動でインストールされますので、別途krb5-userをインストールしなくてもsssdは動作するようです。
続いてdebian10の場合、/lib/systemd/system/sssd.serviceを一部修正し、自動起動するようにしておきます。
#修正前 PIDFile=/var/run/sssd.pid #修正後 PIDFile=/run/sssd.pid $ sudo systemctl daemon-reloaddebian11の場合は、修正は必要ありません。
続いて sssd を起動時に自動実行するようにしておきます。
$ sudo systemctl enable sssd続いて 一旦sssdを停止し、レルム(ドメインFQDNを大文字にしたもの)に参加します。
$ sudo systemctl stop sssd $ sudo realm join MYDOMAIN.SITE [sudo] user1000 のパスワード: Administrator に対するパスワード:正常に参加できた場合は、何もメッセージが出ません。つづいて、レルムに参加すると/etc/sssd/sssd.confが生成されるのでこれをバックアップし改めてsssd.confを以下の様に編集します。
$ sudo su # cd /etc/sssd # mv sssd.conf sssd.conf.bk00 # vi /etc/sssd/sssd.conf [sssd] domains = mydomain.site config_file_version = 2 services = nss, pam [domain/mydomain.site] id_provider = ad auth_provider = ad access_provider = ad chpass_provider = ad ad_domain = mydomain.site krb5_realm = MYDOMAIN.SITE realmd_tags = manages-system joined-with-adcli cache_credentials = True enumerate = False krb5_store_password_if_offline = True default_shell = /bin/bash fallback_homedir = /home/%u@%d ldap_schema = rfc2307bis ldap_id_mapping = False ldap_group_nesting_level = 5 cache_credentials = True use_fully_qualified_names = False ad_gpo_access_control = permissive ad_gpo_map_remote_interactive = +xrdp-sesmanldap_id_mapping = false は、idを自動計算せずにadに保存されたidを取得する設定です。
編集が済んだらパーミッションを必ず設定しておいてください。
# chown root.root /etc/sssd/sssd.conf # chmod 600 /etc/sssd/sssd.confちなみにsssd.confの最後の2行は xrdpにてクライアントマシンに対しRDPにてリモート接続できるようにするための設定ですので、不要であれば削除または#でコメント化してください。参考までにRDPは以下の様にインストールします。
# apt-get install xrdpなお、/etc/nsswitch.confは自動的に更新され、およそ以下の様になります。
passwd: files systemd sss group: files systemd sss shadow: files sss gshadow: files hosts: files mdns4_minimal [NOTFOUND=return] dns networks: files protocols: db files services: db files sss ethers: db files rpc: db files netgroup: nis sss sudoers: files sssつづいて動作確認を行いますので、再起動します。確認は、念のためキャッシュをフラッシュしてから、idコマンドにて行います。
systemctl start sssd sss_cache -U sss_cache -G id user20000 uid=20000(user20000) gid=28513(domain users) groups=28513(domain users)このように上述で作成したuserのuid/gidなどrfc2307スキーマデータが正常に取れていることが確認できていればOKです。
スキーマデータやidが取得できないときは、ad dc上でdns登録されているかどうか確認してください。その他ネットワーク接続を各種確認してください。
続いて新規にログインした場合、ホームディレクトリを自動で作成するようになっているか確認します。
grep -r mkhome /etc/pam.d /etc/pam.d/common-session:session optional pam_mkhomedir.soこの様になっていれば、OKです。
もし、こうなっていない場合は、
pam-auth-updateとし、
[*] Create home directory on loginチェックを入れてください。 最後に、sssdが自動で起動されるようにenableにしておきます。
systemctl enable sssdsssd単独の設定は以上です。
ところでsambaパッケージについてですが、sssdでad認証をおこなうだけなら、sambaパッケージをインストール・設定する必要はありません。
しかしながら、sssdのad認証と並行してsambaの共有を行いたい場合などがあると思いますので、sambaを追加でインストールするには以下の様にします。
$ sudo su ## 一旦 sssdを停止し、realmから離脱しておきます。 # systemctl stop sssd # realm leave MYDOMAIN.SITE続いて sambaとkrb5-userをインストールします。
# apt-get install samba krb5-user # DHCP から WINS 設定を使うよう smb.conf を変更しますか?ときかれたら # いいえを選択してください。 ## add blow to /etc/krb5.conf into the section [libdefaults] default_ccache_name = FILE:/tmp/krb5cc_%{uid}つづいて sambaの設定を行います。
# cd /etc/samba # systemctl stop smbd nmbd # mv smb.conf smb.conf.orig ## edit /etc/samba/smb.conf ===================== [global] workgroup = MYDOMAIN security = ADS realm = MYDOMAIN.SITE netbios name = M51 ; server multi channel support = yes ; aio max threads = 100 ; aio read size = 1 ; aio write size = 1 vfs objects = acl_xattr streams_xattr store dos attributes = yes map acl inherit = yes inherit permissions =yes dedicated keytab file = /etc/krb5.keytab kerberos method = secrets and keytab load printers = no printing = bsd printcap name = /dev/null disable spoolss = yes [srv] path = /srv read only = No ====================smb.confの用意ができたら ドメインに参加します。
# net ads join -Uadministrator Enter administrator's password: Using short domain name -- MYDOMAIN Joined 'M51' to dns domain 'mydomain.site'joindと表示されていればドメインに参加できています。
続いて sambaを起動し、/etc/sssd/sssd.confを編集します。
# systemctl start smbd nmbd # rm /etc/sssd/sssd.conf # edit /etc/sssd/sssd.conf 注意:realmd_tags の 行が sssd単独の場合と異なります。 ==================================================== [sssd] domains = mydomain.site config_file_version = 2 services = nss, pam [domain/mydomain.site] id_provider = ad auth_provider = ad access_provider = ad chpass_provider = ad ad_domain = mydomain.site krb5_realm = MYDOMAIN.SITE realmd_tags = manages-system joined-with-samba cache_credentials = True enumerate = True krb5_store_password_if_offline = True default_shell = /bin/bash use_fully_qualified_names = True fallback_homedir = /home/%u@%d ldap_schema = rfc2307bis ldap_id_mapping = False ldap_group_nesting_level = 5 cache_credentials = True use_fully_qualified_names = False ad_gpo_access_control = permissive ad_gpo_map_remote_interactive = +xrdp-sesman ====================================================sssd.confの編集がすんだら、sssdを起動し、テスト共有の/srvに所有権の設定等をしておきます。
# systemctl start sssd # chown administrator."domain users" /srv # chmod 775 /srv ## samba ad dc サーバ上でDomain Adminsに共有設定権限を付与 # net rpc rights grant 'MYDOMAIN\Domain Admins' SeDiskOperatorPrivilege -Uadministratorsssd+sambaの設定は以上です。
参考までに、キャッシュされている限り、NetworkManagerでWifiをオフにしても上述で作成したユーザにてログインできました。これで、デスクトップPC・モバイルPCにかかわらず、FC2307スキーマデータを含め、uid/gidをサーバ・メンバーマシンを通して一貫して扱うことができるので、ユーザ管理が格段にしやすくなったといえると思います。 今回は以上です。それでは。
コメント
コメントを投稿