High Sierraでファイル共有

Blog

mac miniの新しいやつは本当に出るんでしょうか。6月に出ると思ってたのに。
そういうわけでオオコシです。

Sierra(macOS10.12)以前のファイル共有

Sierra以前のMacのファイル共有は、Sierraのサポートページにあるように同時接続数に上限(10人)があり、それ以上の人数でファイル共有をしたいときはmacOS Serverをインストールする必要がありました。

macOS のファイル共有では、「ファイル共有」を使って、お使いの Mac に同時に最大 10 人のユーザが接続することを許可できます。お使いの Mac に 10 台を超えるコンピュータが同時に接続できるようにする必要がある場合は、App Store で入手できる macOS Server を使用してください。

High Sierra(macOS10.13)以降のファイル共有

しかし、High Sierraからファイルサーバ、キャッシュサーバ、Time Machine サーバの機能がmasOS Serverから移行されたことで、同時接続数の上限がなくなり、OSの標準機能として利用できるようになりました。

※ファイルシステムがAPFSになったことでAFPでのファイル共有ができなくなったり(SSDのみ)、セキュリティアップデート後にファイル共有ができなくなったりするなど、注意することはいくつかあるようです。

ファイル共有の使い方

ファイル共有の使い方自体は簡単で、システム環境設定の「共有」で「ファイル共有」にチェックを入れ、共有したいディスク/ディレクトリを「+」ボタンから追加して、共有するユーザーと権限を設定するだけ。

基本的にはSMB共有になりますがファイルシステムがAPFSでない場合はAFP共有の使用もオプションから設定可能です。

共有用のユーザー/パスワードを追加する場合はシステム環境設定の「ユーザとグループ」で新規ユーザを「共有のみ」で作成してください。

NASを買うほどじゃないけど、macにつなげた外付けHDDを共有したいときなんかに上記設定が使えると思います。

パケット署名を無効にする

しかしこのままの設定では、SMB2/3接続のパケット署名の関係で接続が遅いんです。

そこでパケット署名というやつを無効にします。
※サポートページにあるように「クライアントとサーバーが安全なネットワークにある場合」に限ります。

サーバー側(接続される側)とクライアント側(接続する側)で設定する方法がありす。

詳しい設定は下記サポートページで。

クライアント側

/etc/nsmb.conf ファイルに下記設定を追加します。ファイルがなければ新規作成してください。

[default]
signing_required=no

サーバー側

システム環境設定でファイル共有を一旦無効にして、ターミナルから下記コマンドを実行し、再度ファイル共有を有効にします。

$ sudo defaults write /Library/Preferences/SystemConfiguration/com.apple.smb.server SigningRequired -bool FALSE

Finderでの表示の高速化

さらに、クライアント側の設定でSMB共有上の .DS_Store ファイルを読み取らないようにすることで表示の高速化ができるみたいです。ターミナルで下記コマンドを実行後、ログアウトしてログインし直すと適用されます。

$ defaults write com.apple.desktopservices DSDontWriteNetworkStores -bool TRUE

TinkerToolのFinder設定でネットワーク上に.DS_Storeを作成しないにチェックをいれてFinder再起動でも同様の設定になります。

以上で、それなりの速度で接続できるようになると思います。

ただ、macOS Serverで共有していた時の方が体感的にもっとサクサク接続できていたような印象が。計測してないのでなんともいえませんが。

Mojaveで速くなってるといいんだけど…


【2018/8/9追記】

上記の設定をしても実はイマイチ速さを実感できていなかったんですが、更に速くする方法がAppleサポートの下記のページに記載されていました。

こちらの設定も安全なネットワーク上にあることが条件ですが、クライアント側では「Validate Negotiateを無効にする」、サーバー側では「SMB 3 接続を拒否する」ことで表示が早くなります。

クライアント側

上記のパケット署名の設定でも使った /etc/nsmb.conf ファイルに下記設定を追加します。

[default]
validate_neg_off=yes

両方設定する場合はこうなります↓。

[default]
signing_required=no
validate_neg_off=yes

サーバ側

Validate Negotiateはクライアントが送信するということなので、サーバ側で無効にする場合はSMB3接続をさせない設定にする必要があります。

ターミナルで下記を1行ずつ実行してください。
sudo scutil --prefs com.apple.smb.server.plist
get /
d.add ProtocolVersionMap # 2
set /
commit
apply
quit

SigningRequired でもでてきた、/Library/Preferences/SystemConfiguration/com.apple.smb.server.plistProtocolVersionMap2 にすると追記しています。1はSMB1、4はSMB3とのこと。)

上記設定が完了したら、取り出しアイコンのクリックやFinderの再起動などでクライアント側の接続を解除して、共有先に接続し直します。

ちゃんと切り替わっているかどうか確認したい場合は、クライアント側のターミナルで下記コマンドを実行してみてください。

$ smbutil statshares -a

接続中の共有フォルダの情報が表示されるので、該当の機器の SMB_VERSIONSMB_2.1 となっていればOKです。(設定変更前は SMB_3.02


SMB3の利点ももちろんあるとは思うのですが、クライアント側のFinderの表示の速さに関して言えば断然SMB2でした。

以上、似たような環境でお困りの方がいたら参考にしてみてください。