Befehl zum Auflisten der Berechtigungen für Dateien und alle Ordner vom Stammverzeichnis bis zum Dateipfad

Befehl zum Auflisten der Berechtigungen für Dateien und alle Ordner vom Stammverzeichnis bis zum Dateipfad

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_fileauflistet , also die Berechtigungen für , , , ?some_filevarsome_dir_1some_dir_2some_dir_3

Antwort1

nameiSie 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 realpathoder verwenden readlink.

namei -l $(readlink -m relative_path_to/file)

Antwort2

Das folgende bashSkript 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.shund 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 -foder demabspathSkript aus dieser Antwort. In diesem Fall müssen Sie die ursprüngliche Zuweisung wie FILEPATHfolgt ä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 lsAufruf 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.

verwandte Informationen