Das Suchen von Dateien über die Befehlszeile in Linux ist viel einfacher und schneller. Wir haben bereits besprochen, wie Sie Dateien basierend auf Zugriffs- und Änderungsdatum und -zeit finden und sortieren . Heute werden wir sehen, wie man Dateien basierend auf ihren Berechtigungen in Linux und Unix-ähnlichen Betriebssystemen findet.
Für die Zwecke dieser Anleitung werde ich drei Dateien erstellen, nämlich file1
, file2
und file3
mit Berechtigungen 777
, 766
, 655
jeweils in einem Ordner namens ostechnix
.
$ mkdir ostechnix && cd ostechnix/
$ install -b -m 777 /dev/null file1
$ install -b -m 766 /dev/null file2
$ install -b -m 655 /dev/null file3
Lassen Sie uns nun die Dateien basierend auf ihren Berechtigungen finden.
Suchen Sie Dateien basierend auf ihren Berechtigungen
Die typische Syntax zum Suchen von Dateien anhand ihrer Berechtigungen lautet:
$ find -perm mode
Der MODE
kann entweder mit numeric sein oder oktal Berechtigung (wie 777
, 666
, ... etc) oder symbolische Erlaubnis (wie u=x
, a=r+x
).
Wir können den MODE
angeben auf drei verschiedene Arten, wie unten aufgeführt.
- Wenn wir den Modus ohne Präfixe angeben, werden Dateien von exakt gefunden Berechtigungen.
- Wenn wir
"-"
verwenden Präfix mit Modus, zumindest sollten die Dateien die angegebene Berechtigung haben, nicht die exakte Berechtigung. - Wenn wir
"/"
verwenden Präfix, entweder der Besitzer, die Gruppe oder andere Personen sollten die Berechtigung für die Datei haben.
Erlauben Sie mir, es mit einigen Beispielen zu erklären, damit Sie es besser verstehen können.
Zuerst werden wir sehen, wie Dateien basierend auf numerischen Berechtigungen gefunden werden.
Suchen Sie Dateien basierend auf ihren numerischen (oktalen) Berechtigungen
Lassen Sie mich nun den folgenden Befehl ausführen:
$ find -perm 777
Dieser Befehl findet die Dateien mit der Berechtigung genau 777 im aktuellen Verzeichnis.
Wie Sie in der obigen Ausgabe sehen, ist file1 die einzige, die genaue 777-Berechtigung hat .
Lassen Sie uns nun "-"
verwenden Präfix und sehen Sie, was passiert.
$ find -perm -766
Wie Sie sehen, zeigt der obige Befehl zwei Dateien an. Wir haben 766
eingestellt Berechtigung für file2
, aber dieser Befehl zeigt zwei Dateien an, warum? Denn hier haben wir "-"
verwendet Präfix. Dies bedeutet, dass dieser Befehl alle Dateien findet, bei denen der Dateibesitzer Lese-/Schreib-/Ausführungsberechtigungen hat, Dateigruppenmitglieder Lese-/Schreibberechtigungen haben und alle anderen auch Lese-/Schreibberechtigungen haben. In unserem Fall file1
und file2
diese Kriterien erfüllt haben. Mit anderen Worten, die Dateien müssen nicht die exakte 766-Berechtigung haben. Es werden alle Dateien angezeigt, die unter diese 766-Berechtigung fallen.
Als nächstes verwenden wir "/"
Präfix und sehen Sie, was passiert.
$ find -perm /222
Der obige Befehl findet Dateien, die von jemandem beschreibbar sind (entweder ihr Besitzer oder ihre Gruppe oder jemand anderes). Hier ist ein weiteres Beispiel.
$ find -perm /220
Dieser Befehl findet Dateien, die entweder von ihrem Eigentümer oder ihrer Gruppe beschreibbar sind. Das heißt, die Dateien müssen nicht beschreibbar sein von dem Eigentümer und der Gruppe abgestimmt werden; entweder reicht.
Aber wenn Sie denselben Befehl mit "-"
ausführen Präfix, sehen Sie nur die Dateien, die sowohl vom Eigentümer als auch von der Gruppe beschreibbar sind.
$ find -perm -220
Der folgende Screenshot zeigt Ihnen den Unterschied zwischen diesen beiden Präfixen.
Wie ich bereits sagte, können wir auch die symbolische Notation verwenden, um die Dateiberechtigungen darzustellen.
Suchen Sie Dateien basierend auf ihren Berechtigungen mit symbolischer Notation
In den folgenden Beispielen verwenden wir symbolische Schreibweisen wie u ( für Benutzer), g (Gruppe), o (Andere). Wir können auch den Buchstaben a verwenden um alle drei dieser Kategorien zu vertreten. Die Berechtigungen können mit den Buchstaben r angegeben werden (lesen), w (schreiben), x (ausführbar).
Zum Beispiel, um eine beliebige Datei mit der Gruppe write zu finden Berechtigung, führe aus:
$ find -perm -g=w
Wie Sie im obigen Beispiel sehen, file1
und file2
Gruppe schreiben lassen Erlaubnis. Bitte beachten Sie, dass Sie entweder "="
verwenden können oder "+"
Operatoren für die symbolische Notation. Zum Beispiel werden die folgenden zwei Befehle dasselbe tun.
$ find -perm -g=w $ find -perm -g+w
Führen Sie Folgendes aus, um Dateien zu finden, die vom Eigentümer der Datei beschreibbar sind:
$ find -perm -u=w
Um eine Datei zu finden, die für alle schreibbar ist (der Dateieigentümer, die Gruppe und alle anderen), führen Sie Folgendes aus:
$ find -perm -a=w
Um Dateien zu finden, die von beiden beschreibbar sind ihrem Eigentümer und ihre Gruppe , verwenden Sie diesen Befehl:
$ find -perm -g+w,u+w
Der obige Befehl entspricht "find -perm -220"
Befehl.
Um Dateien zu finden, die von beidem beschreibbar sind ihrem Eigentümer oder ihre Gruppe , ausführen:
$ find -perm /u+w,g+w
Oder,
$ find -perm /u=w,g=w
Diese beiden Befehle erledigen die gleiche Aufgabe wie "find -perm /220"
Befehl.
Weitere Einzelheiten finden Sie in den Manpages.
$ man find
Sehen Sie sich auch die Manpage-Alternativen an um vereinfachte Beispiele für beliebige Linux-Befehle zu lernen.
Verwandte Lektüre:
- So finden Sie die größten und kleinsten Verzeichnisse und Dateien in Linux
- So finden Sie die älteste Datei in einem Verzeichnisbaum unter Linux
- So finden Sie unter Linux Dateien, die größer oder kleiner als X sind