LDAP/smbにてLDAP配下のsmbサイト1台でsmb共有を作ってみた.

次に、smbサイトが複数存在する場合を検討してみる.

2022y11m12d_020805094.png

ldap clientへ

smbなのでsmbへのアクセスにはユーザ情報が必要. それがないと読み書きでないですから.

ここでは「authselect - sssd」形式でldap-serverに繋げます
LDAP/Clientを参照

[root@ldap-smb02 ~]# dnf -y install openldap-clients sssd-ldap oddjob-mkhomedir
 
[root@ldap-smb02 ~]# echo "TLS_REQCERT never" >> /etc/openldap/ldap.conf
 
(接続確認)
[root@ldap-smb02 ~]# ldapsearch  -x -H ldaps://ldap-server -b dc=sybyl,dc=local
 
[root@ldap-smb02 ~]# vi /etc/sssd/sssd.conf
[sssd]
services = nss, pam
domains = default
 
[nss]
 
[domain/default]
id_provider = ldap
ldap_uri = ldaps://ldap-server/
ldap_search_base = dc=sybyl,dc=local
ldap_id_use_start_tls = True
ldap_tls_reqcert = never
 
[root@ldap-smb02 ~]# chmod 600 /etc/sssd/sssd.conf
[root@ldap-smb02 ~]# authselect select sssd with-mkhomedir --force
[root@ldap-smb02 ~]# systemctl enable --now oddjobd.service
[root@ldap-smb02 ~]# authselect current
Profile ID: sssd
Enabled features:
- with-mkhomedir
[root@ldap-smb02 ~]#
[root@ldap-smb02 ~]# systemctl restart sssd
[root@ldap-smb02 ~]# id saber
uid=3001(saber) gid=2001(xray) groups=2001(xray)
[root@ldap-smb02 ~]#

smbサイトを作る

[root@ldap-smb02 ~]# dnf -y install samba
[root@ldap-smb02 ~]# 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-smb02 ~]#

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

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

smbが起動するとともに登録した「cn=Manager,dc=sybyl,dc=local」を経由してldap-serverに「sambaDomainName=LDAP-SMB02」が追加される

2022y11m13d_004922281.png

あとfirewall,SELinuxも同じように設定しておく
参照LDAP/smb

LDAPデータベースの調整

っでここでコマンド「pdbedit」らを使ってldap-serverと通信してみると smb.confのlog levelで表示が変更されるの留意

[root@ldap-smb02 ~]# pdbedit -L
sid S-1-5-21-1996916613-3451273948-1131555374-7000 does not belong to our domain
sid S-1-5-21-1996916613-3451273948-1131555374-1001 does not belong to our domain
sid S-1-5-21-1996916613-3451273948-1131555374-500 does not belong to our domain
sid S-1-5-21-1996916613-3451273948-1131555374-501 does not belong to our domain
[root@ldap-smb02 ~]#

「ldap-smb02」ではアカウント情報が引けていない様子. UNIX側はLDAPで繋いでいるので大丈夫. 単にsmbで使用するアカウント情報が正しく引けていない

ちなみに「ldap-smb01」では下記のようになっている

[root@ldap-smb01 ~]# pdbedit -L
foo:3000:foo sybyl
saber:3001:sybyl saber
root:0:root
nobody:65534:Kernel Overflow User
[root@ldap-smb01 ~]#

この違いが生じるのは単に双方のSIDが異なるためです。

[root@ldap-smb02 ~]# net getlocalsid
SID for domain LDAP-SMB02 is: S-1-5-21-1668299948-3883773732-2779791569
[root@ldap-smb02 ~]#
 
 
[root@ldap-smb01 ~]# net getlocalsid
SID for domain LDAP-SMB01 is: S-1-5-21-1996916613-3451273948-1131555374
[root@ldap-smb01 ~]#

ldap-smb02」でユーザリストでデータを得るにはこのSIDを意図的に「ldap-smb01」と同じにする必要がある.
同じにするには「net setlocalsid」でも出来そうだが、これは不可です.

っでどうやって修正するかですが、

  • LDAP Admin
  • ldapvi

の2つの方法がある.

「LDAP Admin」なら「ldap-smb02」の「sambaDomainName=LDAP-SMB02」を選択して右ペインの「sambaSID」を選択. 右クリックから「Edit value...」を選択します
2022y11m13d_010417311.png
次に表示された「Edit value」欄で「ldap-smb01」のSIDを入力して「OK」ボタンを押下します
2022y11m13d_010705851.png

「ldapvi」なら「ldap-server」にて

[root@ldap-server ~]# dnf install epel-release
[root@ldap-server ~]# dnf install ldapvi
 
[root@ldap-server ~]# ldapvi -Y EXTERNAL -h ldapi:/// -b dc=sybyl,dc=local
 :
23 sambaDomainName=LDAP-SMB02,dc=sybyl,dc=local
sambaDomainName: LDAP-SMB02
sambaSID: S-1-5-21-1668299948-3883773732-2779791569      <--- vi操作でこの部分をldap-smb01のSIDに書き換える
sambaAlgorithmicRidBase: 1000
 :
[root@ldap-server ~]#

「ldapvi」による修正は修正権限が必要. rootでもLDAP内access制限に引っかかるとダメ見たい

これで ldap-smb02 でも値が取れる

[root@ldap-smb02 ~]# pdbedit -L
foo:3000:foo sybyl
saber:3001:sybyl saber
root:0:root
nobody:65534:Kernel Overflow User
[root@ldap-smb02 ~]#

最後に再度smbを再起動させておく

[root@ldap-smb02 ~]# systemctl restart smb

smbアクセス

windows/macOSから「ldap-smb01」「ldap-smb02」にそれぞれアクセスしてみる.
当然ながら相手方に事前にsshログインして$HOMEを作っておく.

LDAPに登録されているユーザのSIDがそれぞれ異なる...

本来1つのsmbサイトで行う「smbldap-usermod」をsambaDomainNameのSID修正を行っていない別のsmbサイトで行うと....
sambaDomainNameの修正を行っていて同一のsmbサイトなら「smbldap-usermod」を行っても問題ないみたい

[root@ldap-smb03 ~]# smbldap-usermod -a illya
Warning: sambaPrimaryGroupSID could not be set beacuse group of user illya is not a mapped Domain group!
To get a list of groups mapped to Domain groups, use "net groupmap list" on a Domain member machine.
 
[root@ldap-smb03 ~]#

そのユーザのSIDは、修正前のsambaDomainNameのSIDを引き継いでしまうので、その新規のsmbサイトにはアクセスできるけど、
既存のsmbサイトにはアクセスできない事態が生じる.

[root@ldap-smb01 ~]# net getlocalsid
SID for domain LDAP-SMB01 is: S-1-5-21-2892536622-937567002-2422424380
 
[root@ldap-smb01 ~]# pdbedit -L
foo:3000:foo sybyl
illya:3001: illya
root:0:root
nobody:65534:Kernel Overflow User
saber:3002:sybyl saber
sid S-1-5-21-2724538693-461554053-2808624167-1001 does not belong to our domain
 
[root@ldap-smb01 ~]#

このような状態で、「sambaDomainName=LDAP-SMB03」のSIDを後から修正しても既に発行されたユーザのSIDは変更されない.
なので、LDAP内で直接そのアカウントのsambaSIDを修正する必要がある


トップ   編集 添付 複製 名前変更     ヘルプ   最終更新のRSS
Last-modified: 2022-11-13 (日) 02:06:13 (15d)