ログイン時にSamba共有ユーザーが見つからないUnixグループ

ログイン時にSamba共有ユーザーが見つからないUnixグループ

ローカルネットワークにのみ共有を提供するSamba(バージョン4.15.13-Ubuntu)を実行するシンプルなホームUbuntuサーバーがあります。目的は、Unixユーザーを "sambashare"グループに割り当て、SambaユーザーがゲストアクセスではなくこのUnixグループのメンバーである場合にのみ共有へのアクセスを許可することです。さらに、ユーザーはセッション中にUnixグループ「sambashare」に強制的に参加する必要があり、すべてのファイル/ディレクトリがそのグループの所有者として保持されるため、すべての「sambashare」ユーザーが読み書きできます。

smb構成ファイル

[global]
    server string = Samba
    client min protocol = SMB3
    server min protocol = SMB2
    security = user
    max log size = 1000
    smb ports = 445
    log level = 3
    server role = standalone server
    map to guest = bad user
    
    ; options to allow iOS devices
    fruit:delete_empty_adfiles = yes
    fruit:veto_appledouble = no
    fruit:posix_rename = yes 
    fruit:wipe_intentionally_left_blank_rfork = yes
    vfs objects = fruit streams_xattr  
    fruit:model = MacSamba
    fruit:nfs_aces = no
    fruit:metadata = stream

[%h]
    path = /samba/share
    valid users = @sambashare
    browseable = yes
    writeable = yes
    public = no
    force group = +sambashare
    create mask = 660
    force create mode = 660
    directory mask = 770
    force directory mode = 770

共有ディレクトリに対する権限は using chgrp -R sambashare shareand に設定され、chmod -R 770 /samba/shareディレクトリとその中のすべてのエントリが正しいグループを継承します。

ls -l /サンバ
drwxrws--- 3 root sambashare 4096 May 25 14:48 share

私のユーザーalexが存在し、「sambashare」グループに正しく割り当てられています。 SSH経由でサーバーにアクセスできますが、問題ありません。smbpasswd -a alexAssign Passwordを実行し、smbpasswd -e alexSambaでユーザーを有効にしました。

私はアレックスです uid=1000(alex) gid=1000(alex) groups=1000(alex),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),110(lxd),123(sambashare)

ただし、他のデバイスから共有にアクセスすると、ディレクトリにアクセスする権限がないというエラーメッセージが表示されます。これは、私のユーザー名やパスワードが間違っているという意味ではなく、認証後に権限がないことを意味します。 /var/log/samba/log.smbdにログインすると、識別されたユーザーが "sambashare"グループに属していないことを示します。

/var/log/samba/log.smbd

  mobile (ipv4:192.168.64.109:56107) connect to service %h initially as user alex (uid=1000, gid=1000) (pid 282287)
[2023/05/25 15:03:24.162311,  0] ../../source3/smbd/service.c:168(chdir_current_service)
  chdir_current_service: vfs_ChDir(/samba/share) failed: Permission denied. Current token: uid=1000, gid=1000, 7 groups: 1000 4 24 27 30 46 110
[2023/05/25 15:03:24.162376,  3] ../../source3/smbd/smb2_server.c:3954(smbd_smb2_request_error_ex)
  smbd_smb2_request_error_ex: smbd_smb2_request_error_ex: idx[1] status[NT_STATUS_ACCESS_DENIED] || at ../../source3/smbd/smb2_server.c:3246

明らかに、正しいユーザーはuid、gid、および他のグループとして識別されていましたが、ログにはグループ123 "sambashare"アクセスが表示されていないため、共有ディレクトリに変更しようとしました。

ディレクトリ権限を777に変更すると、同じユーザーがファイル/ディレクトリを参照して作成できます。これらのすべてのファイル/ディレクトリは、「sambashare」グループを正しく継承し、共有にアクセスする他のユーザーに表示されます。ただし、この共有へのゲストアクセスを許可したくありません。このプライベートグループのメンバーであるユーザーにのみアクセス、読み取り、または書き込みを許可する必要があります。また、UnixユーザーとSambaユーザー(smbpasswd)以外のユーザーを使用してユーザーを管理したくありません。

認証中に正確なグループ情報が不足する原因を理解するのに役立つ人はいますか?それとも構成に別のミスがありましたか?

ありがとう

ベストアンサー1

共有に制限を設定するには、明示的に設定することをお勧めします。私は共有に固定名を使用します(あなたは本物サーバー名と動的に一致させるのが良い理由です。また、バリアントを使用する代わりに直接グループ名を使用するように強制します+

[sharename]
    path = /samba/share
    valid users = @sambashare
    browseable = yes
    writeable = yes
    public = no
    force group = sambashare
    create mask = 660
    force create mode = 660
    directory mask = 770
    force directory mode = 770

/samba/share理想的には、グループ書き込みアクセスと/sambaグループ読み取りアクセスに設定することをお勧めします。

chgrp root:sambashare /samba /samba/share
chmod g=rx /samba
chmod g=rwx /samba/share

所有者/samba/shareもグループの一部である場合は、グループsambashare権限と一致するように所有者権限を設定する必要があります。 (これは{所有者、グループ、その他}権限セットが相互に排他的であるためです。

これらの変更を行った後は、Sambaサービスを再起動する必要があり、新しい設定で再起動できるように、未処理の子プロセスをすべて終了する必要があります。[global]この問題を解決するのに役立つレベルオプションはですdeadtime = 10


私のサーバーにはごみ箱とCatiaも設定されています。[global]構成定義レベルで:

# Recycle settings, where enabled with "vfs objects = recycle"
recycle:repository = $Recycle.Bin
recycle:keeptree = yes
recycle:versions = yes
recycle:touch = yes
recycle:mtime = no
hide files = $Recycle.Bin/.recycle

# Mapping illegal characters, where enabled with "vfs objects = catia"
mangled names = no
catia:mappings = 0x22:0xa8,0x2a:0xa4,0x2f:0xf8,0x3a:0xf7,0x3c:0xab,0x3e:0xbb,0x3f:0xbf,0x5c:0xff,0x7c:0xa6

[share]その後、アクティブにしたい各場所について

vfs objects = recycle catia

おすすめ記事