iOSのファイルアプリからLinuxサーバのSambaにファイル保存できないときの対処方法
iPhoneのファイルアプリは、NASなどのファイルサーバに接続してファイルの読み書きができる機能を持っていますが、自前のLinuxサーバには何故かファイル保存できなかったので、対処方法を調べてみました。
iPhoneのファイルアプリから自前のサーバにファイル保存できない
Section titled “iPhoneのファイルアプリから自前のサーバにファイル保存できない”iOS 26では、以下の操作でiPhoneのファイルアプリからサーバに接続できます。
- ファイルアプリを開き、右上の ⋯ ボタンをタップしてサーバへ接続メニューをタップする。
- サーバのホスト名またはIPアドレスを入力して、 ✓ ボタンをタップする。(次の画面でユーザー名とパスワードを入力する)
サーバに接続すると、写真アプリからファイルアプリを通じてサーバに写真を保存できるはずですが、NASでは保存ボタンがタップできるのに、自前で建てたLinuxサーバ(Ubuntu Server 24.04.4 LTS)では保存ボタンがグレーアウトになってタップできません。
SSHでsmbd -Vコマンドを使ってSambaのバージョンを確認したところ、NAS製品と自前で建てたサーバのSambaバージョンはほぼ同じでした。
| サーバ | Sambaバージョン | iPhoneからのファイル保存 |
|---|---|---|
| NAS製品(ASUSTOR) | Version 4.20.0 | ⭕️ 保存できる |
| 自前のサーバ(Ubuntu) | Version 4.19.5-Ubuntu | ❌️ 保存できない |
なお、MacのFinderからは、 移動 メニュー → サーバに接続... メニューで自前サーバに接続すれば問題なくファイルの読み書きが出来ています。
smb.confにVFSモジュール fruit の設定が必要だった
Section titled “smb.confにVFSモジュール fruit の設定が必要だった”調べてみた結果、VFSモジュールのvfs_fruitモジュールを使ってmacOSとの互換性を向上させていなかったことが原因でした。
VFS_FRUIT(8) System Administration tools VFS_FRUIT(8)
NAME vfs_fruit - Enhanced OS X and Netatalk interoperability
DESCRIPTION This VFS module is part of the samba(7) suite.
The vfs_fruit module provides enhanced compatibility with Apple SMB clients and interoperability with a Netatalk 3 AFP fileserver.詳細な説明は、SambaWikiのConfigure Samba to Work Better with Mac OS Xをご覧いただけば分かりますが、要は以下の設定をsmb.confに追加することで、iOSのファイルアプリからも読み書きができるようになります。
[global]
#### Configure Samba to Work Better with Mac OS X ####
vfs objects = fruit streams_xattr fruit:metadata = stream fruit:model = MacSamba fruit:veto_appledouble = no fruit:nfs_aces = no fruit:wipe_intentionally_left_blank_rfork = yes fruit:delete_empty_adfiles = yes fruit:posix_rename = yes自前サーバには設定していませんが、もし、Time Machineのバックアップ用としても使うのであれば、さらに以下の設定も追加します。
[TimeMachineBackup] fruit:time machine = yes# fruit:time machine max size = SIZEsmb.confを変更したら、以下のコマンドでSambaを再起動します。
sudo systemctl restart smbdiPhoneのファイルアプリで既にサーバに接続していた場合、いったん切断して、改めてサーバに接続すると、保存ボタンが青くなって、ファイル保存できるようになりました。
fruitモジュールを使わなくても、(Mac OS Xの頃から)macOSではファイルの読み書きができていたので、smb.confの設定から抜け落ちてしまいそうです。