このコマンドを使用してイメージファイルをフォーマットし、mkfs
root権限なしでそのイメージファイルにファイルをコピーしようとしています。
何らかの理由でroot権限が必要なローカルディレクトリにイメージをマウントしようとしました。 (理由についてのコメントを歓迎します)
ルート権限なしでファイルをフォーマットされたイメージにコピーするための広くサポートされている方法はありますか?
編集する:画像フォーマットはFAT-32です。
答え1
これに加えて、マウントはファイルシステム構造をブロック/上書きする可能性があるため、通常はroot権限がなければ何もマウントできません。これが実行または実行されたように見える場合は、通常ルートとして実行されるマウントヘルパープログラム(fusermount、udisksなど)が含まれます。
何らかの理由でマウントサポートが利用できない場合、「フォーマットされたイメージにファイルをコピーする広くサポートされている方法」は、ルートを含めずにファイルを含むイメージをmkisofs
作成することです。
ユーザー空間プログラムで機能(およびそれ以上)を実装することは完全に可能ですmkisofs
が、ほとんどの人がインストールするのに問題がないため、ほとんどのファイルシステムにそのようなプログラムが存在するかどうかはわかりません。
部分がext*
あるからです。debugfs
$ echo Hello World > hello.txt
$ truncate -s 100M foobar
$ /sbin/mkfs.ext4 foobar
$ /sbin/debugfs -w foobar
debugfs 1.42.11 (09-Jul-2014)
debugfs: ls
2 (12) . 2 (12) .. 11 (20) lost+found
debugfs: mkdir hey
debugfs: mkdir what
debugfs: mkdir up
debugfs: ls
2 (12) . 2 (12) .. 11 (20) lost+found 12 (12) hey
13 (12) what 14 (956) up
debugfs: write hello.txt hello.txt
Allocated inode: 15
debugfs: cat hello.txt
Hello World
だからこれが効果があるようです。自動化は可能-f cmdfile
ですが(オプション)宿題のように聞こえます。
答え2
デフォルトでは、マウントされたファイルシステムはルート用に予約されています。多くのファイルシステムにより、ユーザーはディスクイメージ制御(setuidファイルの作成など)権限を取得できます。
一つを探すヒューズイメージのファイルシステムをサポートするファイルシステムの実装です。カーネルファイルシステムドライバとは異なり、FUSEファイルシステムドライバは権限なしでユーザースペースで実行されます。残念ながら、すべてのファイルシステムにFUSE実装があるわけではありません。特に、読み書き ext4 FUSE の実装についてはわかりません。
抵抗が最も少ないパスは、通常、仮想マシンを介してファイルシステムイメージにアクセスすることです。