はじめに
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
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共有フォルダは、次のディレクトリに格納します。
同様に、macOSのTime Machine用のバックアップ領域も作成します。(オプション)
# 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