'/ Dev / null: Berechtigung verweigert' wiederholt in Chroot behoben

880
Josh

Ich habe mit einer externen Festplatte chrootiert sudo chroot /mnt/disk, aber fast alles, was ich mache (Einloggen, Tab-Vervollständigung, lessDatei einlesen, ...), führt zu einer Fehlermeldung /dev/null: Permission denied, selbst wenn der Befehl zu funktionieren scheint.

/ dev / null hat die richtigen Berechtigungen (666) und gibt an, filedass es sich um ein Zeichengerät handelt. Es ist also nicht so, als hätte etwas es mit einer regulären Datei überschrieben oder die Berechtigungen geändert.

Was kann ich dagegen tun?

Folgendes führt die Tab-Vervollständigung (von ls /u) aus:

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

1 Antwort auf die Frage

1
Josh

Die Platte könnte mit der nodevOption gemountet sein, die folgendermaßen mountinterpretiert:

Interpretieren Sie keine Zeichen oder blockieren Sie keine speziellen Geräte im Dateisystem.

Sie können dies überprüfen, indem Sie die Ausgabe mount außerhalb der Chroot überprüfen :

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

(Dies ist ein besonders schwieriges Problem, das entdeckt werden muss, da die Konfiguration außerhalb der Chroot das Verhalten von Programmen beeinflusst.)

Das Beheben ist so einfach wie das Remounting ohne die nodevOption. Der folgende Befehl wird dies bewerkstelligen (sogar während der Chroot-Prozess läuft!), Obwohl es wahrscheinlich eine Möglichkeit gibt, die nur die nodevOption entfernt, ohne alle anderen Optionen zu entfernen:

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