
ループデバイス(つまり、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/$USER
udiskが管理するローカルハードドライブと同様に、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_user
。mkfs.ext4