はじめに
macOSクライアントからSambaファイル共有を行うため、Linuxサーバにおける最低限の設定を行います。
サーバーOSは、Debian GNU/Linuxです。
クライアントOSは、macOSやiOSとWindowsです。
AFPは利用しません。SMBv2以降のみ利用します。
また、「MacでSMBファイル共有を設定する」と異なる設定です。
クライアントOSは次の通りです。
- iPad iOS 15.7 6
- macOS Ventura 13.1
- Windows 10 22H2
- Windows 11 22H2
sambaのバージョンは、4.13です。
SMBのバージョンはSMBv3です。ですが、古いiPad/iPhoneはSMBv3を利用できませんでした。そのため、SMBv3を固定せず、SMBv2からSMBv3の範囲を利用します。
ネットワークインターフェイスはeno1を利用します。
NetBIOS over TCP/IPのネットワークは既定値のWORKGROUPです。
ゲストで入れるようにします。
接続することを最優先としたいのでユーザー認証は省きます。
あとから、ユーザー認証の設定はできますのでご安心ください。
但し、ユーザーが追加するフォルダやファイルの権限は、一律一括設定であればコマンドで簡単に設定できます。ですが、きめ細かく設定することは困難です。その場合は初期段階からユーザー認証設定を適切に行なってください。
次のファイル共有の設定は、usershare を利用しません。理由は、Global セクションに固有の設定を入れたくないからです。usershare を利用すると、一般ユーザーが共有を作成することができるメリットがあります。
設定方法
ファイルの保管場所を作成する
sudo su
mkdir -p /srv/nas
mkdir -p /srv/timemachine
chmod 0770 /srv/nas
chmod 0770 /srv/timemachine
chown root:nobody /srv/nas
chown root:nobody /srv/timemachine
※ゲストアクセスさせたいのでnobodyグループを指定する。
インストールを開始する
sambaとavahi-daemonをインストールする。
apt -y install samba avahi-daemon
※mDNSやBonjourを利用しないときは、avavhi-daemonは不要です。
※systemd-networkdでも「MulticastDNS=true」でmDNSが利用できます。その時も、avahi-daemonは不要です。
smb.confを設定する
vim /etc/samba/smb.conf
[global]
interfaces = 127.0.0.0/8 eno1
log file = /var/log/samba/log.%m
logging = file
map to guest = Bad User
max log size = 1000
panic action = /usr/share/samba/panic-action %d
wins support = Yes
#iPhone iPad用の設定
server min protocol = SMB2
#MacOS向けの設定
fruit:model = Xserve
idmap config * : backend = tdb
workgroup = WORKGROUP
#ワークグループで動作
server role = standalone server
obey pam restrictions = no
#既定値
unix password sync = no
[nas]
#macOS用の設定、veto files にも設定します。
delete veto files = Yes
#macOS用の設定
veto files = /._*/.DS_Store/
force create mode = 0770
force directory mode = 0770
#ゲストアクセス用の設定
guest ok = Yes
#ゲストアクセス専用の設定
guest only = Yes
#親フォルダのアクセス権限を継承
inherit permissions = Yes
#ファイルの保管場所
path = /srv/nas
read only = No
#macOS用の設定
vfs objects = fruit streams_xattr
#macOS用の設定
fruit:metadata = stream
#併用できないことが分かったのでコメントアウト
; fruit:resource = stream
#macOSで現在利用していないリソースフォークファイルを消す
#現代のmacOSはリソースフォークファイルをほとんど利用されていません
fruit:wipe_intentionally_left_blank_rfork = Yes
#注意 fruit:resource = stream について
#stream (実験的) - VFS スタック内において、ストリームを次のモジュールに渡す。
#警告: たいていのファイルシステム には拡張属性のサイズ制限があるため、
#このオプションを streams_xattr モジュールとともに利用しないこと。
#TimeMachineを利用する場合は下記も設定する
[TimeMachine]
path = /srv/timemachine
guest ok = Yes
guest only = Yes
read only = No
vfs objects = fruit streams_xattr
#最大512GBまで許可
fruit:time machine max size = 512G
#タイムマシーンを有効
fruit:time machine = Yes
以上です。
修正がおわったら保存して閉じます。
avahi-daemonはzeroconfig機能で自動設定されます。
sambaとavahi-daemonは自動で連携します。
サービス起動の設定を行う
# systemctl enable nmbd smbd avahi-daemon
# systemctl restart nmbd smbd avahi-daemon
ファイアウォール設定を行う
# firewall-cmd --add-service=samba --permanent
# firewall-cmd --add-service=mdns --permanent
# firewall-cmd --reload
SELinux設定を行う
# semanage fcontext -a -t samba_share_t "/srv/nas(/.*)?"
# semanage fcontext -a -t samba_share_t "/srv/timemachine(/.*)?"
動作確認を行う
mDNSでpingを確認する。
サーバーのホスト名が、nas01でしたら、nas01.localにpingしてみましょう。
Microsoft Windows [Version 10.0.19045.2364]
(c) Microsoft Corporation. All rights reserved.
C:\>ping nas01.local
nas01.local [10.0.0.200]に ping を送信しています 32 バイトのデータ:
10.0.0.200 からの応答: 時間 <1ms
10.0.0.200 からの応答: 時間 <1ms