表題の内容ですが、悩ましかったので備忘。記事は複数回に分けます。
Microsoft情報
↑Windows10 Enterpriseについては以下の記述があります。
Windows 10 Enterprise and Windows 10 Education no longer allow a user to connect to a remote share by using guest credentials by default, even if the remote server requests guest credentials.
このno longer allowとby defaultがどこにかかるのか悩ましいところ。以下の日本語版を読んでも解釈が難しい。
Windows 10 Enterprise と Windows 10 Education では、リモート サーバーがゲストの資格情報を要求した場合でも、ユーザーは既定でゲストの資格情報を使用してリモート共有に接続することができなくなりました。
結論として、当該のレジストリ値を入れてみても当方の環境(Windows 10 Enterprise 22H2 OS Build 19045.2965 w/ MSアカウント)ではゲストアクセスを有効にできませんでした。
ということで、色々やってみてゲストアクセスっぽくしてみた話です。
Sambaのデバッグログを見て色々と分かることもあったので書いておきます。
上述の情報などは後で調べて分かったことで、そもそもは、「Windows10 Proでゲストアクセス出来ているので、Windows10 Entでも出来るはず」、という思い込みから始まってます。
環境
samba-4.17.5-102.el9.x86_64
Red Hat Enterprise Linux release 9.2 (Plow)
以下smb.confの内容抜粋です。
[global]
security = user
map to guest = bad user
[share]
path = /smb_share
read only = No
guest ok = Yes
※guest accountはデフォルト値: nobody
※/smb_shareはOwner:nobodyでパーミッションはrwx------
# grep nobody /etc/passwd
nobody:x:65534:65534:Kernel Overflow User:/:/sbin/nologin
# ls -ld /smb_share
drwx------. 2 nobody nobody 6 5月 8 02:09 /smb_share
#
Win10ProからのゲストアクセスはOKで、Win10EntからのゲストアクセスはNG。
以下のようなメッセージウィンドウです。
¥¥XXXXX¥share に対するアクセス許可がありません。ネットワーク管理者にアクセス許可を要求してください。
Sambaのデバッグログ出力
Sambaのログ内容が乏しいため、デバッグログを出させて違いを見ます。
/etc/sysconfig/sambaファイルのSMBDOPTIONSを以下のように編集します。Debugレベルは出してみないと分からないので最高の10で出しました。
- SMBDOPTIONS=""
+ SMBDOPTIONS="-d 10"
Sambaをリスタートします。
# systemctl restart smb
# systemctl status smb
● smb.service - Samba SMB Daemon
Loaded: loaded (/usr/lib/systemd/system/smb.service; enabled; preset: disa>
Active: active (running) since Tue 2023-05-20 18:47:25 JST; 41s ago
Docs: man:smbd(8)
man:samba(7)
man:smb.conf(5)
Main PID: 93360 (smbd)
Status: "smbd: ready to serve connections..."
Tasks: 3 (limit: 407656)
Memory: 5.7M
CPU: 39ms
CGroup: /system.slice/smb.service
├─93360 /usr/sbin/smbd --foreground --no-process-group -d 10
├─93362 /usr/sbin/smbd --foreground --no-process-group -d 10
└─93363 /usr/sbin/smbd --foreground --no-process-group -d 10
5月 20 18:47:25 XXXXX smbd[93360]: dsdb_password_audit: 10
5月 20 18:47:25 XXXXX smbd[93360]: dsdb_password_json_audit: 10
5月 20 18:47:25 XXXXX smbd[93360]: dsdb_transaction_audit: 10
5月 20 18:47:25 XXXXX smbd[93360]: dsdb_transaction_json_audit: 10
5月 20 18:47:25 XXXXX smbd[93360]: dsdb_group_audit: 10
5月 20 18:47:25 XXXXX smbd[93360]: dsdb_group_json_audit: 10
5月 20 18:47:25 XXXXX smbd[93360]: [2023/05/20 18:47:25.598528, 0, pid=93360,>
#
ということでsmbdに-d 10が付いて、デバッグレベル10で再起動されました。
Win10ProとWin10Entでアクセスしてみて、違いを見ます。/var/log/samba/log.smbdに大量のログが吐かれます。もう少しデバッグレベルを落として見ると楽かもしれませんが、初回は多いに越したことはありません。
それぞれのOSからのアクセス
Win10Proだと、以下の通り"nobody"@"XXXXX"のアクセス。(XXXXXはSambaサーバー名)
SIDはWin10Pro側から7つ渡されています。
NT_STATUS_OKで、問題なくアクセス出来ます。ファイルも作れます。
:
:
info : *
info: struct auth_user_info
account_name : *
account_name : 'nobody'
user_principal_name : NULL
user_principal_constructed: 0x00 (0)
domain_name : *
domain_name : 'XXXXX'
dns_domain_name : NULL
full_name : NULL
logon_script : NULL
profile_path : NULL
home_directory : NULL
home_drive : NULL
logon_server : NULL
last_logon : NTTIME(0)
last_logoff : NTTIME(0)
acct_expiry : NTTIME(0)
last_password_change : NTTIME(0)
allow_password_change : NTTIME(0)
force_password_change : NTTIME(0)
logon_count : 0x0000 (0)
bad_password_count : 0x0000 (0)
acct_flags : 0x00000000 (0)
authenticated : 0x00 (0)
unix_info : *
unix_info: struct auth_user_info_unix
unix_name : *
unix_name : 'nobody'
:
:
Security token SIDs (7):
SID[ 0]: S-1-5-xx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-501
SID[ 1]: S-1-5-xx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-514
SID[ 2]: S-1-22-2-65534
SID[ 3]: S-1-1-0
SID[ 4]: S-1-5-2
SID[ 5]: S-1-5-32-546
SID[ 6]: S-1-22-1-65534
Privileges (0x 0):
Rights (0x 0):
:
:
smbd_check_access_rights_sd: File [.] requesting [0x100081] returning [0x100001] (NT_STATUS_OK)
:
:
Win10Entは以下の通りで、"ANONYMOUS LOGON"@"NT AUTHORITY"でアクセスしに来てます。
ローカルアカウントじゃないってのも影響しているかもしれませんが、これは当方の制約でローカルアカウントは使用出来ず、MSアカウントでのログオンのままゲストアクセスさせたいのです。
で、次にSID。
Win10Proは7つでしたが、Win10Entは5つ渡っています。
そしてNT_STATUS_ACCESS_DENIED。
どうやらこの5つのSIDが評価されて、最終的に以下の3つが引っかかってNGのようです。
1: SEC_DESC_DACL_PRESENT
1: SEC_DESC_DACL_PROTECTED
1: SEC_DESC_SELF_RELATIVE
owner_sidはS-1-5-xx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-501とのことで、Win10Proでは一番最初に渡されてますが、Win10Entから渡っているSIDには存在しません。
Sambaの内部的にこのSIDがguest accountと紐付いていて、Win10Ent側からこのSIDが渡されないことにより、最終的にアクセスが拒否されていると考えられます。
これは当方の環境では、上述のMSページに記載のレジストリ値を手動で入れても変わらずでした。
:
:
info : *
info: struct auth_user_info
account_name : *
account_name : 'ANONYMOUS LOGON'
user_principal_name : NULL
user_principal_constructed: 0x00 (0)
domain_name : *
domain_name : 'NT AUTHORITY'
dns_domain_name : NULL
full_name : *
full_name : 'Anonymous Logon'
logon_script : *
logon_script : ''
profile_path : *
profile_path : ''
home_directory : *
home_directory : ''
home_drive : *
home_drive : ''
logon_server : *
logon_server : 'XXXXX'
last_logon : NTTIME(0)
last_logoff : NTTIME(0)
acct_expiry : NTTIME(0)
last_password_change : NTTIME(0)
allow_password_change : NTTIME(0)
force_password_change : NTTIME(0)
logon_count : 0x0000 (0)
bad_password_count : 0x0000 (0)
acct_flags : 0x00000010 (16)
authenticated : 0x00 (0)
unix_info : *
unix_info: struct auth_user_info_unix
unix_name : *
unix_name : 'nobody'
:
:
Security token SIDs (5):
SID[ 0]: S-1-5-7
SID[ 1]: S-1-1-0
SID[ 2]: S-1-5-2
SID[ 3]: S-1-22-1-65534
SID[ 4]: S-1-22-2-65534
Privileges (0x 0):
Rights (0x 0):
:
:
smbd_check_access_rights_sd: File [.] requesting [0x100080] returning [0x100000] (NT_STATUS_ACCESS_DENIED)
:
:
sd: struct security_descriptor
revision : SECURITY_DESCRIPTOR_REVISION_1 (1)
type : 0x9004 (36868)
0: SEC_DESC_OWNER_DEFAULTED
0: SEC_DESC_GROUP_DEFAULTED
1: SEC_DESC_DACL_PRESENT
0: SEC_DESC_DACL_DEFAULTED
0: SEC_DESC_SACL_PRESENT
0: SEC_DESC_SACL_DEFAULTED
0: SEC_DESC_DACL_TRUSTED
0: SEC_DESC_SERVER_SECURITY
0: SEC_DESC_DACL_AUTO_INHERIT_REQ
0: SEC_DESC_SACL_AUTO_INHERIT_REQ
0: SEC_DESC_DACL_AUTO_INHERITED
0: SEC_DESC_SACL_AUTO_INHERITED
1: SEC_DESC_DACL_PROTECTED
0: SEC_DESC_SACL_PROTECTED
0: SEC_DESC_RM_CONTROL_VALID
1: SEC_DESC_SELF_RELATIVE
owner_sid : *
owner_sid : S-1-5-xx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-501
group_sid : *
group_sid : S-1-22-2-65534
sacl : NULL
dacl : *
:
:
次回"ANONYMOUS LOGON"ってユーザーを作ったら、に続く。
//