udisks2を使用してユーザーが読める画像のマウント

udisks2を使用してユーザーが読める画像のマウント

ループデバイス(つまり、rawディスクイメージをマウントするために使用されます)は、root権限なしでudiskを使用して管理できます。

テスト目的でイメージを作成し、次のようにフォーマットすることができます。

dd if=/dev/urandom of=img.img bs=1M count=16
mkfs.ext4 img.img

次に、udiskを使用して設定します。

udisksctl loop-setup -f img.img

これは、イメージ用のループデバイスを作成し、/run/$USERudiskが管理するローカルハードドライブと同様に、udiskの下の新しいディレクトリにマウントします。ただ権限が私が期待していたものと異なるということだけです。

# ls -l /run/media/$USER/
drwxr-xr-x 3 root  root   1024 Apr 10 11:19 [some id]
drwx------ 1 auser auser 12288 Oct 30  2012 [a device label]

リストされた最初のデバイスは、ルートが所有していて他の人が書き込めないループデバイスです。 2番目は、マウントされたユーザーに属し、比較に使用されるマウントされたローカルハードドライブまたはUSBペンデバイスです。単にrootとして実行すると、chmodこの問題を解決できることがわかります。

しかし、udiskはなぜ他の権限と所有者を割り当てるのですか?他の目的で設定できますか?

ベストアンサー1

udisks2のソースコードをよく見て、そこで解決策を見つけました。

ユーザー権限に基づいて正しくインストールされたデバイスは、古いファイルシステムでフォーマットされます。たとえば、所有者を設定するオプションをfat受け入れてインストールuid=します。gid=Udisksは、これらのオプションをマウント要求を行うユーザーのユーザーとグループIDに自動的に設定します。

extファミリなどの最新のファイルシステムにはそのようなオプションはなく、代わりにルートノードの所有者とモードを覚えています。それで、chown auser /run/media/auser/[some id]本当に絶え間ないことでした。別のアプローチは、新しく作成されたファイルシステムのuidとgidをそれぞれの作成者に初期化することです-E root_usermkfs.ext4

おすすめ記事