LDAPサーバに認証を任せて smb を利用するお話
*sambaでNTドメインを作るお話ではありません

必要な事

  • LDAPサーバに samba スキーマを搭載させる
  • ldapに作ったユーザアカウントを操作してsamba関係の Attribute を追加する

留意点としてたとえLDAPを使ったとしてもパスワードは2つ存在する形になります
1つはログインとかに利用される「userPassword」attribute
もう一つはsmb認証のための「sambaNTPassword」attribute

sambaスキーマの搭載

smb機能を提供するノードには「yum install samba」としてるだろうから
そこにある「/usr/share/doc/samba-4.10.16/LDAP/samba.ldif」をLDAPサーバに持ってくる

[root@ldap-smb ~]# yum install samba
[root@ldap-smb ~]# scp /usr/share/doc/samba-4.10.16/LDAP/samba.ldif     root@ldap-server:
 
 
 
[root@ldap-server ~]# ldapadd -Y EXTERNAL -H ldapi:/// -f /root/samba.ldif

確認してみます

[root@ldap-server ~]# ldapsearch -x -LLL -W -D cn=config -b cn=config dn
Enter LDAP Password:
dn: cn=config
 
dn: cn=schema,cn=config
 
dn: cn={0}core,cn=schema,cn=config
 
dn: cn={1}cosine,cn=schema,cn=config
 
dn: cn={2}nis,cn=schema,cn=config
 
dn: cn={3}inetorgperson,cn=schema,cn=config
 
dn: cn={4}samba,cn=schema,cn=config                <-- sambaスキーマ
 
dn: olcDatabase={-1}frontend,cn=config
 
dn: olcDatabase={0}config,cn=config
 
dn: olcDatabase={1}monitor,cn=config
 
dn: olcDatabase={2}hdb,cn=config
 
[root@ldap-server ~]#

smbサイトを構築してsambaスキーマのsambaDomainName attributeを埋める

smbサイトを作ります.
nfsサーバとかでしょうか. そこにsambaパッケージをインストールします

[root@ldap-smb ~]# vi /etc/samba/smb.conf
[global]
        workgroup = SAMBA
        security = user
 
        load printers = no
 
        passdb backend = ldapsam:ldap://192.168.0.81
        ldap suffix = dc=sybyl,dc=local
        ldap user suffix = ou=People
        ldap group suffix = ou=Group
        ldap admin dn = cn=Manager,dc=sybyl,dc=local
        ldap passwd sync = yes
        ldap ssl = off
 
[homes]
        comment = Home Directories
        valid users = %S, %D%w%S
        browseable = No
        read only = No
        inherit acls = Yes
[root@ldap-smb ~]#

次に、「cn=Manager,dc=sybyl,dc=local」のパスワードを登録します

[root@ldap-smb ~]# smbpasswd -W
Setting stored password for "cn=Manager,dc=sybyl,dc=local" in secrets.tdb
New SMB password:
Retype new SMB password:
 
[root@ldap-smb ~]#

これでsmbデーモンを起動すると自動的に ldap-server と通信して sambaDomainName の値が埋まります
こんな感じに
2021y04m02d_191225572.png
DomainNameなのでsyblとかかなと思ったがsmbホスト名が登録されます

ここで留意点がある.

もし全くの新規なsmbサーバとして運用するなら

  • ldap-clientを仕込ませてLDAP-server経由でアカウントがあるようにする 参照LDAP/Client
  • smb.confにスクリプトを使って/etc/passwdにアカウントを作らせる

の方法がある. いずれにしろ smbサイト側に アカウント が必要で、要はそれをどのように用意するかです.

ただ、後者の方は/etc/passwdに作られるuid/gidがLDAP-server側での値と違ってもいいなら使える手でしょうか.
smbはユーザ名しか見てないから

でもstorageサービス毎に異なるuid/gidでは面倒なので前者しかないかな

*smbサイトにユーザをログインさせたくないのなら /etc/ssh/sshd_config で制限する

[root@ldap-smb ~]# yum install sssd sssd-ldap
[root@ldap-smb ~]# authconfig-tui

2021y04m02d_200504110.png2021y04m02d_200535100.png
その後、できた「/etc/sssd/sssd.conf」に「ldap_tls_reqcert = never」を加える

--- /etc/sssd/sssd.conf.orig    2021-04-02 20:24:36.203346223 +0900
+++ /etc/sssd/sssd.conf 2021-04-02 20:25:23.805706922 +0900
@@ -8,6 +8,7 @@
 ldap_uri = ldap://192.168.0.81/
 ldap_id_use_start_tls = False
 ldap_tls_cacertdir = /etc/openldap/cacerts
+ldap_tls_reqcert = never
 [sssd]
 services = nss, pam, autofs

そしてsssdを再起動さえる

(ついでに自動でディレクトリを作らせる)
[root@ldap-smb ~]# authconfig --enablemkhomedir --update
 
[root@ldap-smb ~]# systemctl restart sssd

自動でhomeが作れるが、umask=0077で作られる。これを0007にするには「/etc/pam.d/password-auth-ac」にて
「pam_mkhomedir.so umask=0007」とする。ユーザのホームディレクトリの情報はpasswd形式に書かれている.

sambaのattribute登録

LDAP/Browseで示したLDAP Adminを使います.
LDAP/data#f66670f1にてユーザを登録した直後ではこのsmbサイトにアクセスできません.
っでLDAP Adminにて当該ユーザ[foo]を選択して、右クリックから「Properties..」を選びます. ダブルクリックでも可
2021y04m03d_002521632.png
開いた「Properties of foo」にて画面下の「Account properties」から「Samba Acount」を有効にします。
すると「Properties of foo」画面の上部タブに「samba」が追加されます。
2021y04m03d_002750061.png sambaスキーマの追加をLDAP Adminが認識して出しているみたい
「samba」タブをクリックして「Domain」欄のプルダウンからsmbサイトとなる「LDAP-SMB」を選びます。
そうて「OK」ボタンを押下して、反映させます。
2021y04m03d_003158974.png

これで元の画面に戻りますが、対象ユーザに新たなobjectClassとして「sambaSamAccount」が追加されたり、
「sambaKickoffTime」「sambaAccFlags」「sambaSID」「sambaDomainName」らが追加されます
2021y04m03d_003435793.png
ですが、samba向けのパスワード欄がなく、これではsmb共有に入れません. userPasswordはsshログインとかに使うパスワードです
ここで、再度当該ユーザ[foo]を選択して、右クリックから「Set Password...」を選びます
2021y04m03d_004012965.png

すると下記「Set Password」画面が表示され、「Posix password」「Samba password」のチェックボックスがあるようにどちらか、あるいは両方ともでパスワードの定義が行えます。
2021y04m03d_004204042.png
「OK」ボタンを押下して画面が閉じられると新たなAttribute「sambaNTPassowrd」「sambaPwdLastSet」が定義されます

2021y04m03d_004426762.png

これでユーザfooはsmbサイトにアクセスできるようになります

SELinux

[root@ldap-smb ~]# getsebool samba_enable_home_dirs
samba_enable_home_dirs --> off
 
[root@ldap-smb ~]#
[root@ldap-smb ~]# setsebool -P samba_enable_home_dirs 1
[root@ldap-smb ~]# getsebool samba_enable_home_dirs
samba_enable_home_dirs --> on
 
[root@ldap-smb ~]#

この設定の前に存在するホームディレクトリに関しては下記コマンドで書き換えが必要です

[root@ldap-smb ~]# restorecon -R /home

トップ   編集 添付 複製 名前変更     ヘルプ   最終更新のRSS
Last-modified: 2021-04-03 (土) 00:47:00 (33d)