#author("2022-11-12T17:04:48+00:00","default:sysosa","sysosa")
#author("2022-11-12T17:06:13+00:00","default:sysosa","sysosa")
[[LDAP/smb]]にてLDAP配下のsmbサイト1台でsmb共有を作ってみた.


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

&ref(2022y11m12d_020805094.png,nolink,noborder);


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

ここでは「authselect - sssd」形式でldap-serverに繋げます
[[LDAP/Client]]を参照
#code(nonumber){{
[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サイトを作る [#gb6ae032]

#code(nonumber){{
[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」のパスワードを登録します

#code(nonumber){{
[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」が追加される

&ref(2022y11m13d_004922281.png,nolink);


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


***LDAPデータベースの調整 [#y2b30c27]

っでここでコマンド「pdbedit」らを使ってldap-serverと通信してみると   &size(10){smb.confのlog levelで表示が変更されるの留意};
#code(nonumber){{
[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」ではアカウント情報が引けていない様子.  &size(10){UNIX側はLDAPで繋いでいるので大丈夫. 単にsmbで使用するアカウント情報が正しく引けていない};

ちなみに「ldap-smb01」では下記のようになっている
#code(nonumber){{
[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が異なるためです。
#code(nonumber){{
[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...」を選択します
&ref(2022y11m13d_010417311.png,nolink);
次に表示された「Edit value」欄で「ldap-smb01」のSIDを入力して「OK」ボタンを押下します
&ref(2022y11m13d_010705851.png,nolink);

「ldapvi」なら「ldap-server」にて
#code(nonumber){{
[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 ~]# 
}}
&size(10){「ldapvi」による修正は修正権限が必要. rootでもLDAP内access制限に引っかかるとダメ見たい};

これで ldap-smb02 でも値が取れる
#code(nonumber){{
[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を再起動させておく
#code(nonumber){{
[root@ldap-smb02 ~]# systemctl restart smb
}}

***smbアクセス [#ned1fb89]

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





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

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


#code(nonumber){{
[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サイトにはアクセスできない事態が生じる.




#code(nonumber){{
[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を修正する必要が生じる
このような状態で、「sambaDomainName=LDAP-SMB03」のSIDを後から修正しても既に発行されたユーザのSIDは変更されない.
なので、LDAP内で直接そのアカウントのsambaSIDを修正する必要がある
1

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS