Testen Sie Ihr Bash Scripting Wissen mit diesem Puzzle

Willkommen zur Bash Challenge # 6 von Yes I Know IT & It's FOSS. In dieser wöchentlichen Herausforderung zeigen wir Ihnen einen Terminal-Screenshot und bitten Sie zu erklären, warum das Ergebnis nicht das erwartete ist.

Natürlich besteht der amüsanteste und kreativste Teil der Herausforderung darin, zu finden, wie die auf dem Bildschirm angezeigten Befehle korrigiert werden können, um das richtige Ergebnis zu erzielen. Die Bash Challenge der letzten Woche war Level 1, aber diesmal haben wir den Einsatz erhöht und wir haben ein Level 2-Problem für Sie.

Sie können diese Herausforderungen (mit unveröffentlichten Herausforderungen) auch in Buchform kaufen und uns unterstützen:

Fertig zu spielen? Also hier ist die Herausforderung dieser Woche:

Die Datei, die rm überlebt hat

Heute ist unsere Beschreibung recht kurz: Ich habe drei Dateien in einem Verzeichnis. Als root habe ich in diesem Verzeichnis rm * . Es gibt jedoch eine Datei, die sich hartnäckig weigert, gelöscht zu werden:

 root:011# ls -ls total 12 4 -rw-r--r-- 1 root root 29 nov 21 21:25 a 4 -rw-r--r-- 1 root root 29 nov 21 21:25 b 4 -rw-r--r-- 1 root root 29 nov 21 21:23 c root:012# rm * rm: cannot remove 'c': Operation not permitted root:013# ls -ls total 4 4 -rw-r--r-- 1 root root 29 nov 21 21:23 c 

Ihre Herausforderung besteht darin, Folgendes zu finden:

  • Was verhinderte das Löschen der dritten Datei?
  • Wie lösche ich diese Datei?

Wir freuen uns darauf, Ihre Lösungen im Kommentarbereich weiter unten zu lesen!

Einige Details

Um diese Herausforderung zu erstellen, habe ich Folgendes verwendet:

  • GNU Bash, Version 4.4.5 (x86_64-pc-linux-gnu)
  • Debian 4.8.7-1 (amd64)
  • Alle Befehle werden mit einer Standard-Debian-Distribution ausgeliefert
  • Es wurden keine Befehle mit Alias ​​versehen

Die Lösung

Wie reproduzieren

Hier ist der Rohcode, mit dem wir diese Herausforderung erstellt haben. Wenn Sie das in einem Terminal ausführen, können Sie genau dasselbe Ergebnis wie in der Abbildung zur Abfrage reproduzieren (vorausgesetzt, Sie verwenden dieselbe Softwareversion wie ich):

  # as root : cd /tmp rm -rf ItsFOSS mkdir -p ItsFOSS cd ItsFOSS date > a date > b date > c sudo chattr +ic clear ls -ls rm * ls -ls 

Was war das Problem ?

Ich habe den Befehl chattr, um das (i) mmutable Linux-Dateisystemattribut für die Datei c festzulegen . Abhängig von Ihrem genauen Dateisystem sind nicht alle Attributänderungen verfügbar.

Aber hier verwende ich ein ext2-Dateisystem, das das i Flag unterstützt. Und um den Mann zu zitieren:

  A file with the 'i' attribute cannot be modified: it cannot be deleted or renamed, no link can be created to this file and no data can be written to the file. Only the superuser or a process possessing the CAP_LINUX_IMMUTABLE capability can set or clear this attribute. 

Im Grunde ist die Datei nach dem chattr +i gesperrt, bis wir dieses Flag löschen. Bitte beachten Sie, dass das Attribut im Dateisystem gespeichert ist. Es wird Neustarts & Dateisystem Unmount / Mount-Zyklen überleben.

Wie kann man das beheben?

Zuerst können wir die obige Erklärung mit dem Befehl lsattr überprüfen:

 root:014# lsattr c ----i-------------- c 

Es ist klar, dass das Flag (i) mmutable gesetzt ist. Um diese Datei zu entfernen (oder Änderungen daran vorzunehmen), muss ich zuerst dieses Flag löschen. Danach kann ich wie gewohnt mit der Datei machen, was immer ich will:

 root:015# chattr -ic root:016# lsattr c ------------------- c root:017# rm c root:018# ls -ls total 0 

Wenn Sie sich der Existenz von chattr nicht bewusst chattr, können die Auswirkungen ziemlich rätselhaft sein. Erwähnenswert ist, dass chattr ein Linux-spezifischer Befehl ist, der ursprünglich für die Dateisysteme ext2 / chattr geschrieben wurde. Aber heute werden einige seiner Funktionen von anderen Dateisystemen unterstützt.

In der BSD-Welt gibt es einen ähnlichen Befehl namens chflags . Lesen Sie mehr auf Wikipedia (// de.wikipedia.org/wiki/Chattr), um eine sanfte Einführung in diese Befehle im Vergleich zu chattr .

Wir hoffen, Ihnen hat diese Herausforderung gefallen. Bleiben Sie dran für mehr Spaß!

Empfohlen

Tracktions T7 DAW kann jetzt kostenlos unter Linux heruntergeladen werden
2019
Solus Version 1.2.1 bringt Mate Desktop
2019
Die JavaScript-Engine von Microsoft Edge soll Open Source sein
2019