chroot で「/dev/null: Permission denied」が繰り返し発生する問題を修正

chroot で「/dev/null: Permission denied」が繰り返し発生する問題を修正

で外部ディスクに chroot しましたが、コマンドが機能しているように見えても、sudo chroot /mnt/disk実行するほとんどすべての操作 (ログイン、タブ補完、lessファイルの など) で に関するエラーが発生します。/dev/null: Permission denied

/dev/null には正しい権限 (666) があり、fileキャラクター デバイスであると表示されるため、通常のファイルで上書きされたり、権限が変更されたりすることはありません。

これを修正するにはどうすればいいでしょうか?

タブ補完 (のls /u) の結果は次のようになります。

$ ls /ubash: /dev/null: Permission denied
bash: _upvars: `-a2': invalid number specifier
bash: /dev/null: Permission denied
bash: _upvars: `-a0': invalid number specifier

答え1

ディスクは次のように解釈されるnodevオプションを使用してマウントされる可能性がありますmount

ファイル システム上の文字またはブロック特殊デバイスを解釈しません。

これを確認するには、次の出力をチェックします。mount chroot:

$ mount
...
/dev/sda1 on /mnt/disk type ext4 (rw,nosuid,nodev,relatime,data=ordered,uhelper=udisks2)

(chroot 外部の設定が chroot 内部のプログラムの動作に影響を与えるため、これは特に見つけにくい問題です!)

これを修正するには、オプションなしで再マウントするだけですnodev。次のコマンドでこれを実行できます(chrootプロセスが実行中でも!)。ただし、おそらく削除する方法もあります。ただnodev他のオプションもすべて削除せずにこのオプションを選択します。

sudo mount -o remount /dev/sda1 /mnt/disk

関連情報