コミュニティソリューション

ZimaOSでマウントしたアプリフォルダーがroot:rootになる理由:PUID、PGID、umask、setgid、コンテナの所有権

An October 2025 feature request describing container-created subfolders becoming root:root with 0755 permissions under mounted host paths such as /media/Daten/Backup. The author proposed global or per-app PUID/PGID, inherited ownership, umask, setgid, and GUI permission repair. The thread contains no IceWhale reply or confirmed product change.

このソースは、実際の所有権が決まるレイヤーを正しく示しています。コンテナがマウントされた ZimaOS フォルダー内にディレクトリを作成すると、新しいディレクトリは通常、親フォルダーが自動的に強制するはずだと期待した権限ではなく、コンテナ内で実行されているプロセスのユーザー情報と umask の動作を引き継ぎます。

そのため、全ユーザーに書き込み権限がある親ディレクトリでも、新しく作成されたサブフォルダーが root:root0755 になることがあります。アプリケーションが root として実行され、デフォルトの umask を使用している場合、イメージが PUID/PGID、特定のコンテナユーザー、setgid によるグループ継承、デフォルト ACL、その他の権限モデルに対応していない限り、root 所有の子ディレクトリが作成されるのは想定される動作です。

元の例はマウントされたバックアップフォルダーでした

ユーザーは、次のようなパスを説明していました。

/media/Daten/Backup

このフォルダー内で、新しく作成されたサブフォルダーが次のようになっていました。

root:root
drwxr-xr-x

その結果、UID 999 などの非 root ユーザーは、新しい子ディレクトリ内のファイルを読み取ることはできても、作成することはできませんでした。

親ディレクトリを 0777 にしても子の所有者は強制されません

親ディレクトリの書き込み権限によって、コンテナ内のプロセスは子を作成できます。しかし、ファイルシステムやグループのルールでその動作を設定していない限り、子の所有者やグループが親から自動的に継承されるわけではありません。

通常の結果は、作成元プロセスの UID/GID と、そのプロセスの umask によって決まります。

コンテナイメージが対応している場合のみ PUID/PGID を使用する

LinuxServer 系のイメージの多くは、PUIDPGID の環境変数を提供しています。一方、これらの変数を完全に無視し、Docker の user: フィールドやアプリケーション固有の設定を必要とするイメージもあります。

IceWhale の現在の Syncthing ガイダンスでは、次のコマンドを使って実際の ZimaOS ユーザー ID を確認するよう明示的に案内しています。

id -u username
id -g username

その後、確認した値をアプリの PUID/PGID フィールドに入力します。

現在の ZimaOS の PUID/PGID 例を参照してください。

umask は作成時に除去される権限ビットを制御します

一般的な umask である 022 の下で、アプリが基本モード 0777 のディレクトリを作成すると、ディレクトリの権限は 0755 になります。グループで共同作業する運用では、アプリケーションが対応している場合、別の umask を使用することがあります。

1 つのアプリを修正するためだけに、システム全体で極端に制限の緩い umask を設定しないでください。

setgid は新しいサブフォルダーで共有グループを維持するのに役立ちます

Linux ネイティブのファイルシステムでは、共有ディレクトリに setgid ビットを設定すると、新しく作成された子がそのディレクトリのグループを継承するようにできます。これは、複数のサービスやユーザーが意図的に 1 つのグループを通じて共同作業する場合に便利です。

ただし、作成元プロセスのユーザー ID は変更されません。また、マウントオプションによって Unix の所有権を再現する NTFS/exFAT マウントでは、同じように動作しない場合があります。

デフォルト ACL によって、より明示的な継承を設定できます

POSIX ACL に対応するファイルシステムでは、デフォルト ACL エントリによって、新しく作成される子が受け取る権限を定義できます。バックアップジョブのたびに再帰的な chmod を実行するよりも、こちらのほうが整理された方法になることがよくあります。

特定のストレージパスについて、現在の ZimaOS UI が ACL の完全な設定手順を提供しているかどうかは、シェルだけの設定に依存する前に確認してください。

元の内容は、既存の ZimaOS 設定ではなく機能要望でした

投稿者は、グローバルな PUID/PGID 制御、継承切り替え、umask 処理、setgid 対応、再帰的な修正を行う GUI を要望していました。このスレッドには、IceWhale がこれらの機能の実装を確認した回答はありません。

要望の一覧を、現在利用できる「設定」項目として説明しないでください。

ディスク全体を再帰的に変更する前に、アプリのユーザー情報を修正する

バックアップアプリが root 所有のフォルダーを繰り返し作成する場合、ジョブのたびに chown -R を実行するのは症状への対処にすぎません。まずコンテナのユーザー情報、グループ、umask を正しく設定し、その後で影響を受けたツリーだけを修復してください。

現在の ZimaOS アプリ設定では、ユーザーがボリュームのマッピングとアプリ設定を確認できます。ただし、利用できる正確な権限関連の変数はイメージによって異なります。

マウントされたフォルダーの所有権に関する FAQ

書き込み可能な親ディレクトリの下で、なぜ子フォルダーが root:root になるのですか?

コンテナ内のプロセスが root として作成したためです。親ディレクトリが作成元のユーザー情報を自動的に上書きすることはありません。

すべての Docker イメージで PUID と PGID は機能しますか?

いいえ。これらはイメージ固有の環境変数の慣例であり、Docker 共通の変数ではありません。

IceWhale は、グローバルな権限継承切り替え機能を元の内容で確認しましたか?

いいえ。このスレッドは機能要望であり、実装を確認する情報はありません。