Zugriff auf / dev / null nicht möglich: Berechtigung verweigert, obwohl crw-rw-rw-1 root root 1, 3. September 21 12:05 / dev / null

11

Auf Benutzer postgres:

$ ls -l /dev/null
ls: cannot access /dev/null: Permission denied

Bei User Root sind die Berechtigungen korrekt:

# ls -l /dev/null
crw-rw-rw- 1 root root 1, 3 Sep 21 12:05 /dev/null

Ich habe versucht, es neu zu erstellen:

# rm /dev/null && mknod -m 0666 /dev/null c 1 3

Das Ergebnis ist jedoch dasselbe. Ich bin auf einem VPS mit einem Debian 7 und Kernel 2.6.32 auf einem x86_64

lalebarde
quelle

Antworten:

18

Das Problem ergab sich aus den Berechtigungen für / dev:

# ls -ld /dev
drwx------ 3 root root 4096 Sep 21 12:12 /dev

Daher war / dev für Benutzer nicht zugänglich.

# chmod a+x /dev
# chmod a+r /dev

Problem gelöst.

lalebarde
quelle
Also möchte ich wissen, warum es diese Berechtigungen hatte. Möglicherweise möchten Sie neu installieren. Alles in / dev wird vom Kernel verwaltet und es ist seltsam, dass es die falschen Berechtigungen hat.
Cripto
nein, alles in / dev ist nicht "kernel verwaltet".
bis
@tlund Bitte überprüfen Sie Ihr Lieblings-Kernel-Buch. "/ dev Verzeichnis spiegelt den aktuellen Status des Kernels wider
cripto
@ user1048138: Ich würde es auch gerne wissen. Ich habe mit einem automatischen Debian 7-Setup von meinem VPS-Anbieter begonnen. Dann habe ich aktualisiert, aktualisiert, nur apt-get verwendet. Plus ein Paket von "Hand" mit wget some_domain / some_package.deb ; dpkg -i some_package.deb; apt-get -f installieren. Zu einem bestimmten Zeitpunkt wurde / dev / null in eine Standarddatei geändert, und die Berechtigungen für / dev wurden geändert. Mehr kann ich nicht sagen.
Lalebarde
1

Ich hatte ein ähnliches Problem und kam hierher, indem ich nach den Symptomen suchte, aber die Lösung passte nicht zu meinem Fall. Daher möchte ich einen weiteren möglichen Grund hinzufügen, auch wenn er nicht genau zum OP passt.

In meinem speziellen Fall habe ich proot(eine schöne chrootHülle) verwendet. Aber die Berechtigungen waren an /dev/nullund für /devsich korrekt .

Es war zufällig der Mount des chrootVerzeichnisses, über den ich thunarals normaler Benutzer gearbeitet habe. In diesem Fall hatte der Mount also nicht die richtigen Berechtigungen.

Sie haben eine schlechte Zeit, um dies zu finden, da Sie diese Berechtigungen nicht sehen, wenn Sie nur die Dateien betrachten.

Der allgemeine Lösungspfad besteht darin, die Bedingungen am Problemort ( /dev/null) zu überprüfen und zur nächsten Ebene (n) ( /dev), dann zum Mount, zum Dateisystem usw. zu gelangen, was auch immer als nächstes kommt.

Bei jedem Schritt können Sie mehrere Voraussetzungen haben, von denen jede ihre eigenen äußeren Ebenen hat. Beispielsweise könnte sich der Benutzer in einer falschen Gruppe befinden, was zur Gruppenkonfigurationsdatei führt, die falsche Berechtigungen usw. haben könnte.

Natürlich muss man im Allgemeinen einer Art Baum folgen.

Harald
quelle
0

Ich konnte dieses Problem nicht selbst lösen, also habe ich Folgendes getan:

mycommand.sh | echo -n

Der echoBefehl berücksichtigt die Standardeingabe nicht und wird daher verworfen. Und das -nist so, dass eine nutzlose Newline nicht auf stdout gedruckt wird.

Mark Stewart
quelle
1
Dies könnte zwar die Frage beantworten, aber es wäre eine bessere Antwort, wenn Sie eine Erklärung dafür liefern könnten .
DavidPostill
1
Ja, aber wie beantwortet es die Frage "kann nicht auf / dev / null zugreifen: Berechtigung verweigert, obwohl crw-rw-rw-1 root root 1, 3. September 21 12:05 / dev / null"?
DavidPostill
1
Es beantwortet die Frage nicht. Es bietet jedoch eine Problemumgehung. Manchmal gibt es keine ideale direkte Antwort.
Mark Stewart
0
chmod a+rw /dev/null /dev/random /dev/urandom /dev/ptmx /dev/tty /dev/zero /dev/full /dev/fuse /dev/net/tun

Dies ist, was mein Problem auf VPS lösen. Bitte beachten Sie, dass Sie diesen Befehl nach dem Neustart Ihres Servers erneut ausführen müssen

Zore
quelle