blog · git · desktop · images · contact & privacy · gopher


Vergessenes Tool des Tages: „namei“

Situation: Programm „x“ will als User „y“ auf Pfad „z“ zugreifen, kann’s aber nicht, weil ihm die Rechte fehlen. Wie erhalte ich jetzt schnell eine Übersicht über die Rechte entlang des gesamten Pfades? Immerhin braucht der jeweilige User zumindest „search“-Rechte (gesetztes „x“) für jedes Verzeichnis des Pfads.

Ist der Pfad lang genug, wird’s mit „ls“ schnell mühsam. Klar, ich kann eine Schleife schreiben. Muss ich aber nicht, denn es gibt fantastischerweise ein kleines Programm für genau diesen Zweck: „namei“ aus dem util-linux-Paket.

Sinnvoll ist es wohl, standardmäßig die Parameter „-x“ und „-l“ zu verwenden, dann erhält man einen guten Überblick:

$ namei -xl ~/cuni/Code/C/lib/simplemath/
f: /home/void/cuni/Code/C/lib/simplemath/
Drwxr-xr-x root root  /
Drwxr-xr-x root root  home
drwx------ void users void
lrwxrwxrwx void users cuni -> work/uni201101SS/
drwxr-xr-x void users   work
drwxr-xr-x void users   uni201101SS
drwxr-xr-x void users Code
drwxr-xr-x void users C
drwxr-xr-x void users lib
drwxr-xr-x void users simplemath

Er sagt mir also auch brav, wie es um beteiligte Symlinks steht. Bei seiner Reise entlang des Pfads startet das Tool an der ersten angegebenen Komponente, hier also „/“, und steigt dann immer tiefer hinab. Ein „namei -xl .“ bringt also leider nichts, man muss schon den gesamten Pfad angeben oder zusätzlich „readlink“ nutzen.

Besonders hilfreich ist das Tool wohl, wenn irgendwo im Netz wieder die Frage auftaucht, „warum kann mein Programm das Verzeichnis nicht lesen?“ Den Fragenden dann zu bitten, für jedes Verzeichnis ein „ls“ auszuführen, ist mühsam und fehleranfällig. „namei“ löst das Problem. Genau deshalb bin ich auch wieder auf das Programm gestoßen.