macOS向けのSambaファイル共有の設定とSMB署名について

Linux

はじめに

macOSクライアントからSambaファイル共有に接続するため、Linuxサーバにおける最低限の設定を行います。

サーバーOSは、Ubuntu Server 24.04 LTS です。
Sambaバージョンは、Version 4.19.5-Ubuntu です。

クライアントOSは、macOSやiOSとWindowsです。
Windows 11 24H2以降の接続を考慮する為にSMB署名を有効にします。

クライアントOSの一覧は下記の通りです。
  • iPad iOS 15.7 6
  • iPhone iOS 18.2.1
  • macOS Ventura 13.1
  • macOS Sequoia 15.2
  • Windows 10 22H2
  • Windows 11 22H2
  • Windows 11 23H2

本設定は、MacでSMBファイル共有を設定する」と異なる設定です。
AFP(Apple Filing Protocol)は利用しません。

プロトコルはSMBv2からSMBv3の範囲を利用します。
古いiOSはSMBv3をサポートしていないようでした。

mDNSは、avahi-daemonを利用します。

ファイル共有の設定は、usershare を利用しません。

シナリオ

太郎さん(taro)が、セールスチーム(SalesTeam-1-1)に所属します。
また、セールスチーム(SalesTeam-1-1)はWindows共有フォルダ(nas)を所有します。

  • ユーザ名:taro
  • グループ名: SalesTeam-1-1
  • 共有名(Windows共有フォルダ名): nas
Windows共有フォルダは、次のディレクトリに格納します。
  • /srv/nas

同様に、macOSのTime Machine用のバックアップ領域も作成します。(オプション)
  • /srv/timemachine

インストールする

# apt install -y samba avahi-daemon

Linuxグループを作成する

#addgroup SalesTeam-1-1
info: Selecting GID from range 1000 to 59999 ...
info: Adding group `SalesTeam-1-1' (GID 1001) ...

LinuxユーザーをLinuxグループへ所属する

ユーザtaroをグループSalesTeam-1-1へ所属する
#usermod -aG SalesTeam-1-1 taro
SalesTeam-1-1グループへ所属しているか確認する
#groups taro
taro : taro ~略~ SalesTeam-1-1


アクセスするディレクトリに権限を付与する

#mkdir -p /srv/nas/
#chown -R root:SalesTeam-1-1 /srv/nas/
#chmod -R 770 /srv/nas/

#mkdir -p /srv/timemachine/
#chown -R root:SalesTeam-1-1 /srv/timemachine/
#chmod -R 770 /srv/timemachine/

#ls -l /srv/
drwxrwx--- 2 root SalesTeam-1-1 4096 Dec 18 15:31 nas
drwxrwx--- 2 root SalesTeam-1-1 4096 Dec 18 15:31 timemachine

smb.conf 設定ファイルを編集する

#vim /etc/samba/smb.conf

[global]
log file = /var/log/samba/log.%m
logging = file
max log size = 1000
panic action = /usr/share/samba/panic-action %d
# iPhone iOS 対策
server min protocol = SMB2
# Windows 11 24H2対策
client signing = required
# Windows 11 24H2対策
server signing = required
# smb encryptを有効にしたとき、SMB署名は不要になる
#smb encrypt = mandatory
security = USER
# Windows 11 24H2対策
restrict anonymous = 2
fruit:model = Xserve
idmap config * : backend = tdb
server role = standalone server

[nas]
# プレフィックスに+をつけると明示的にLinuxグループと解釈する
valid users = +SalesTeam-1-1
delete veto files = Yes
veto files = /._*/.DS_Store/
force create mode = 0770
force directory mode = 0770
inherit permissions = Yes
path = /srv/nas
read only = No
vfs objects = fruit streams_xattr
fruit:metadata = stream
fruit:wipe_intentionally_left_blank_rfork = Yes

[TimeMachine]
path = /srv/timemachine
read only = No
vfs objects = fruit streams_xattr
fruit:time machine max size = 512G
fruit:time machine = Yes
fruit:advertise_fullsync = Yes

#EOF

SambaのユーザーDBに追加と関連付けをする

LinuxユーザーをWindowsファイル共有のユーザー名と関連付けします。
Windowsファイル共有におけるユーザー名に対するパスワードも設定します。
今回の例では、Linuxユーザーのパスワードと連携しません。
今後、pdbedit コマンドでパスワードリセットなどの運用を行います。

# pdbedit -a taro

new password: ******** Windowsファイル共有のパスワードを入力

retype new password: ******** Windowsファイル共有のパスワードを入力

Unix username:        taro


サービスを起動します

# systemctl enable nmbd smbd avahi-daemon
# systemctl restart nmbd smbd avahi-daemon

ファイアウォール設定を行う

# ufw allow samba
# ufw allow 5353/udp
# ufw reload

疎通の確認をします

macOSクライアントの場合

smb://<サーバのホスト名>.local/nas
または、smb://<IPアドレス>/nas

ID: taro
PW: Windowsファイル共有のパスワードを入力

Windowsクライアントの場合

¥¥<サーバのホスト名>.local¥nas
¥¥<サーバのIP>¥nas

ID: taro
PW: Windowsファイル共有のパスワードを入力

接続情報を表示

サーバーの場合

# smbstatus -b

Samba version 4.19.5-Ubuntu

PID     Username     Group        Machine                                   Protocol Version  Encryption           Signing

----------------------------------------------------------------------------------------------------------------------------------------

250310  taro         taro         <PCのIPアドレス> (ipv4:<PCのIPアドレス>:<ポート番号>)        SMB3_11           -                    partial(AES-128-GMAC)

Windows OS クライアントの場合

PowerShell を管理者権限で開く。

PS C:\Users\taro> Get-SmbConnection | Select-Object *

〜一部割愛〜

Credential            :<PCのホスト名>\taro

Dialect               : 3.1.1 #SMBv3で接続

Encrypted             : False #暗号化は無効

ServerName            : <サーバのIP>

Signed                : True #SMB署名は有効

UserName              : <PCのホスト名>\taro

最後に

SMB署名とSMB暗号化の有効と無効についてですが、当該設定は排反関係だと思います。
たぶん、仕様だと考えてます。間違ってたらコメントいただけると幸いです。

SMB暗号化を有効にするとSMB署名が無効になりました。

グローバルセクションの下記設定になります。

client signing = required

server signing = required

#smb encryptを有効にしたとき、SMB署名は不要になる

smb encrypt = mandatory


QooQ