Zugriff auf Dateisysteme in Red Hat Enterprise Linux

Red Hat Enterprise LinuxRed Hat Enterprise LinuxBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Lab erhalten Sie praktische Erfahrung in der Verwaltung von Linux-Dateisystemen auf einem Red Hat Enterprise Linux (RHEL)-System. Sie lernen, Dateisysteme und Blockgeräte zu identifizieren, die Festplattennutzung mit df und du zu untersuchen und das manuelle Ein- und Aushängen von Dateisystemen zu üben.

Darüber hinaus führt Sie dieses Lab durch die effiziente Suche nach Dateien mithilfe von Befehlen wie locate und find, sodass Sie nach Dateien anhand verschiedener Kriterien wie Name, Eigentümerschaft, Berechtigungen, Größe, Zeit und Dateityp suchen können.

Dateisysteme und Blockgeräte identifizieren

In diesem Schritt lernen Sie, wie Sie Dateisysteme und Blockgeräte auf einem Red Hat Enterprise Linux-System identifizieren können. Das Verständnis der Organisation von Speicher ist grundlegend für die Systemadministration. Wir werden verschiedene Befehle untersuchen, um Blockgeräte und die zugehörigen Dateisysteme aufzulisten und zu untersuchen.

Zunächst wollen wir einige Kernkonzepte verstehen:

  • Blockgerät (Block Device): Ein Blockgerät ist eine Datei, die Low-Level-Zugriff auf Speichergeräte bietet. Beispiele hierfür sind Festplatten, SSDs und USB-Laufwerke. In Linux befinden sich diese typischerweise im Verzeichnis /dev.
  • Partition (Partition): Eine Partition ist eine logische Unterteilung eines physischen Speichergeräts. Eine einzelne Festplatte kann mehrere Partitionen haben, die jeweils mit einem anderen Dateisystem formatiert oder für verschiedene Zwecke verwendet werden.
  • Dateisystem (File System): Ein Dateisystem ist eine Methode und Datenstruktur, die ein Betriebssystem verwendet, um zu steuern, wie Daten gespeichert und abgerufen werden. Es organisiert Daten in Dateien und Verzeichnissen. Gängige Linux-Dateisysteme sind XFS und ext4.
  • Einhängepunkt (Mount Point): Ein Einhängepunkt ist ein leeres Verzeichnis in der Dateisystemhierarchie, an das ein Dateisystem angehängt oder "eingehängt" wird, um seinen Inhalt zugänglich zu machen.

Beginnen wir damit, die auf Ihrem System verfügbaren Blockgeräte mit dem Befehl lsblk aufzulisten. Dieser Befehl liefert eine baumartige Übersicht über alle Blockgeräte und ihre Partitionen.

lsblk

Sie sollten eine Ausgabe ähnlich dieser sehen, die Geräte wie vda, vdb usw. anzeigt, die virtuelle Festplattengeräte in Ihrer Containerumgebung darstellen:

NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
vda    253:0    0   40G  0 disk
├─vda1 253:1    0    1M  0 part
├─vda2 253:2    0  100M  0 part /boot/efi
└─vda3 253:3    0 39.9G  0 part /
vdb    253:16   0   40G  0 disk

In der Ausgabe:

  • NAME: Der Name des Blockgeräts (z. B. vda, vdb) oder der Partition (z. B. vda1, vda2).
  • MAJ:MIN: Haupt- und Nebengerätenummern.
  • RM: Wechseldatenträger (1, wenn wechselbar, 0, wenn nicht).
  • SIZE: Die Größe des Geräts oder der Partition.
  • RO: Read-only (1, wenn schreibgeschützt, 0, wenn nicht).
  • TYPE: Typ des Geräts (z. B. disk, part für Partition).
  • MOUNTPOINTS: Wo das Gerät oder die Partition derzeit eingehängt ist.

Als Nächstes untersuchen wir die Dateisysteme und ihre Nutzung mit dem Befehl df. Der Befehl df meldet die Festplattenspeichernutzung des Dateisystems.

df

Die Ausgabe zeigt verschiedene Dateisysteme, ihre Gesamtgröße, den genutzten Speicherplatz, den verfügbaren Speicherplatz und die Einhängepunkte:

Filesystem     1K-blocks    Used Available Use% Mounted on
devtmpfs            4096       0      4096   0% /dev
tmpfs            1822216       0   1822216   0% /dev/shm
tmpfs             728888     616    728272   1% /run
efivarfs             256       9       243   4% /sys/firmware/efi/efivars
/dev/vda3       41773036 3628732  38144304   9% /
/dev/vda2         102156    7198     94958   8% /boot/efi
tmpfs             364440       0    364440   0% /run/user/1000

Um die Ausgabe lesbarer zu machen, insbesondere für Größen, können Sie die Option -h für ein menschenlesbares Format (z. B. M für MiB, G für GiB) verwenden.

df -h

Sie sehen Größen in einem verständlicheren Format:

Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        4.0M     0  4.0M   0% /dev
tmpfs           1.8G     0  1.8G   0% /dev/shm
tmpfs           712M  616K  712M   1% /run
efivarfs        256K  8.5K  243K   4% /sys/firmware/efi/efivars
/dev/vda3        40G  3.5G   37G   9% /
/dev/vda2       100M  7.1M   93M   8% /boot/efi
tmpfs           356M     0  356M   0% /run/user/1000

Schließlich verwenden wir den Befehl lsblk -fp, um den vollständigen Pfad der Geräte, ihre UUIDs (Universally Unique Identifiers) und Dateisystemtypen aufzulisten. UUIDs sind stabile Bezeichner, die gleich bleiben, auch wenn sich Gerätenamen ändern, was sie für ein konsistentes Einhängen nützlich macht.

lsblk -fp

Die Ausgabe enthält UUIDs und Dateisystemtypen:

NAME        FSTYPE FSVER LABEL UUID                                 FSAVAIL FSUSE% MOUNTPOINTS
/dev/vda
├─/dev/vda1
├─/dev/vda2 vfat   FAT16       E52E-0564                              92.7M     7% /boot/efi
└─/dev/vda3 xfs          root  4c234c8b-4f67-4d65-abb5-06753b1ec236   36.4G     9% /
/dev/vdb

Beachten Sie die Spalte UUID, die einen eindeutigen Bezeichner für jedes Dateisystem liefert. Dies ist entscheidend für das zuverlässige Einhängen von Dateisystemen, insbesondere in Konfigurationsdateien wie /etc/fstab.

Dateisystemnutzung mit df und du untersuchen

In diesem Schritt werden Sie sich eingehender mit der Untersuchung der Dateisystemnutzung mit den Befehlen df und du befassen. Während df einen Überblick über die Festplattenspeichernutzung für eingehängte Dateisysteme liefert, wird du (Disk Usage) verwendet, um die Dateispeichernutzung für bestimmte Dateien oder Verzeichnisse zu schätzen. Das Verständnis des Unterschieds und wann welcher Befehl verwendet werden soll, ist für ein effektives Festplattenspeichermanagement unerlässlich.

Beginnen wir damit, den Befehl df mit seiner menschenlesbaren Option erneut aufzurufen. Dieser Befehl eignet sich hervorragend, um eine schnelle Zusammenfassung darüber zu erhalten, wie viel Speicherplatz auf allen eingehängten Dateisystemen verwendet wird und wie viel verfügbar ist.

df -h

Die Ausgabe zeigt die Festplattennutzung in einem leicht lesbaren Format (z. B. G für Gigabyte, M für Megabyte):

Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        892M     0  892M   0% /dev
tmpfs           915M     0  915M   0% /dev/shm
tmpfs           915M   17M  899M   2% /run
tmpfs           915M     0  915M   0% /sys/fs/cgroup
/dev/vda4       8.0G  1.4G  6.7G  17% /
/dev/vda3      1014M  166M  849M  17% /boot
tmpfs           183M     0  183M   0% /run/user/1000

Nun wollen wir den Befehl du untersuchen. Im Gegensatz zu df berechnet du den Festplattenspeicher, der von Dateien und Verzeichnissen innerhalb eines angegebenen Pfads verwendet wird. Dies ist besonders nützlich, wenn Sie herausfinden möchten, welche Verzeichnisse oder Dateien den meisten Speicherplatz verbrauchen.

Um die Festplattennutzung Ihres aktuellen Verzeichnisses (~/project) anzuzeigen, verwenden Sie du ohne Argumente. Dadurch wird die Größe jeder Datei und jedes Unterverzeichnisses innerhalb von ~/project aufgelistet.

du

Die Ausgabe kann umfangreich sein und standardmäßig Größen in Kilobyte anzeigen:

4       ./.config/xfce4/xfconf/xfce-perchannel-xml
8       ./.config/xfce4/xfconf
12      ./.config/xfce4
16      ./.config
4       ./.local/share/nano
8       ./.local/share
12      ./.local
28      .

Um die Ausgabe lesbarer zu machen, ähnlich wie bei df -h, können Sie die Option -h mit du verwenden.

du -h

Dadurch werden die Größen in menschenlesbaren Einheiten angezeigt:

4.0K    ./.config/xfce4/xfconf/xfce-perchannel-xml
8.0K    ./.config/xfce4/xfconf
12K     ./.config/xfce4
16K     ./.config
4.0K    ./.local/share/nano
8.0K    ./.local/share
12K     ./.local
28K     .

Oftmals sind Sie an der Gesamtgröße eines Verzeichnisses interessiert, anstatt an der Größe jeder einzelnen Datei und jedes Unterverzeichnisses. Hierfür können Sie die Option -s (summary) zusammen mit -h verwenden. Überprüfen wir die Gesamtgröße Ihres Home-Verzeichnisses (~).

du -sh ~

Dieser Befehl gibt die Gesamtgröße Ihres Home-Verzeichnisses aus:

48K     /home/labex

Lassen Sie uns einige Dateien erstellen, um zu sehen, wie du ihre Größen meldet. Wir erstellen ein Verzeichnis namens test_data und erstellen dann einige Dateien darin.

Erstellen Sie zuerst das Verzeichnis:

mkdir ~/project/test_data

Navigieren Sie nun in das Verzeichnis test_data:

cd ~/project/test_data

Erstellen Sie als Nächstes einige Dateien mit Inhalt. Wir verwenden den Befehl head, um Dateien bestimmter Größe zu generieren.

head -c 1K < /dev/urandom > file1.txt
head -c 5K < /dev/urandom > file2.txt
head -c 10K < /dev/urandom > file3.txt

Verwenden Sie nun du -h, um die Größen dieser neuen Dateien und des Verzeichnisses test_data anzuzeigen.

du -h

Sie sollten eine Ausgabe ähnlich dieser sehen:

1.0K    ./file1.txt
5.0K    ./file2.txt
10K     ./file3.txt
24K     .

Die letzte Zeile (24K .) zeigt die Gesamtgröße des aktuellen Verzeichnisses (., also ~/project/test_data).

Gehen wir abschließend zurück in Ihr Verzeichnis ~/project und überprüfen Sie die Gesamtgröße von test_data mit du -sh.

cd ~/project
du -sh test_data

Dadurch wird die zusammengefasste Größe des Verzeichnisses test_data angezeigt:

24K     test_data

Dies zeigt, wie du verwendet werden kann, um den Festplattenspeicherverbrauch innerhalb bestimmter Verzeichnisse zu ermitteln und Ihnen bei der effektiven Verwaltung des Speichers zu helfen.

Dateisysteme manuell ein- und aushängen

In diesem Schritt lernen Sie, wie Sie Dateisysteme manuell ein- und aushängen können. Durch das Einhängen eines Dateisystems werden dessen Inhalte über ein bestimmtes Verzeichnis (Einhängepunkt) in der Dateisystemhierarchie zugänglich gemacht. Durch das Aushängen wird das Dateisystem von seinem Einhängepunkt getrennt, wodurch seine Inhalte unzugänglich werden, bis es erneut eingehängt wird. Dies ist eine wichtige Fähigkeit für die Verwaltung von Wechselmedien, temporärem Speicher oder neuen Festplattenpartitionen.

Für diese Übung verwenden wir eines der nicht eingehängten Blockgeräte, die in Ihrer LabEx VM-Umgebung verfügbar sind. Aus dem vorherigen Schritt sollten Sie das Gerät /dev/vdb gesehen haben, das derzeit nicht eingehängt ist. Wir werden /dev/vdb für diesen Schritt verwenden.

Zuerst bestätigen wir die verfügbaren nicht eingehängten Blockgeräte mit lsblk.

lsblk

Sie sollten /dev/vdb ohne Einhängepunkte aufgelistet sehen.

NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
vda    253:0    0   40G  0 disk
├─vda1 253:1    0    1M  0 part
├─vda2 253:2    0  100M  0 part /boot/efi
└─vda3 253:3    0 39.9G  0 part /
vdb    253:16   0   40G  0 disk

Bevor Sie ein Dateisystem einhängen können, benötigen Sie einen Einhängepunkt, also ein leeres Verzeichnis. Es ist üblich, /mnt für temporäre Einhängepunkte zu verwenden oder ein Unterverzeichnis darin zu erstellen. Erstellen wir ein neues Verzeichnis namens mydata in Ihrem Verzeichnis ~/project, das als unser Einhängepunkt dienen soll.

mkdir ~/project/mydata

Nun müssen wir das Gerät /dev/vdb mit einem Dateisystem formatieren. Wir verwenden das XFS-Dateisystem, das der Standard für Red Hat Enterprise Linux ist. Seien Sie vorsichtig mit diesem Befehl, da er alle Daten auf dem angegebenen Gerät löscht.

sudo mkfs.xfs /dev/vdb

Sie sehen eine Ausgabe, die die Erstellung des XFS-Dateisystems anzeigt:

meta-data=/dev/vdb               isize=512    agcount=4, agsize=2621440 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=1, rmapbt=0
         =                       reflink=1    bigtime=1 inobtcount=1 nrext64=0
data     =                       bsize=4096   blocks=10485760, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0, ftype=1
log      =internal log           bsize=4096   blocks=16384, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

Nachdem /dev/vdb nun ein XFS-Dateisystem hat, können Sie es an Ihrem Einhängepunkt ~/project/mydata einhängen. Der Befehl mount erfordert sudo-Rechte.

sudo mount /dev/vdb ~/project/mydata

Um zu überprüfen, ob das Dateisystem erfolgreich eingehängt wurde, verwenden Sie erneut den Befehl df -h. Sie sollten /dev/vdb mit /home/labex/project/mydata als Einhängepunkt aufgelistet sehen.

df -h

Suchen Sie nach /dev/vdb in der Ausgabe:

Filesystem      Size  Used Avail Use% Mounted on
...
/dev/vdb         40G  318M   40G   1% /home/labex/project/mydata

Nun können Sie Dateien und Verzeichnisse in ~/project/mydata erstellen, und diese werden auf dem Gerät /dev/vdb gespeichert. Erstellen wir eine Testdatei:

sudo touch ~/project/mydata/testfile.txt

Sie können den Inhalt von ~/project/mydata auflisten, um die Erstellung der Datei zu bestätigen:

ls -l ~/project/mydata

Sie sollten testfile.txt aufgelistet sehen:

total 0
-rw-r--r--. 1 root root 0 Jun 16 11:09 testfile.txt

Wenn Sie die Verwendung eines eingehängten Dateisystems beendet haben, ist es wichtig, es auszuhängen, um Datenbeschädigungen zu vermeiden, insbesondere bevor Sie ein physisches Gerät entfernen. Verwenden Sie den Befehl umount, um das Dateisystem auszuhängen.

sudo umount ~/project/mydata

Wenn der Aushängebefehl mit dem Fehler "target is busy" fehlschlägt, bedeutet dies, dass ein Prozess noch auf den Einhängepunkt zugreift. Dies geschieht häufig, wenn sich Ihr aktuelles Arbeitsverzeichnis innerhalb des eingehängten Dateisystems befindet. Um dies zu beheben, ändern Sie Ihr aktuelles Verzeichnis an einen Ort außerhalb des Einhängepunkts, z. B. in Ihr Home-Verzeichnis (~).

cd ~

Versuchen Sie dann erneut, es auszuhängen:

sudo umount ~/project/mydata

Überprüfen Sie nach dem Aushängen mit df -h erneut, ob /dev/vdb nicht mehr eingehängt ist.

df -h

Sie sollten /dev/vdb nicht mehr auf /home/labex/project/mydata eingehängt sehen.

Filesystem      Size  Used Avail Use% Mounted on
...
## /dev/vdb should not be listed here anymore

Dies schließt den Vorgang des manuellen Ein- und Aushängens eines Dateisystems ab.

Dateien nach Namen mit locate und find finden

In diesem Schritt lernen Sie, wie Sie Dateien auf Ihrem System mit zwei leistungsstarken Befehlen finden: locate und find. Beide Befehle helfen Ihnen bei der Suche nach Dateien, arbeiten aber unterschiedlich und eignen sich für verschiedene Szenarien.

Verwendung des Befehls locate

Der Befehl locate ist sehr schnell, da er eine vorgefertigte Datenbank mit Dateinamen und -pfaden durchsucht. Dies bedeutet jedoch, dass er möglicherweise keine Dateien findet, die seit der letzten Datenbankaktualisierung erstellt oder gelöscht wurden. Die Datenbank wird in der Regel täglich von einem Cron-Job aktualisiert, aber Sie können eine Aktualisierung erzwingen.

Zuerst stellen wir sicher, dass das Paket mlocate, das den Befehl locate bereitstellt, installiert ist.

sudo dnf install -y mlocate

Während der Installation sehen Sie eine Ausgabe ähnlich dieser:

Last metadata expiration check: 0:00:01 ago on Mon 15 May 2023 08:00:00 AM UTC.
Dependencies resolved.
================================================================================
 Package        Architecture  Version             Repository               Size
================================================================================
Installing:
 mlocate        x86_64        0.26-28.el9         rhel-9-for-x86_64-appstream-rpms 100 k

Transaction Summary
================================================================================
Install  1 Package

Total download size: 100 k
Installed size: 230 k
Downloading Packages:
mlocate-0.26-28.el9.x86_64.rpm     100 kB/s | 100 kB     00:01
--------------------------------------------------------------------------------
Total                                            100 kB/s | 100 kB     00:01
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                        1/1
  Installing       : mlocate-0.26-28.el9.x86_64                             1/1
  Running scriptlet: mlocate-0.26-28.el9.x86_64                             1/1
  Verifying        : mlocate-0.26-28.el9.x86_64                             1/1
Installed:
  mlocate-0.26-28.el9.x86_64

Complete!

Nach der Installation müssen Sie die locate-Datenbank aktualisieren. Dieser Befehl erfordert sudo-Rechte.

sudo updatedb

Dieser Befehl wird im Hintergrund ausgeführt und kann je nach Größe Ihres Dateisystems einige Momente dauern.

Suchen wir nun nach einer gängigen Systemdatei wie passwd.

locate passwd

Sie sehen eine Liste der Pfade, die "passwd" enthalten:

/etc/passwd
/etc/passwd-
/etc/pam.d/passwd
/usr/share/man/man1/passwd.1.gz
/usr/share/man/man5/passwd.5.gz
...output omitted...

Um eine Suche ohne Berücksichtigung der Groß- und Kleinschreibung durchzuführen, verwenden Sie die Option -i. Suchen wir nach Dateien, die "messages" enthalten, ohne uns um die Groß- und Kleinschreibung zu kümmern.

locate -i messages

Sie sehen Ergebnisse wie:

/usr/share/locale/zza/LC_MESSAGES
/usr/share/makedumpfile/eppic_scripts/ap_messages_3_10_to_4_8.c
/usr/share/vim/vim82/ftplugin/msmessages.vim
...output omitted...

Sie können die Anzahl der Ergebnisse auch mit der Option -n begrenzen. Suchen wir die ersten 5 Vorkommnisse von "passwd".

locate -n 5 passwd

Dadurch werden nur die ersten 5 Übereinstimmungen angezeigt:

/etc/passwd
/etc/passwd-
/etc/pam.d/passwd
/usr/share/man/man1/passwd.1.gz
/usr/share/man/man5/passwd.5.gz

Verwendung des Befehls find

Der Befehl find durchsucht das Dateisystem in Echtzeit, was ihn langsamer macht als locate, aber sicherstellt, dass er alle Dateien findet, die Ihren Kriterien entsprechen, einschließlich derer, die kürzlich erstellt wurden. Er bietet auch viel leistungsfähigere Suchoptionen.

Die grundlegende Syntax für find lautet find [path] [expression]. Wenn kein Pfad angegeben ist, wird das aktuelle Verzeichnis durchsucht.

Suchen wir nach der Datei sshd_config beginnend im Stammverzeichnis (/).

find / -name sshd_config

Sie sollten den Pfad zur Konfigurationsdatei sehen:

/etc/ssh/sshd_config

Bei der Suche nach Teilnamen oder der Verwendung von Platzhaltern ist es wichtig, das Dateinamensmuster in Anführungszeichen zu setzen, um zu verhindern, dass die Shell es vorzeitig erweitert. Suchen wir nach allen Dateien, die in Ihrem Verzeichnis ~/project mit .txt enden.

find ~/project -name '*.txt'

Wenn Sie in der vorherigen Stufe file1.txt, file2.txt und file3.txt erstellt haben, sollten Sie diese aufgelistet sehen:

/home/labex/project/test_data/file1.txt
/home/labex/project/test_data/file2.txt
/home/labex/project/test_data/file3.txt

Um eine Suche ohne Berücksichtigung der Groß- und Kleinschreibung mit find durchzuführen, verwenden Sie die Option -iname. Suchen wir nach Dateien, die "README" (ohne Berücksichtigung der Groß- und Kleinschreibung) im Verzeichnis /usr/share/doc enthalten.

find /usr/share/doc -iname '*readme*'

Sie sehen viele Ergebnisse, zum Beispiel:

/usr/share/doc/libselinux/README
/usr/share/doc/libsepol/README
/usr/share/doc/libsemanage/README
...output omitted...

Der Befehl find ist sehr vielseitig und kann mit anderen Kriterien kombiniert werden, die Sie in den nächsten Schritten untersuchen werden.

Dateien nach Eigentümerschaft, Berechtigungen, Größe und Zeit finden

In diesem Schritt lernen Sie, wie Sie den leistungsstarken Befehl find verwenden, um Dateien basierend auf verschiedenen Kriterien zu finden, die über ihren Namen hinausgehen. Dazu gehört die Suche nach Eigentümerschaft, Berechtigungen, Größe und Änderungszeit. Diese erweiterten Suchfunktionen sind für Systemadministrationsaufgaben wie Auditing, Bereinigung und Fehlerbehebung unerlässlich.

Dateien nach Eigentümerschaft finden

Sie können nach Dateien suchen, die einem bestimmten Benutzer oder einer bestimmten Gruppe gehören, indem Sie die Optionen -user bzw. -group verwenden. Sie können den Benutzer-/Gruppennamen oder ihre numerische ID angeben.

Suchen wir nach allen Dateien in Ihrem Home-Verzeichnis (~), die dem Benutzer labex gehören.

find ~ -user labex

Dadurch werden viele Dateien aufgelistet, einschließlich Ihrer Konfigurationsdateien:

/home/labex
/home/labex/.bash_logout
/home/labex/.bash_profile
/home/labex/.bashrc
/home/labex/.config
/home/labex/.config/xfce4
/home/labex/.config/xfce4/xfconf
/home/labex/.config/xfce4/xfconf/xfce-perchannel-xml
/home/labex/.local
/home/labex/.local/share
/home/labex/.local/share/nano
/home/labex/project
/home/labex/project/test_data
/home/labex/project/test_data/file1.txt
/home/labex/project/test_data/file2.txt
/home/labex/project/test_data/file3.txt
...output omitted...

Um nach Dateien zu suchen, die der Gruppe labex gehören:

find ~ -group labex

Die Ausgabe ist ähnlich, da labex typischerweise die primäre Gruppe für den Benutzer labex ist.

Sie können auch nach Benutzer-ID (UID) oder Gruppen-ID (GID) suchen. Der Benutzer labex hat typischerweise eine UID und GID von 1000.

find ~ -uid 1000
find ~ -gid 1000

Dateien nach Berechtigungen finden

Mit der Option -perm des Befehls find können Sie nach Dateien mit bestimmten Berechtigungen suchen. Berechtigungen können im Oktalmodus (z. B. 755) oder im symbolischen Modus (z. B. u=rwx,g=rx,o=rx) angegeben werden.

Erstellen wir eine Testdatei in Ihrem Verzeichnis ~/project mit bestimmten Berechtigungen.

touch ~/project/permission_test.txt
chmod 644 ~/project/permission_test.txt

Suchen wir nun nach Dateien in ~/project, die genau die Berechtigungen 644 haben.

find ~/project -perm 644

Sie sollten permission_test.txt aufgelistet sehen:

/home/labex/project/permission_test.txt

Sie können auch ein führendes / oder - mit den oktalen Berechtigungen verwenden:

  • /: Passt, wenn irgendwelche der angegebenen Berechtigungsbits gesetzt sind.
  • -: Passt, wenn alle der angegebenen Berechtigungsbits gesetzt sind.

Suchen wir nach Dateien in ~/project, bei denen andere mindestens Leseberechtigung haben (o=r oder 004).

find ~/project -perm -004

Dadurch werden permission_test.txt und andere Dateien aufgelistet, die anderen Lesezugriff gewähren.

/home/labex/project/permission_test.txt
...output omitted...

Dateien nach Größe finden

Mit der Option -size können Sie nach Dateien basierend auf ihrer Größe suchen. Sie können die Größe mit Einheiten (z. B. k für Kilobyte, M für Megabyte, G für Gigabyte) angeben. Sie können auch + für "größer als" und - für "kleiner als" verwenden.

Suchen wir nach Dateien in Ihrem Verzeichnis ~/project/test_data, die genau 1 Kilobyte groß sind.

find ~/project/test_data -size 1k

Sie sollten file1.txt sehen:

/home/labex/project/test_data/file1.txt

Suchen Sie nun nach Dateien, die größer als 5 Kilobyte sind.

find ~/project/test_data -size +5k

Dies sollte file3.txt auflisten:

/home/labex/project/test_data/file3.txt

Und Dateien, die kleiner als 10 Kilobyte sind.

find ~/project/test_data -size -10k

Dies sollte file1.txt und file2.txt auflisten:

/home/labex/project/test_data/file1.txt
/home/labex/project/test_data/file2.txt

Dateien nach Änderungszeit finden

Sie können nach Dateien basierend auf ihrer Änderungszeit suchen, indem Sie Optionen wie -mmin (vor Minuten geändert) oder -mtime (vor Tagen geändert) verwenden.

Suchen wir nach Dateien in Ihrem Verzeichnis ~/project, die in den letzten 60 Minuten geändert wurden.

find ~/project -mmin -60

Dies umfasst wahrscheinlich permission_test.txt und die Dateien in test_data, wenn Sie sie kürzlich erstellt haben:

/home/labex/project
/home/labex/project/permission_test.txt
/home/labex/project/test_data
/home/labex/project/test_data/file1.txt
/home/labex/project/test_data/file2.txt
/home/labex/project/test_data/file3.txt

Um Dateien zu finden, die vor mehr als 1 Tag (24 Stunden) geändert wurden, können Sie +1 mit -mtime verwenden.

find ~/project -mtime +1

Dieser Befehl gibt möglicherweise keine Dateien zurück, wenn alle Ihre ~/project-Dateien kürzlich erstellt oder geändert wurden.

Diese Optionen können kombiniert werden, um sehr spezifische Suchabfragen zu erstellen, mit denen Sie Dateien auf Ihrem System effizient verwalten können.

Dateien nach Dateityp suchen

In diesem letzten Schritt lernen Sie, wie Sie den Befehl find verwenden, um nach Dateien basierend auf ihrem Typ zu suchen. Dies ist besonders nützlich, wenn Sie alle Verzeichnisse, regulären Dateien, symbolischen Links oder Gerätedateien innerhalb eines bestimmten Pfads finden müssen.

Der Befehl find verwendet die Option -type, gefolgt von einem einzelnen Zeichen, um den Dateityp anzugeben. Hier sind einige gängige Dateitypen, nach denen Sie suchen können:

  • f: Reguläre Datei (regular file)
  • d: Verzeichnis (directory)
  • l: Symbolischer Link (symlink)
  • b: Blockgerät (block device)
  • c: Zeichengerät (character device)
  • p: Benannte Pipe (FIFO)
  • s: Socket

Beginnen wir mit der Suche nach allen Verzeichnissen in Ihrem Verzeichnis ~/project.

find ~/project -type d

Sie sollten eine Ausgabe ähnlich dieser sehen, die alle Verzeichnisse und Unterverzeichnisse auflistet:

/home/labex/project
/home/labex/project/test_data

Suchen wir als Nächstes nach allen regulären Dateien in Ihrem Verzeichnis ~/project.

find ~/project -type f

Dadurch werden Dateien wie file1.txt, file2.txt und file3.txt aufgelistet, die Sie zuvor erstellt haben:

/home/labex/project/test_data/file1.txt
/home/labex/project/test_data/file2.txt
/home/labex/project/test_data/file3.txt

Erstellen wir nun einen symbolischen Link, um die Suche nach Symlinks zu demonstrieren. Wir erstellen einen Symlink zu file1.txt in Ihrem Verzeichnis ~/project.

ln -s ~/project/test_data/file1.txt ~/project/link_to_file1.txt

Überprüfen Sie, ob der Symlink mit ls -l erstellt wurde:

ls -l ~/project/link_to_file1.txt

Sie sollten eine Ausgabe sehen, die anzeigt, dass es sich um einen symbolischen Link handelt:

lrwxrwxrwx. 1 labex labex 32 May 15 08:00 /home/labex/project/link_to_file1.txt -> /home/labex/project/test_data/file1.txt

Suchen Sie nun nach allen symbolischen Links in Ihrem Verzeichnis ~/project.

find ~/project -type l

Sie sollten Ihren neu erstellten Symlink sehen:

/home/labex/project/link_to_file1.txt

Suchen wir abschließend nach Blockgeräten. Blockgeräte befinden sich typischerweise im Verzeichnis /dev.

find /dev -type b

Dadurch werden Blockgeräte wie vda, vda1, vda2 usw. aufgelistet:

/dev/vda1
/dev/vda2
/dev/vda3
/dev/vda
/dev/vdb

Sie können die Option -type mit anderen find-Optionen kombinieren, die Sie in den vorherigen Schritten gelernt haben. Um beispielsweise alle Verzeichnisse in /etc zu finden, die dem Benutzer root gehören:

find /etc -type d -user root

Dies erzeugt eine lange Liste von Verzeichnissen:

/etc
/etc/selinux
/etc/selinux/targeted
/etc/selinux/targeted/active
/etc/selinux/targeted/active/modules
...output omitted...

Dies schließt das Lab zur Zugriffs auf Linux-Dateisysteme und zum Auffinden von Dateien ab. Sie haben gelernt, wie Sie Geräte identifizieren, die Festplattennutzung untersuchen, Dateisysteme manuell ein- und aushängen und locate und find mit verschiedenen Kriterien verwenden.

Zusammenfassung

In diesem Lab haben wir praktische Erfahrungen in der Verwaltung von Linux-Dateisystemen auf einem Red Hat Enterprise Linux-System gesammelt. Wir begannen damit, Dateisysteme und Blockgeräte mithilfe von Befehlen wie lsblk zu identifizieren und Kernkonzepte wie Blockgeräte, Partitionen, Dateisysteme und Mountpunkte zu verstehen. Anschließend untersuchten wir, wie man die Dateisystemnutzung mit df und du untersucht und ihre Funktionalitäten zur Berichterstattung über den Festplattenspeicher unterscheidet. Das Lab behandelte auch die wesentliche Fähigkeit, Dateisysteme manuell einzuhängen und auszuhängen, und demonstrierte, wie man Dateisysteminhalte zugänglich macht und sie dann wieder trennt.

Darüber hinaus haben wir uns eingehend mit der effizienten Suche nach Dateien unter Verwendung verschiedener Kriterien befasst. Wir lernten, Dateien nach Namen mit locate und find zu finden und die Unterschiede und geeigneten Anwendungsfälle für jeden Befehl zu verstehen. Das Lab erweiterte dies, indem es lehrte, wie man nach Dateien basierend auf Eigentümerschaft, Berechtigungen, Größe und Zeitattributen sucht, und lieferte leistungsstarke Werkzeuge für die Systemadministration und Fehlerbehebung. Schließlich übten wir die Suche nach Dateien basierend auf ihren spezifischen Dateitypen und schlossen damit einen umfassenden Überblick über die Dateisystemverwaltung und Dateisuchtechniken ab.