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:
1 2 3 4 5 6 7 |
bash-4.2# namei -l /foo/bar/baz/run f: foo/bar/baz/run dr-xr-xr-x root root / drwxr-xr-x root root foo drwxr-xr-x root root baz drwxr-xr-x root root baz -rwxr--r-- root root run |
Hier sieht man dann, dass nur der Nutzer root die Datei ausführen kann.
Debugging einfacher gemacht.
Linux und Open Source Enthusiast. Aus dem traditionellen Betrieb kommend, schlage ich jetzt Brücken zwischen Betrieb und Entwicklung und tauche nebenbei in die Cloud-Native Landschaft ein.