Gibt es für eine Datei beispielsweise einen einzelnen Befehl, der die Berechtigungen für und alle Verzeichnisse in ihrem Pfad vom Stammverzeichnis aus /var/some_dir_1/some_dir_2/some_dir_3/some_file
auflistet , also die Berechtigungen für , , , ?some_file
var
some_dir_1
some_dir_2
some_dir_3
Antwort1
namei
Sie können mit -l
(long) auf einem absoluten Pfad verwenden :
namei -l /absolute/path/to/file
Sie erhalten ungefähr Folgendes:
dr-xr-xr-x root root /
drwxr-xr-x root root absolute
drwx------ user1 group1 path
drwxr-xr-x user1 group1 to
-rw-r--r-- user1 group1 file
Sie müssen den vollständigen Pfad angeben. Wenn Sie ihn nicht eingeben möchten, können Sie realpath
oder verwenden readlink
.
namei -l $(readlink -m relative_path_to/file)
Antwort2
Das folgende bash
Skript druckt alle Berechtigungen des als Argument übergebenen Verzeichniseintrags und aller seiner übergeordneten Einträge bis zu /
:
#!/usr/bin/env bash
[[ $# -eq 1 ]] || exit 1
FILEPATH="$1"
while true ; do
ls -ld "$FILEPATH"
[[ "$FILEPATH" != "/" ]] || exit
FILEPATH="$( dirname "$FILEPATH" )"
done
Speichern Sie es zB parent_permissions.sh
und führen Sie es mit aus /path/to/parent_permissions.sh /path/to/file
.
Es funktioniert nur mit absoluten Pfaden, es sei denn, es wird mit readlink -f
oder demabspath
Skript aus dieser Antwort. In diesem Fall müssen Sie die ursprüngliche Zuweisung wie FILEPATH
folgt ändern:
FILEPATH="$( abspath "$1" )"
Unter Linux könnte dies funktionieren (ungetestet):
FILEPATH="$( readlink -f "$1" )"
Beispielausgabe:
drwxr-xr-x 66 danielbeck staff 2244 2 Feb 12:38 /Users/danielbeck
drwxr-xr-x 11 root admin 374 1 Feb 15:21 /Users
drwxrwxr-t 35 root admin 1258 22 Jan 23:09 /
Fügen Sie dem ls
Aufruf Argumente hinzu oder ersetzen Sie ihn z. B. durch getfacl
, je nachdem, was auf Ihrem System angebracht ist, um ACLs und erweiterte Attribute auszudrucken, wenn Sie daran interessiert sind.