7.3. Warum bekommt root 'permission denied'-Meldungen?

7.3.1

Wenn root eine "Permission denied"-Meldung bekommt, kann das mehrere Ursachen haben.

Der einfachste Grund ist schlicht und einfach, dass die aufgerufene Datei keine Ausführrechte hat. Beispiel:

root@host:~ $ ls -l ./irgendwas.txt
-rw-r--r--  1 root root 4711 2004-09-16 22:29 irgendwas.txt
root@host:~ $ ./irgendwas.txt
bash: ./irgendwas.txt: Permission denied.

Fehlende Verzeichnisrechte (x-bit in einem der übergeordneten Verzeichnisse nicht gesetzt) können zu einer ähnlichen Fehlermeldung führen, allerdings nicht bei root. Als User kann man diesen Fehler leicht nachprüfen, indem man per cd versucht, ins entsprechende Verzeichnis zu wechseln.

Eine weitere mögliche Fehlerursache ist, dass die betreffende Partition mit der noexec-Option gemountet ist. Zu kontrollieren ist das durch Lesen der Ausgabe von mount. Übrigens: Die Mountoptionen user und users implizieren noexec. Sollte das nicht gewünscht sein, kann man die Mountoption user,exec verwenden (die Reihenfolge ist wichtig!).

Ein weiteres Problem kann im Zusammenhang mit NFS-mounts auftreten - wenn auf dem NFS-Server die Option no_root_squash nicht gesetzt ist (das ist die Standardeinstellung) - in diesem Fall werden Zugriffe durch root auf den "anonymous"-User umgemappt, der üblicherweise keine (Schreib-)Rechte hat.

Ab SUSE Linux 10.1 kann auch AppArmor für fehlende Rechte verantwortlich sein - nachzulesen ist das in /var/log/audit/audit.log. Falls der Zugriff künftig erlaubt sein soll, kann man mit YaST2 das AppArmor-Profil anpassen.

Wenn diese Möglichkeiten geklärt sind und nicht zutreffen, bleibt noch die letzte und unangenehmste Möglichkeit. Dabei kann es vorkommen, dass bereits ls eine Fehlermeldung bringt:

root@host:~ $ ls -la /sbin/*fetch*
-bash: /sbin/rcfetchmail: Permission denied

Fehler in diesem Stadium deuten meist auf einen Defekt im Dateisystem hin. Ein fsck der betroffenen Partition ist dann dringend anzuraten.

Vor Reparaturen am Dateisystem empfiehlt es es sich grundsätzlich, ein Backup anzufertigen, da z. B. reiserfsck --rebuild-tree schon zu einigen Nebenwirkungen geführt hat.

(cboltz)