So tarieren Sie Dateien, legen Dateiberechtigungen fest und finden Dateien unter Linux
Vor kurzem hat die Linux Foundation die LFCS-Zertifizierung (Linux Foundation Certified Sysadmin) gestartet, ein brandneues Programm, das es Einzelpersonen ermöglichen soll, grundlegende bis mittlere Systemverwaltungsaufgaben auf Linux-Systemen durchzuführen.
Dazu gehören die Unterstützung bereits laufender Systeme und Services sowie die Fehlerbehebung und Analyse der ersten Ebene sowie die Möglichkeit, zu entscheiden, wann Probleme an die Entwicklungsteams weitergeleitet werden sollen.
Die Serie trägt den Titel Vorbereitung auf die LFCS (Linux Foundation Certified Sysadmin) Teile 1 bis 33 und behandelt die folgenden Themen:
| Nein. | Titel |
|---|---|
| Teil 1 | So verwenden Sie den Befehl 'sed', um Dateien unter Linux zu manipulieren |
| Teil 2 | So installieren und verwenden Sie Vi/Vim unter Linux |
| Teil 3 | Archivieren von Dateien, Festlegen von Dateiberechtigungen und Suchen von Dateien unter Linux |
| Teil 4 | Partitionieren von Speichergeräten, Formatieren von Dateisystemen und Konfigurieren von Auslagerungspartitionen |
| Teil 5 | Mounten/Unmounten von lokalen und Netzwerk-Dateisystemen (Samba & NFS) unter Linux |
| Teil 6 | Partitionen als RAID-Geräte zusammenstellen – Erstellen und Verwalten von System-Backups |
| Teil 7 | Verwalten von Systemstartprozessen und -diensten (SysVinit, systemd und upstart) |
| Teil 8 | Verwalten von Benutzern und Gruppen, Dateiberechtigungen und Sudo-Zugriff |
| Teil 9 | Linux-Paketverwaltung mit Yum, RPM, Apt, Dpkg, Aptitude und Zypper |
| Teil 10 | Erlernen grundlegender Shell-Skripterstellung und Fehlerbehebung bei Dateisystemen |
| Teil 11 | Verwalten und Erstellen von LVM mit den Befehlen vgcreate, lvcreate und lvextend |
| Teil 12 | So erkunden Sie Linux mit installierten Hilfedokumentationen und Tools |
| Teil 13 | Konfigurieren und Beheben von Problemen mit Grand Unified Bootloader (GRUB) |
| Teil 14 | Überwachen Sie die Ressourcennutzung von Linux-Prozessen und legen Sie Prozesslimits pro Benutzer fest |
| Teil 15 | Festlegen oder Ändern von Kernel-Laufzeitparametern in Linux-Systemen |
| Teil 16 | Implementierung einer obligatorischen Zugriffskontrolle mit SELinux oder AppArmor unter Linux |
| Teil 17 | Festlegen von Zugriffssteuerungslisten (Access Control Lists, ACLs) und Festplattenkontingenten für Benutzer und Gruppen |
| Teil 18 | Installieren von Netzwerkdiensten und Konfigurieren des automatischen Starts beim Booten |
| Teil 19 | Eine ultimative Anleitung zum Einrichten eines FTP-Servers, um anonyme Anmeldungen zu ermöglichen |
| Teil 20 | Richten Sie einen grundlegenden DNS-Server für rekursives Caching ein und konfigurieren Sie Zonen für die Domäne |
| Teil 21 | Installieren, Sichern und Optimieren der Leistung des MariaDB-Datenbankservers |
| Teil 22 | Installieren und Konfigurieren des NFS-Servers für die gemeinsame Nutzung von Dateisystemen |
| Teil 23 | So richten Sie Apache mit namensbasiertem virtuellem Hosting mit SSL-Zertifikat ein |
| Teil 24 | So richten Sie eine iptables-Firewall ein, um den Fernzugriff auf Dienste unter Linux zu ermöglichen |
| Teil 25 | So verwandeln Sie ein Linux in einen Router, um den Datenverkehr statisch und dynamisch zu verarbeiten |
| Teil 26 | So richten Sie verschlüsselte Dateisysteme ein und tauschen sie mit dem Cryptsetup-Tool aus |
| Teil 27 | Überwachen der Systemauslastung, Ausfälle und Fehlerbehebung bei Linux-Servern |
| Teil 28 | Einrichten eines Netzwerk-Repositorys zum Installieren oder Aktualisieren von Paketen |
| Teil 29 | Prüfen der Netzwerkleistung, -sicherheit und -problembehandlung |
| Teil 30 | Installieren und Verwalten von virtuellen Maschinen und Containern |
| Teil 31 | Lernen Sie die Grundlagen von Git kennen, um Projekte effizient zu verwalten |
| Teil 32 | Ein Leitfaden für Anfänger zur Konfiguration von IPv4- und IPv6-Adressen unter Linux |
| Teil 33 | Ein Leitfaden für Anfänger zum Erstellen von Netzwerkbindung und -bridging in Ubuntu |
Dieser Beitrag ist Teil 3 einer 33-teiligen Tutorial-Reihe, hier in diesem Teil behandeln wir, wie man Dateien und Verzeichnisse archiviert/komprimiert, Dateiattribute setzt und Dateien im Dateisystem findet, die für die LFCS-Zertifizierungsprüfung erforderlich sind.
Archivierungs- und Komprimierungstools für Linux
Ein Dateiarchivierungstool gruppiert eine Reihe von Dateien in einer einzigen eigenständigen Datei, die wir auf verschiedenen Medientypen sichern, über ein Netzwerk übertragen oder per E-Mail versenden können.
Das am häufigsten verwendete Archivierungsprogramm unter Linux ist der tar-Befehl. Wenn ein Archivierungsprogramm zusammen mit einem Komprimierungstool verwendet wird, ermöglicht es die Reduzierung der Festplattengröße, die zum Speichern derselben Dateien und Informationen erforderlich ist.
Linux tar-Dienstprogramm
tar bündelt eine Gruppe von Dateien in einem einzigen Archiv (allgemein als tar-Datei oder Tarball bezeichnet). Der Name stand ursprünglich für Tape Archiver, aber wir müssen beachten, dass wir dieses Tool verwenden können, um Daten auf jede Art von beschreibbaren Medien (nicht nur auf Bänder) zu archivieren.
Tar wird normalerweise mit einem Komprimierungstool wie gzip, bzip2 oder xz verwendet, um einen komprimierten Tarball zu erzeugen.
Die grundlegende Syntax des tar-Befehls lautet wie folgt:
# tar [options] [pathname ...]
Dabei ist ... der Ausdruck, der verwendet wird, um anzugeben, auf welche Dateien reagiert werden soll.
Die am häufigsten verwendeten tar-Befehle
| Lange Option | Abkürzung | Beschreibung |
| –schaffen | c | Erstellt ein tar-Archiv |
| –verbinden | Ein | Hängt tar-Dateien an ein Archiv an |
| –anfügen | r | Hängt Dateien an das Ende eines Archivs an |
| –aktualisieren | u | Hängt Dateien an, die neuer sind als die Kopie im Archiv |
| –diff oder –compare | d | Unterschiede zwischen Archiv und Dateisystem finden |
| –Datei-Archiv | f | Archivdatei oder Gerät verwenden ARCHIV |
| –Liste | t | Listet den Inhalt eines Tarballs auf |
| –extract oder –get | x | Extrahiert Dateien aus einem Archiv |
Normalerweise verwendete tar-Betriebsmodifikatoren
| Lange Option | Abkürzung | Beschreibung |
| –Verzeichnis Verzeichnis | C | Änderungen am Verzeichnisverzeichnis vor dem Ausführen von Vorgängen |
| –gleiche-Berechtigungen | p | behält die ursprünglichen Berechtigungen bei |
| –ausführlich | v | Listet alle gelesenen oder extrahierten Dateien auf. Wenn dieses Flag zusammen mit –list verwendet wird, werden die Dateigrößen, der Besitz und die Zeitstempel angezeigt. |
| –überprüfen | W | Überprüft das Archiv nach dem Schreiben |
| –Datei ausschließen | — | Schließt Dateien aus dem Archiv aus |
| –exclude=Muster | X | Dateien ausschließen, die als PATTERN angegeben sind |
| –gzip oder –gunzip | z | Verarbeitet ein Archiv über Gzip |
| –bzip2 | j | Verarbeitet ein Archiv über bzip2 |
| –xz | J | Verarbeitet ein Archiv über xz |
Linux-Dienstprogramme Gzip, Bzip2 und Xz
Gzip ist das älteste Komprimierungswerkzeug und bietet die geringste Komprimierung, während bzip2 eine verbesserte Komprimierung bietet. Darüber hinaus ist xz das neueste, bietet aber (normalerweise) die beste Komprimierung.
Die Vorteile der besten Komprimierung haben ihren Preis: die Zeit, die benötigt wird, um den Vorgang abzuschließen, und die Systemressourcen, die während des Prozesses verwendet werden.
Normalerweise haben tar-Dateien, die mit diesen Dienstprogrammen komprimiert wurden, die Erweiterungen .gz, .bz2 oder .xz. In den folgenden Beispielen verwenden wir die folgenden Dateien: file1, file2, file3, file4 und file5.
Komprimieren von Dateien mit gzip, bzip2 und xz
Gruppieren Sie alle Dateien im aktuellen Arbeitsverzeichnis und komprimieren Sie das resultierende Bundle mit gzip, bzip2 und xz (bitte beachten Sie die Verwendung eines regulären Ausdrucks, um anzugeben, welche Dateien in das Bundle aufgenommen werden sollen – dies soll verhindern, dass das Archivierungstool die in den vorherigen Schritten erstellten Tarballs gruppiert).
# tar czf myfiles.tar.gz file[0-9]
tar cjf myfiles.tar.bz2 file[0-9]
tar cJf myfile.tar.xz file[0-9]
Inhalt auflisten und Dateien aktualisieren/anhängen tar Archiv
Listen Sie den Inhalt eines Tarballs auf, und zeigen Sie die gleichen Informationen wie in einer langen Verzeichnisliste an. Beachten Sie, dass Aktualisierungs- oder Anfügevorgänge nicht direkt auf komprimierte Dateien angewendet werden können.
Dekomprimieren von Tar-Dateien
Wenn Sie eine Datei aktualisieren oder an einen komprimierten Tarball anhängen müssen, müssen Sie die TAR-Datei dekomprimieren, aktualisieren/anhängen und dann erneut komprimieren.
# tar tvf [tarball]
Führen Sie einen der folgenden Befehle aus:
# gzip -d myfiles.tar.gz [#1]
bzip2 -d myfiles.tar.bz2 [#2]
xz -d myfiles.tar.xz [#3]
Löschen oder Hinzufügen von Dateien zum Tar-Archiv
# tar --delete --file myfiles.tar file4 (deletes the file inside the tarball)
tar --update --file myfiles.tar file4 (adds the updated file)
und
# gzip myfiles.tar [ if you choose #1 above ]
bzip2 myfiles.tar [ if you choose #2 above ]
xz myfiles.tar [ if you choose #3 above ]
Endlich
# tar tvf [tarball] #again
und vergleichen Sie das Änderungsdatum und die Uhrzeit von Datei4 mit den gleichen Informationen wie zuvor gezeigt.
Ausschließen von Dateien aus Backups
Angenommen, Sie möchten eine Sicherung der Basisverzeichnisse des Benutzers durchführen. Eine gute Sysadmin-Praxis wäre (kann auch durch Unternehmensrichtlinien festgelegt werden), alle Video- und Audiodateien von Backups auszuschließen.
Vielleicht wäre Ihr erster Ansatz, alle Dateien mit einer .mp3 oder .mp4 Erweiterung (oder anderen Erweiterungen) von der Sicherung auszuschließen. Was ist, wenn Sie einen cleveren Benutzer haben, der die Erweiterung in .txt oder .bkp ändern kann, wird Ihnen Ihr Ansatz nicht viel nützen.
Um eine Audio- oder Videodatei zu erkennen, müssen Sie den Dateityp mit einer Datei überprüfen. Das folgende Shell-Skript erledigt die Aufgabe.
#!/bin/bash
Pass the directory to backup as first argument.
DIR=$1
Create the tarball and compress it. Exclude files with the MPEG string in its file type.
-If the file type contains the string mpeg, $? (the exit status of the most recently executed command) expands to 0, and the filename is redirected to the exclude option. Otherwise, it expands to 1.
-If $? equals 0, add the file to the list of files to be backed up.
tar X <(for i in $DIR/*; do file $i | grep -i mpeg; if [ $? -eq 0 ]; then echo $i; fi;done) -cjf backupfile.tar.bz2 $DIR/*
Wiederherstellen der Sicherung mit Tar-Beibehaltungsberechtigungen
Mit dem folgenden Befehl können Sie dann die Sicherung im Basisverzeichnis des ursprünglichen Benutzers wiederherstellen (user_restore in diesem Beispiel), wobei die Berechtigungen beibehalten werden.
# tar xjf backupfile.tar.bz2 --directory user_restore --same-permissions
Verwenden des Befehls "Suchen" zum Suchen nach Dateien
Der Befehl find wird verwendet, um rekursiv in Verzeichnisbäumen nach Dateien oder Verzeichnissen zu suchen, die bestimmten Merkmalen entsprechen, und kann dann entweder die übereinstimmenden Dateien oder Verzeichnisse drucken oder andere Operationen für die Übereinstimmungen ausführen.
Normalerweise suchen wir nach Name, Besitzer, Gruppe, Typ, Berechtigungen, Datum und Größe.
Die grundlegende Syntax des Befehls find lautet wie folgt:
# find [directory_to_search] [expression]
Rekursives Suchen von Dateien nach Größe
Sucht alle Dateien (-f) im aktuellen Verzeichnis (.) und 2 Unterverzeichnissen darunter (-maxdepth 3 enthält das aktuelle Arbeitsverzeichnis und 2 Ebenen darunter), deren Größe (-size) größer als 2 MB ist.
# find . -maxdepth 3 -type f -size +2M
Suchen und Löschen von Dateien, die bestimmte Kriterien erfüllen
Dateien mit 777-Berechtigungen werden manchmal als offene Tür für externe Angreifer angesehen. In jedem Fall ist es nicht sicher, irgendjemanden irgendetwas mit Dateien machen zu lassen. Wir werden einen ziemlich aggressiven Ansatz wählen und sie löschen! ('{}' + wird verwendet, um die Ergebnisse der Suche zu "sammeln").
# find /home/user -perm 777 -exec rm '{}' +
Suchen von Dateien anhand von Zeitstempeln
Suchen Sie nach Konfigurationsdateien in /etc, auf die mehr (-atime) zugegriffen (-atime) oder die geändert (-mtime) mehr (+180) oder weniger (-180) als vor 6 Monaten oder vor genau 6 Monaten (180) wurden.
Ändern Sie den folgenden Befehl wie im folgenden Beispiel:
# find /etc -iname "*.conf" -mtime -180 -print
Festlegen von Dateiberechtigungen und grundlegenden Attributen
Die ersten 10 Zeichen in der Ausgabe von ls -l sind die Dateiattribute. Das erste dieser Zeichen wird verwendet, um den Dateityp anzugeben:
-: eine reguläre Datei-d: ein Verzeichnis-l: ein symbolischer Link-c: ein Zeichengerät (das Daten als einen Strom von Bytes behandelt, d.h. ein Terminal)-b: ein Blockgerät (das Daten in Blöcken verarbeitet, d.h. Speichergeräte)
Die nächsten neun Zeichen der Dateiattribute werden als Dateimodus bezeichnet und stellen die Lese- (r), Schreib- (w) und Ausführungsberechtigungen (x) des Dateieigentümers, des Gruppenbesitzers der Datei und der übrigen Benutzer (allgemein als "die Welt" bezeichnet) dar.
Während die Leseberechtigung für eine Datei das Öffnen und Lesen einer Datei erlaubt, ermöglicht die gleiche Berechtigung für ein Verzeichnis, dass dessen Inhalt aufgelistet wird, wenn die Ausführungsberechtigung ebenfalls festgelegt ist. Darüber hinaus ermöglicht die Ausführungsberechtigung in einer Datei, dass sie als Programm behandelt und ausgeführt wird, während sie in einem Verzeichnis erlaubt, dasselbe in das Verzeichnis zu importieren.
Dateiberechtigungen werden mit dem Befehl chmod geändert, dessen grundlegende Syntax wie folgt lautet:
# chmod [new_mode] file
Dabei ist new_mode entweder eine Oktalzahl oder ein Ausdruck, der die neuen Berechtigungen angibt.
Die Oktalzahl kann wie folgt aus ihrem binären Äquivalent konvertiert werden, das aus den gewünschten Dateiberechtigungen für den Besitzer, die Gruppe und die Welt berechnet wird:
Das Vorhandensein einer bestimmten Berechtigung entspricht einer Potenz von 2 (r=22, w=21, x=20), während ihre Abwesenheit 0 entspricht. Zum Beispiel:
Geben Sie Folgendes ein, um die Berechtigungen der Datei wie oben in oktaler Form festzulegen:
# chmod 744 myfile
Sie können den Modus einer Datei auch mit einem Ausdruck festlegen, der die Rechte des Eigentümers mit dem Buchstaben u, die Rechte des Gruppenbesitzers mit dem Buchstaben g und den Rest mit o angibt.
Alle diese "Individuen" können gleichzeitig mit dem Buchstaben a dargestellt werden. Berechtigungen werden mit dem Zeichen "+" bzw. "-" erteilt (oder widerrufen).
Entfernen der Ausführungsberechtigung für ein Skript für alle Benutzer
Wie bereits erläutert, können wir eine bestimmte Berechtigung widerrufen, indem wir ihr das Minuszeichen voranstellen und angeben, ob sie für den Besitzer, den Gruppenbesitzer oder alle Benutzer widerrufen werden muss. Der folgende Einzeiler kann wie folgt interpretiert werden: Modus für alle (a) Benutzer ändern, Widerruf (-) Ausführungsberechtigung (x).
# chmod a-x backup.sh
Erteilen von Lese-, Schreib- und Ausführungsberechtigungen für eine Datei an den Besitzer und Gruppenbesitzer sowie Leseberechtigungen für die ganze Welt.
Wenn wir eine 3-stellige Oktalzahl verwenden, um Berechtigungen für eine Datei festzulegen, gibt die erste Ziffer die Berechtigungen für den Eigentümer, die zweite Ziffer für den Gruppenbesitzer und die dritte Ziffer für alle anderen an:
- Besitzer: (r=22 + w=21 + x=20=7)
- Gruppenbesitzer: (r=22 + w=21 + x=20=7)
- Welt: (r=22 + w=0 + x=0=4),
# chmod 774 myfile
Mit der Zeit und mit etwas Übung werden Sie in der Lage sein, zu entscheiden, welche Methode zum Ändern eines Dateimodus für Sie jeweils am besten geeignet ist. Eine lange Verzeichnisliste zeigt auch den Eigentümer der Datei und ihren Gruppenbesitzer an (die als rudimentäre, aber effektive Zugriffskontrolle auf Dateien in einem System dienen):
Der Dateibesitz wird mit dem Befehl chown geändert. Der Besitzer und der Gruppenbesitzer können gleichzeitig oder separat geändert werden. Die grundlegende Syntax lautet wie folgt:
# chown user:group file
Dabei muss mindestens ein Benutzer oder eine Gruppe vorhanden sein.
Beispiele für chown-Befehle
Ändern des Eigentümers einer Datei in einen bestimmten Benutzer.
# chown gacanepa sent
Ändern des Eigentümers und der Gruppe einer Datei in ein bestimmtes Benutzer:Gruppen-Paar.
# chown gacanepa:gacanepa TestFile
Ändern nur des Gruppenbesitzers einer Datei in eine bestimmte Gruppe. Beachten Sie den Doppelpunkt vor dem Namen der Gruppe.
# chown :gacanepa email_body.txt
Schlussfolgerung
Als Systemadministrator müssen Sie wissen, wie Sie Backups erstellen und wiederherstellen, wie Sie Dateien in Ihrem System finden und ihre Attribute ändern, zusammen mit ein paar Tricks, die Ihnen das Leben erleichtern und verhindern, dass Sie in Zukunft auf Probleme stoßen.
Ich hoffe, dass die Tipps in diesem Artikel Ihnen helfen, dieses Ziel zu erreichen. Fühlen Sie sich frei, Ihre eigenen Informationen und Ideen im Kommentarbereich zum Nutzen der Community hinzuzufügen. Vielen Dank im Voraus!
Das LFCS eBook ist ab sofort zum Kauf erhältlich. Bestellen Sie noch heute Ihr Exemplar und beginnen Sie Ihre Reise zum zertifizierten Linux-Systemadministrator!
| Produktname | Preis | Kaufen |
|---|---|---|
| Der Leitfaden zur Vorbereitung der LFCS-Zertifizierung der Linux Foundation | 19,99 $ | [Jetzt kaufen] |
Zu guter Letzt erwägen Sie bitte, Ihren Prüfungsgutschein über die folgenden Links zu kaufen, um uns eine kleine Provision zu verdienen, die uns hilft, dieses Buch auf dem neuesten Stand zu halten.








