Berechtigung / Eigentümer des vollständigen Verzeichnisbaums anzeigen


27

Ich erinnere mich, etwas wie "XXX / home / user / dir / child / file" gemacht zu haben und es gab den Besitzer und / oder die Erlaubnis von:

/home
/home/user
/home/user/dir
/home/user/child
/home/user/child/file

Aber ich erinnere mich nicht, was dieser Befehl war. Jemand eine Idee?


Nicht etwas zu sehen von Aufklärung apropos modeoder apropos permissionsauf OS X und Debian. Wissen Sie, welche Plattform / Distribution Sie verwendet haben? Könnte es ein standortlokaler Befehl gewesen sein? Sie könnten ein solches Tool mit dirnameund skripten stat.
mrb

Verwenden Sie Arch Linux und eine hübsche Vanille-Installation, damit nicht zu viele zusätzliche Tools installiert werden. Beachten Sie, dass es Eigentümer und / oder Berechtigungen waren, ich bin mir zu diesem Zeitpunkt nicht sicher. Beides wäre nützlich.
Bitte löschen Sie mich

Antworten:


31

Der Befehl könnte gewesen sein:

namei -m /home/user/dir/child/file

6
namei -moist toll, dass es dir auch den besitzer gibt.
ErdeMeLon

2
ACHTUNG: namei zeigt keine Linux-ACLs oder SELinux-MACs an. Ich fand heraus, dass eine ACL Nginx blockiert, indem ich manuell nachsudo su nginx -s/bin/bash
Ray Foss vom

28

Ich denke, Sie könnten an den treeBefehl denken . Beispielsweise:

$ tree -pufid apps/glassfish3/ | less
apps/glassfish3
[drwxr-xr-x saml    ]  apps/glassfish3/bin
[drwxr-xr-x saml    ]  apps/glassfish3/glassfish
[drwxr-xr-x saml    ]  apps/glassfish3/glassfish/bin
[drwxr-xr-x saml    ]  apps/glassfish3/glassfish/config
[drwxr-xr-x saml    ]  apps/glassfish3/glassfish/docs
[drwxr-xr-x saml    ]  apps/glassfish3/glassfish/docs/api
[drwxr-xr-x saml    ]  apps/glassfish3/glassfish/docs/api/doc-files
[drwxr-xr-x saml    ]  apps/glassfish3/glassfish/docs/api/javax
[drwxr-xr-x saml    ]  apps/glassfish3/glassfish/docs/api/javax/annotation
[drwxr-xr-x saml    ]  apps/glassfish3/glassfish/docs/api/javax/annotation/security
[drwxr-xr-x saml    ]  apps/glassfish3/glassfish/docs/api/javax/annotation/sql
[drwxr-xr-x saml    ]  apps/glassfish3/glassfish/docs/api/javax/decorator
[drwxr-xr-x saml    ]  apps/glassfish3/glassfish/docs/api/javax/ejb
[drwxr-xr-x saml    ]  apps/glassfish3/glassfish/docs/api/javax/ejb/embeddable
...
...

Die obigen Schalter bewirken Folgendes:

  • -p - Berechtigungen
  • -u - Benutzername / Benutzer-ID
  • -f - vollständigen Pfad
  • -i - Keine Einrückungslinien drucken
  • -d - Nur Verzeichnisse drucken

Verweise


3
Ich denke, es wurde gebeten, die Vorfahren /home/user/dir/child/fileder Kinder nicht anzuzeigen .
Raphael Ahrens

@RaphaelAhrens - ja, das ist mir klar, aber es gibt keinen Befehl, von dem ich weiß, dass er genau das tut. Es gibt jedoch den Baum-Befehl, der das tut, was ich gezeigt habe, und der ist verdächtig ähnlich dem, woran das OP gedacht hat.
SLM

Ist das -uwirklich nötig? Es scheint, dass es hier Standard ist (Tree Version 1.6.0 unter GNU Bash 4.2.45). Gibt es eine Option, um den "Benutzernamen / Benutzer-ID" zum Schweigen zu bringen?
Nikos Alexandris

1
@NikosAlexandris - Wenn ich diesen Schalter drücke, erhalte ich keinen Benutzernamen. Mein ver: tree v1.6.0. Ich bin auf Fedora 19, GNU bash, Version 4.2.45 (1) -release (x86_64-redhat-linux-gnu).
slm

Unterschiedliche "Vorgaben" zwischen den Bash-Versionen? Danke für die Information.
Nikos Alexandris

3

Nachdem ich ein bisschen nachgedacht hatte, kam ich auf diese Idee

#!/bin/sh
l_path=$1
while [ "$l_path" != / -a "$l_path" != . ]; do
     ls -ld $l_path
     l_path=$(dirname -- "$l_path")
done

Die Ausgabe sieht so aus

-rw------- 1 tant tant 181016423 Jun 25 23:49:17 2013 /home/tant/test_file
drwxr-xr-x 85 tant tant 5632 Jul  9 19:40:11 2013 /home/tant
lrwxr-xr-x 1 root wheel 8 Sep  4 23:53:27 2012 /home -> usr/home

Ich hoffe es ist in Ordnung, dass es in umgekehrter Reihenfolge ist.

Basierend auf den Kommentaren ist hier eine Möglichkeit, eine Liste von der Wurzel abwärts zu erstellen:

#!/bin/sh
l_path=$1
while [ "$l_path" != / -a "$l_path" != . ]; do
     ls -ld $l_path
     l_path=$(dirname -- "$l_path")
done | sed '1!G;h;$!d'

1
Sie können mit umkehren, | tacwenn Sie es haben, oder | sed '1!G;h;$!d'wenn nicht.
mrb

2
Dies wird für relative Pfade unterbrochen. Mach [ "$l_path" != / -a "$l_path" != . ]stattdessen.

@Evan Teitelman Dirname sollte den vollständigen Pfad angeben
Raphael Ahrens

1
@RaphaelAhrens nein, es wird am Ende einen Punkt für den relativen Pfad zurückgeben.
Ansturm

1
Auch stat -lsollte wohl statoder sein ls -ld.

0

In dem Verzeichnis, in dem Sie die Berechtigungen und Eigentümer des Vorgängers erfahren möchten:

for i in $(seq 0 $(pwd | tr -cd / | wc -c)) ; do pwd ; ls -lad ; cd .. ; done

Beachten Sie, dass Sie sich danach in /:) befinden, wenn Sie zu Ihrem ursprünglichen Standort zurückkehren möchten, schließen Sie den Befehl in den Ordner ein

HERE=$(pwd)
...
cd ${HERE}

-1

Der Befehl, den Sie zum Auflisten von Berechtigungen und Eigentümern / Gruppen benötigen , lautet ls -l .

Die Option -l wird für ein langes Listenformat verwendet.

ls -l / path / to / list

Wenn Sie außerdem die versteckten Dateien auflisten möchten, fügen Sie die Option -a (all) hinzu .

ls -al / path / to / list

Auch, wenn Sie auf die Liste Berechtigungen in Ihrem wollen Verzeichnisse verwenden -R (rekursiv) Option.

ls -Rl / path / to / list

Die erste Spalte zeigt die Berechtigungen (Lesen (r), Schreiben (w), Ausführen (x)) und einige spezielle Berechtigungen (Verzeichnisse (d), - (reguläre Datei)) und die dritte und vierte Spalte zeigt Ihnen die Datei / das Verzeichnis Eigentümer bzw. Gruppe.


2
Ich glaube nicht, dass danach gefragt wird. Es sieht so aus, als würde der Fragesteller nach einer Liste von Berechtigungen für Verzeichnisse suchen, die zu einer Datei führen.
Mat
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.