Aus der beliebten Kategorie “Fehler im Linux-System und wie man sie lösen kann”.

Heute: “Permission denied” Probleme beim Zugriff auf einzelne Dateien und wie man schnell die Rechte der Dateien und darüber liegenden Ordner überprüfen kann.

Ein Prozess läuft als nicht privilegierter Nutzer und möchte die Datei run unter /foo/bar/baz/run ausführen. Dabei bekommt er ein “Permission denied”. Jetzt gilt es, herauszubekommen, an welchem Punkt im Dateipfad das Problem auftritt: Bereits beim Zugriff auf einen Ordner, beim Zugriff auf die Datei oder beim Ausführen der Datei.

Jetzt könnte man für jeden Ordner die Rechte einzeln überprüfen und hoffen, den Fehler zu finden. Schneller und einfacher ist es jedoch, das linux-tool namei zu nutzen.

  • namei – follow a pathname until a terminal point is found
  • namei uses its arguments as pathnames to any type of Unix file (symlinks, files, directories, and so forth).  namei then follows each pathname until an endpoint is found (a file, a directory, a device node, etc).  If it finds a symbolic link, it shows the link, and starts following it, indenting the output to show the context.

Eine angenehme Option von namei ist, mittels -l den Besitzer und die Rechte aller Dateien und Ordner des kompletten Dateipfades anzeigen zu lassen.

Soll also zum Beispiel überprüft werden, warum Nutzer apache nicht auf die Datei run zugreifen kann, wird folgendes ausgeführt:

Hier sieht man dann, dass nur der Nutzer root die Datei ausführen kann.

Debugging einfacher gemacht.