#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を修正する必要がある