macOS向けのSambaファイル共有の設定をする

Linux

はじめに

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 を利用すると、一般ユーザーが共有を作成することができるメリットがあります。

設定方法

はじめに、Debian GNU/Linuxサーバへログインします。

ファイルの保管場所を作成する

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(/.*)?"

# restorecon -R -v /srv/nas

# semanage fcontext -a -t samba_share_t "/srv/timemachine(/.*)?"

# restorecon -R -v /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


最後に端末からアクセスしてみましょう。

iPad/iPhone/macOS Ventura
smb://nas01.local/nas

Windows 10 22H2
\\nas01.local\nas

ちなみに

Windows 11 24H2以降は、仕様変更によりゲストログインが既定でサポートしません。

これで以上です。お疲れさまでした。

QooQ