Seien wir ehrlich:Das Linux-Dateisystem kann komplex sein. Fügen Sie gemountete Remote-Dateisysteme, Wechselmedien und alle serverspezifischen Verzeichnisse hinzu, die Sie erstellt haben, und Sie oder Ihre Benutzer werden es möglicherweise schwierig finden, sich genau zu merken, wo eine bestimmte Datei gespeichert ist. Dort finden Sie find
Der Befehl kommt herein. Damit können Sie anhand verschiedener Kriterien nach Dateien oder Verzeichnissen suchen. Ich werde eine grundlegende Überprüfung von find
durchführen unten, aber der Fokus dieses Artikels ist etwas anders:Ressourcen nach Berechtigungen finden.
Warum muss ich nach Berechtigungen suchen?
- Sicherheitsaudit
- Beheben Sie Beschwerden über den Nutzerzugriff
- Probleme beim Anwendungszugriff beheben
Schnelles Beispiel für die Suche nach Namen
Es gibt andere Artikel zu Enable Sysadmin, die sich mit find
befassen effektiv befehlen. Ich werde den Befehl hier jedoch schnell zusammenfassen.
Syntax:
find (where to search) (what to search for)
Beispiel:
# find /etc -name rsyslog
# find /home/user01 -type d
Dieser Artikel konzentriert sich jedoch auf die Verwendung von -perm
Option, die basierend auf Berechtigungseinstellungen sucht.
Absoluter Modus versus symbolischer Modus
Denken Sie daran, dass Berechtigungen mithilfe von chmod
festgelegt werden Befehl. Der chmod
Der Befehl erkennt sowohl den absoluten Modus als auch den symbolischen Modus. In meinem kürzlich erschienenen Artikel So verwalten Sie Linux-Berechtigungen für Benutzer, Gruppen und andere finden Sie einen Überblick über die Verwaltung des Ressourcenzugriffs, einschließlich der beiden Modi. Der find
Der Befehl erkennt auch beide Modi, sodass Sie den verwenden können, der für Sie am natürlichsten ist. Für mich ist das der absolute Modus. Sie müssen sich ein paar Dinge über den absoluten Modus und den symbolischen Modus merken, um find -perms
effektiv zu nutzen Befehl.
Absolutmodus
Der absolute Modus verwendet Oktalwerte, um Berechtigungen darzustellen. Die Werte werden in der Reihenfolge aufgelistet, in der die Berechtigung dem Benutzer, der Gruppe und allen anderen zugewiesen werden soll.
Zum Beispiel:
# chmod 764 file1
Legt den Benutzer fest mit 7 (rwx), Gruppe mit 6 (rw) und andere mit 4 (r) für file1
.
Symbolischer Modus
Der symbolische Modus verwendet Symbole, um Zugriffsebenen darzustellen, und er verwendet mathematische Operatoren, um (+ ) oder entfernen (- ) Berechtigungen.
Zum Beispiel:
# chmod o+rw file1
Gibt die anderen Identität gelesen und schreiben zu file1
.
Ressourcenberechtigungen im absoluten Modus finden
Die grundlegendste Berechtigungssuche verwendet keine zusätzlichen Parameter. Die Anweisung lautet wie folgt:"Suche eine Ressource mit diesen Berechtigungen."
Zum Beispiel:
# find /etc -perm 777
Der Befehl lautet:Durchsuchen Sie /etc
Verzeichnis für Ressourcen mit der 777 Zugriffsebene (rwx für alle Identitäten).
Das obige Beispiel findet nur Ressourcen mit genau der angegebenen Berechtigung – nicht mehr und nicht weniger. Was, wenn Sie etwas mehr Flexibilität brauchen? Es gibt zwei zusätzliche Parameter, die sehr nützlich sein können. Der erste ist der -
Zeichen (Bindestrich) und das zweite ist der /
Zeichen (Schrägstrich). Sehen wir uns beide an.
Suchen nach -
Die Verwendung des -
Option bedeutet "mindestens diese Berechtigungsstufe ist gesetzt und alle höheren Berechtigungen."
Beispiel:
# find . -perm -644
Dieses Beispiel zeigt alle Ressourcen im aktuellen Verzeichnis mit mindestens 644 an Berechtigungen.
Suchen nach /
Die Verwendung von /
Option bedeutet "alle aufgeführten Berechtigungen sind gesetzt."
Beispiel:
# find . -perm /644
In diesem Beispiel werden Ressourcen mit 644 angezeigt oder größere Berechtigungen.
Ressourcenberechtigungen im symbolischen Modus finden
Der symbolische Modus verwendet das ugo Symbole (Benutzer, Gruppe, andere), rwx Symbole (Lesen, Schreiben, Ausführen) und mathematische Operatoren (wie + oder - ), um Berechtigungen zu definieren.
Suchen nach -
Der -
Die Option funktioniert im symbolischen Modus genauso wie oben im absoluten Modus. Es zeigt Ressourcen mit "mindestens dieser Zugriffsebene" an.
Beispiel:
# find -perm -u+w,g+w
Suchen nach /
Der /
funktioniert auch im symbolischen Modus. Es zeigt Ressourcen mit "alle aufgelisteten Berechtigungen" an.
Beispiel:
# find -perm /u+w,g+w
Linux-Standardberechtigungen sind weit verbreitet, und jetzt wissen Sie, wie Sie mit einer bestimmten konfigurierten Zugriffsebene nach Ressourcen suchen. Linux nutzt jedoch auch besondere Berechtigungen . Der find
Befehl kann diese Berechtigungen ebenfalls anzeigen.
Ressourcen mit speziellen konfigurierten Berechtigungen finden
Spezielle Linux-Berechtigungen legen zusätzliche Zugriffskontrollen für Ressourcen fest. Es gibt drei spezielle Berechtigungen:Set User ID (SUID), Set Group ID, (SGID) und das Sticky Bit. Die Details der einzelnen Bereiche würden den Rahmen dieses Artikels sprengen, aber lassen Sie mich kurz zusammenfassen:
Sondergenehmigung | Beschreibung |
SUID | Eine Datei wird von einem Benutzer mit der Identität des Eigentümers ausgeführt, auch wenn dieser Benutzer nicht der Eigentümer ist |
SGID | Der Inhalt eines Verzeichnisses erbt automatisch die Gruppenzugehörigkeit des übergeordneten Ordners (ideal für Verzeichnisse, die von Projektteams gemeinsam genutzt werden) |
Sticky Bit | Die Datei wird automatisch in den Speicher geladen und kann von niemand anderem als dem Eigentümer gelöscht oder geändert werden |
Weitere Informationen zu Sonderberechtigungen finden Sie in diesem Artikel.
Spezielle Berechtigungen werden mit einem vierten Bit (ganz links) konfiguriert:
- SUID =4
- SGID =2
- Sticky-Bit =1
Tipp :Die Ausgabe von ls -l
Der Befehl zeigt ein s an im ausführbaren Feld für den Benutzer, wenn SUID konfiguriert ist, ein s im ausführbaren Feld für die Gruppe, wenn SGID konfiguriert ist, und ein T oder t wenn das Sticky Bit gesetzt ist (je nachdem ob auch execute gesetzt ist).
Der folgende Inhalt behandelt die Suche nach Dateien mit bestimmten konfigurierten Sonderberechtigungen.
Dateien mit konfigurierter SUID finden
Um Dateien zu finden, bei denen die SUID-Zugriffsebene definiert ist, verwenden Sie -perm
Option, aber schließen Sie die vierte Ziffer ein. SUID hat einen Oktalwert von 4 .
So suchen Sie beispielsweise nach Ressourcen mit konfigurierter SUID:
# find /usr/bin -perm 4755
Dateien mit konfigurierter SGID suchen
Sie können dieselbe Syntax verwenden, um Ressourcen mit der SGID-Berechtigung anzuzeigen, die durch Verwendung des SGID-Oktalwerts von 2 definiert ist .
So suchen Sie beispielsweise nach Ressourcen mit konfigurierter SGID:
# find /usr/bin -perm 2755
Dateien mit konfiguriertem Sticky Bit finden
Schließlich können Sie den Oktalwert von 1 verwenden um Ressourcen mit konfiguriertem Sticky Bit anzuzeigen.
Hier ist ein Sticky Bit-Beispiel:
# find /etc -perm /1444
Hinweis :Der -
und /
Parameter funktionieren mit speziellen Berechtigungen genauso wie mit Standardberechtigungen.
[ Anderen Lesern hat gefallen: Linux-Grundlagen für Systemadministratoren:Benutzerkontenverwaltung ]
Bonusbeispiele
Hier sind einige zusätzliche Befehle, die zum Anzeigen von Berechtigungen nützlich sein könnten. Als ich den Artikel schrieb, dachte ich ständig:Warte, was ist damit? und dann Bonusbeispiele hinzufügen. Hier sind also einige zusätzliche Befehle für die Berechtigungsprüfung.
Bonus 1:Verwenden Sie -not, um Ergebnisse zu negieren
Sie können den -not
verwenden Option mit find
etwas angeben, das nicht den angegebenen Kriterien entspricht.
Das erste Beispiel zeigt ein normales find
versuchen, und die zweite zeigt find
an mit -not
.
# find /etc/network -perm 777
Das obige Beispiel zeigt die Ressourcen innerhalb von /etc/network
das tun haben 777 Berechtigungen konfiguriert.
# find /etc/network -not -perm 777
Dieses Beispiel zeigt die Ressourcen innerhalb von /etc/network
die irgendwelche Berechtigungen anders als haben 777 konfiguriert.
Bonus 2:Berechtigungen mit find und chmod setzen
Einer der Vorteile von find
ist, dass es eine Ausführungsfunktion enthält. Sie können dies mit Folgebefehlen wie xargs
kombinieren , rm
, oder chmod
.
# find -perm -111 -exec chmod -R 777 {} \;
In diesem Beispiel der {}
Zeichen repräsentieren die Ergebnisse von find
Befehl und den \;
Zeichen stellen eine Beendigung des chmod
dar Befehl.
Warnung :Achten Sie darauf, genau zu verstehen, was die Auswirkung Ihrer kombinierten Ausführung von "Suchen + andere Befehle" sein wird. Ein Tippfehler könnte leicht find
werden alle Dateien in /etc
und dann versuchen, sie zu löschen oder Berechtigungen zu konfigurieren, die legitime Benutzer aus ihren Home-Verzeichnissen ausschließen.
Bonus 3:Anzeigeberechtigungen mit ls und grep
Manchmal benötigen Sie die erweiterte Funktionalität von find
nicht Befehl. Stattdessen benötigen Sie nur eine schnelle und einfache Anzeige bestimmter Berechtigungen. Verlassen Sie sich in diesem Fall auf ls
und grep
Befehle.
Beispiel:
# ls -l | grep rwxrw-r--
Dieser Befehl zeigt alle Verzeichnisinhalte mit den angegebenen Berechtigungen an.
Bonus 4:ACL-Berechtigungen anzeigen
Der find
Der Befehl zeigt Dateien mit angewendeten Zugriffssteuerungslisten (ACL)-Berechtigungen nicht einfach an. Verwenden Sie in diesem Fall den getfacl
Befehl statt.
Beispiel:
# getfacl file1
Weitere Informationen zu Zugriffskontrolllisten finden Sie unter Eine Einführung in Linux-Zugriffskontrolllisten (ACLs).
Abschluss
Der find
Der Befehl ist ein praktisches Dienstprogramm zum Anzeigen von Verzeichnissen oder Dateien, die Sie suchen müssen. Find kann jedoch auch ein großartiges Sicherheitstool sein, da es Verzeichnisse und Dateien mit bestimmten Berechtigungen anzeigt. Als Systemadministrator können Sie diese Informationen verwenden, um sicherzustellen, dass die Ressourcen des Servers gemäß den Sicherheitsrichtlinien Ihres Unternehmens eingestellt sind. Vergessen Sie nicht, dass Sie den >>
verwenden können Redirector, um diese Berechtigungen zu dokumentieren. Ein solches Dokument kann als Grundlage für Berechtigungen für zukünftige Audits verwendet werden.
[ Denken Sie an Sicherheit? Lesen Sie diesen kostenlosen Leitfaden zur Verbesserung der Hybrid Cloud-Sicherheit und zum Schutz Ihres Unternehmens. ]