Wie liste ich die öffentlichen Dateien in meinem Home-Verzeichnis auf? (Modus 777)

7

Ich möchte die Liste aller Dateien in meinem Home-Ordner abrufen, die rwx(Lese-, Schreib-, Ausführungs-) oder 777-Berechtigungen für alle Benutzer haben .

Wie lautet der Befehl, um die Berechtigungen einer Datei zu kennen?

Acht
quelle

Antworten:

12

Vom Terminal:

  • Das Terminal wird standardmäßig in Ihrem Home-Verzeichnis geöffnet. Geben Sie von einer anderen Stelle aus ein, cd ~um zum Ausgangsverzeichnis zurückzukehren.

  • ls -l zeigt Ihnen zu Beginn die Dateiberechtigungen an, z

    -rwxr-xr-x 1 izx izx 11217428 Oct 2 2011 wkhtmltoimage-amd64

Erste Methode: Der Weg des Beobachtens und Lernens

  • Sie können dann mit grep filtern, um das gewünschte Ergebnis zu erhalten:

    ls -l | grep -P ".{7}rwx.*"
    • Der reguläre Ausdruck hier weist grep an, nur Zeilen auszuwählen, in denen sich die Zeichen 8-10 befinden rwx
  • was in meinem Home-Verzeichnis zeigt:

    -rwxrwxrwx 1 izx izx 0 Jun 15 23:42 sd.png
    -rwxrwxrwx 1 izx izx 0 Jun 15 23:42 slashdot.png
    drwxrwxrwx 3 izx izx 4096 15. Juni 21:31 src
    

Zweite Methode: Der richtige, rekursive Weg

  • Geben Sie in Ihr Home-Verzeichnis ein find . -perm -a+rwx

    • Sie sagen find , dass Sie das aktuelle (Home-) Verzeichnis und alle Unterverzeichnisse nach Dateien durchsuchen sollen, die rwxvon allen stammen. Die Ergebnisse werden mit vollständigen relativen Pfaden angezeigt, z
    ./.mozilla/firefox/lr5z24b3.default/lock
     ./src
    ./src/accountsservice-0.6.15/src/libaccountsservice/.libs/libaccountsservice.so
    ./src/accountsservice-0.6.15/src/libaccountsservice/.libs/libaccountsservice.la
    ./src/accountsservice-0.6.15/src/libaccountsservice/.libs/libaccountsservice.so.0
    ./src/accountsservice-0.6.15/debian/libaccountsservice-dev/usr/lib/libaccountsservice.so
    ./src/accountsservice-0.6.15/debian/libaccountsservice0/usr/lib/libaccountsservice.so.0
    ./src/accountsservice-0.6.15/debian/tmp/usr/lib/libaccountsservice.so
    ./src/accountsservice-0.6.15/debian/tmp/usr/lib/libaccountsservice.so.0
    ./.pulse/676238f89edd1f57138b3da400000004-runtime
    ./sd.png 
    ./slashdot.png
    ./XnView/lib/libQtGui.so.4
    ./XnView/lib/libQtWebKit.so.4
    ./XnView/lib/libQtXml.so.4
    ./XnView/lib/libQtDBus.so.4
    ./XnView/lib/libQtNetwork.so.4
    ./XnView/lib/libQtCore.so.4
    ./XnView/lib/libQtSvg.so.4
    
  • Die fett gedruckten Einträge im Home-Verzeichnis wurden auch bei der ersten Methode angezeigt.


Weitere Möglichkeiten, um dasfind zu erreichen, was Sie wollen, finden Sie in der Antwort von Eliah Kagan direkt über oder unter dieser.

ish
quelle
Vermutlich möchte das OP wissen, dass solche Dateien überall im Home-Verzeichnis enthalten sind und nicht nur direkt im Home-Verzeichnis. Dies kann durch Hinzufügen des RFlags zum lsBefehl erleichtert werden . Bei der Weiterleitung grepwäre dann unklar, wo sich die einzelnen Dateien im Ausgangsverzeichnis befinden (dh in welchem ​​Unterpfad). Kennen Sie einen Weg, um dieses Problem mit einer ls-using-Methode zu umgehen? Das andere Problem dabei ist, dass Dateien, die setuid, setgid oder sticky sind, soder tals eines der Modusflags haben und nicht vom grepBefehl abgeglichen werden .
Eliah Kagan
Beachten Sie außerdem, dass es eine Ausnahme zum Mantra gibt, dass Dateien in Ihrem Home-Verzeichnis nicht alles sein sollten. Symbolische Links erscheinen immer weltweit.
Eliah Kagan
4

Normalerweise verwenden Sie den lsBefehl, um Informationen zu den Dateiberechtigungen zu erhalten. Für eine bestimmte Aufgabe, bei der Sie Dateien mit bestimmten Berechtigungen automatisch auflisten möchten, wird die Verwendung von ls, selbst wenn Sie die Ausgabe mit einem anderen Dienstprogramm wie filtern grep, schnell sehr komplex. Für solche Aufgaben ist es also besser, sie zu verwenden find.

Wenn Sie alle Dateien auflisten möchten, die ...

  1. enthalten ist überall in Ihrem Home - Verzeichnis (auch in Unterverzeichnissen Ihres Home - Verzeichnisses, Verzeichnisse dieser Unterverzeichnisse und so weiter), und

  2. das sind auch explizit lesbar, beschreibbar und von jedem ausführbar

... dann erledigt dieser Befehl das für Sie:

find ~ -perm 777

So einfach ist das wirklich.

Wenn Sie nur Dateien auflisten möchten, die die beiden oben genannten Bedingungen erfüllen und sich direkt im Ausgangsverzeichnis befinden (nicht in einem Unterverzeichnis), verwenden Sie stattdessen diesen Befehl:

find ~ -maxdepth 1 -perm 777
  • In diesem Fall 777werden Dateien angezeigt, die für Sie, Ihre Gruppe und alle anderen Personen lesbar, beschreibbar und ausführbar sind. Wenn einige der Dateien möglicherweise seltsame Berechtigungssätze haben, z. B. 477 (Sie können die Datei lesen und alle anderen können die Datei ausführen und schreiben), möchten Sie wahrscheinlich Folgendes verwenden:

    find ~ -maxdepth 1 -perm -o+rwx

    Der führende Bindestrich vor -o+rwxbedeutet, dass die Datei andere Berechtigungen haben kann und o+rwxdass andere (außerhalb der Gruppe und des Benutzers, dem diese Datei gehört) diese Datei lesen, schreiben und ausführen können, ohne andere Berechtigungen zu überprüfen.

Weitere man findInformationen zum Ausführen dieser und ähnlicher Vorgänge sowie man chmodzur Bedeutung 777und zu anderen numerischen Modi finden Sie unter.

Eliah Kagan
quelle
1
  • Öffnen Sie das Terminal.
  • Wechseln Sie in das Verzeichnis, in dem Sie die Berechtigungen der Datei mit dem folgenden Befehl erfahren möchten:

    cd "Directory"
  • Ersetzen Sie den Text in Anführungszeichen durch den gewünschten Verzeichnisnamen.

  • Geben Sie dann einen anderen Befehl ein:

    ls -l

    Dieser Befehl ( ls) wird normalerweise verwendet, um die Dateinamen abzurufen. Das -lArgument dazu gibt vollständige Informationen über die Dateien.

    So können Sie auch die Dateiberechtigungen anzeigen.

Pranit Bauva
quelle