次へインストール、ループはまだルート所有権を割り当てます。

次へインストール、ループはまだルート所有権を割り当てます。

ファイルに仮想ドライブを設定しようとしています。これにより、ファイルがフラッシュデバイスに書き込まれます(関連なし)。仮想ドライブの作成と操作はスクリプト内で行われるため、rootではなくユーザースペースでこれを行う必要があります。このスクリプトは、フラッシュデバイスの構築とイメージングに使用されます。したがって、rootとして実行すると問題が発生します。

このファイルを仮想ドライブとしてマウントするために、/etc/fstabに次の行を追加しました。

/home/user/drive.img /home/user/mnt ext4 loop,rw,user,noauto,noexec 0 0

問題は、仮想ドライブをマウントするときにルートが〜/ mntの所有権を持っているため、通常のユーザーとしてマウントしようとする目的が失われることです。

他のファイルシステムでは、uid / gidを指定したときにマウントできることがわかりますが、既存のプロセスと互換性があるには仮想ドライブがext4である必要があります。 udisksctlを試しましたが、ループバックするにはルート認証が必要です。

マウントしてから所有権を変更しようとしますが(ルートとして)、マウント解除しません。 「同期」を実行してから、仮想ドライブのスナップショットを撮ります。綺麗ではなくて気に入らないけど今は大丈夫そうです。

答え1

記載されていない手順は、問題の原因であるext4ファイルシステムを作成する方法です。を使用すると、mkfs.ext4 /home/user/drive.imgルートが所有するルートinodeが生成されるため、マウントしてもまだルートに属します。

解決策は、そのユーザーを実際のユーザーまたは一部の明示的な数値ユーザーとグループID-E root_ownerに属させるオプションを追加することです。 (もう一つの解決策は(Fedoraのパッケージ)を使ってinodeを編集することです。)この例は私にとって効果的でした。mkfs.ext4-E root_owner=$uid:$giddebugfse2fsprogs

uid=$(id -u)
gid=$(id -g)
rm -f /tmp/ext4fs
truncate -s 50M /tmp/ext4fs
if true
then mkfs.ext4 -E root_owner=$uid:$gid /tmp/ext4fs
else mkfs.ext4 /tmp/ext4fs
     debugfs -w -R "set_inode_field . uid $uid" /tmp/ext4fs
     debugfs -w -R "set_inode_field . gid $gid" /tmp/ext4fs
fi
# echo '/tmp/ext4fs /tmp/mymnt ext4 loop,rw,user,noauto,noexec' >>/etc/fstab
mkdir -p /tmp/mymnt
mount /tmp/ext4fs
ls -lRa /tmp/mymnt
touch /tmp/mymnt/afile
ls -l /tmp/mymnt
umount /tmp/ext4fs

インストール時にlsマウントポイントを次のように表示します。

drwxr-xr-x  3 meuh  users  1024 May 15 21:04 .

そこにファイルを作成することができます。

関連情報