コンテンツにスキップ

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.

詳細な説明は、SambaWikiConfigure Samba to Work Better with Mac OS Xをご覧いただけば分かりますが、要は以下の設定をsmb.confに追加することで、iOSのファイルアプリからも読み書きができるようになります。

/etc/samba/smb.conf
[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のバックアップ用としても使うのであれば、さらに以下の設定も追加します。

/etc/samba/smb.conf
[TimeMachineBackup]
fruit:time machine = yes
# fruit:time machine max size = SIZE

smb.confを変更したら、以下のコマンドでSambaを再起動します。

Terminal window
sudo systemctl restart smbd

iPhoneのファイルアプリで既にサーバに接続していた場合、いったん切断して、改めてサーバに接続すると、保存ボタンが青くなって、ファイル保存できるようになりました。

fruitモジュールを使わなくても、(Mac OS Xの頃から)macOSではファイルの読み書きができていたので、smb.confの設定から抜け落ちてしまいそうです。