Test je Bash-scriptkennis met deze puzzel

Welkom bij de Bash-uitdaging # 6 door Yes I Know IT & It's FOSS. In deze wekelijkse uitdaging zullen we je een terminal screenshot tonen en je vragen om uit te leggen waarom het resultaat niet het resultaat is dat we verwachtten.

Natuurlijk, het leukste en meest creatieve deel van de uitdaging zal zijn om te vinden hoe de opdracht (en) die op het scherm worden weergegeven, kunnen worden hersteld om het juiste resultaat te verkrijgen. De Bash Challenge van vorige week stond op de eerste plaats, maar we hebben deze keer de voorhoede en we hebben een niveau 2-probleem voor je.

Je kunt deze uitdagingen (met niet-gepubliceerde uitdagingen) ook in boekvorm kopen en ons steunen:

Klaar om te spelen? Dus hier is de uitdaging van deze week:

Het bestand dat overleefde om te bewerken

Vandaag is onze beschrijving vrij kort: ik heb drie bestanden in een map. Als root gebruikte ik rm * in die map. Maar er is één bestand dat koppig weigert te worden verwijderd:

 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 

Jouw uitdaging is om te vinden:

  • Wat heeft voorkomen dat het derde bestand werd verwijderd?
  • Hoe om dat bestand te verwijderen?

We kijken er naar uit om uw oplossingen te lezen in de commentaarsectie hieronder!

Weinig details

Om deze uitdaging te creëren, gebruikte ik:

  • GNU Bash, versie 4.4.5 (x86_64-pc-linux-gnu)
  • Debian 4.8.7-1 (amd64)
  • Alle opdrachten zijn die met een standaard Debian-distributie
  • Geen opdrachten zijn gealiast

De oplossing

Hoe te reproduceren

Dit is de ruwe code die we hebben gebruikt om deze uitdaging aan te gaan. Als u dat in een terminal uitvoert, kunt u exact hetzelfde resultaat reproduceren als in de illustratie van de uitdaging (ervan uitgaande dat u dezelfde softwareversie als mij gebruikt):

  # 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 

Wat was het probleem ?

Ik gebruikte de opdracht chattr om het (i) bruikbaar Linux-bestandssysteemkenmerk voor het bestand c . Afhankelijk van uw exacte bestandssysteem, zijn alle wijzigingen in het kenmerk niet beschikbaar.

Maar hier, gebruik ik en ext2 filesystem dat de vlag van i steunt. En om de man te citeren:

  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. 

Dus in feite is het bestand na de chattr +i vergrendeld totdat we deze markering wissen. Let op: het attribuut is opgeslagen in het bestandssysteem. Het overleeft reboots & bestandssysteem-ontkoppel / mount-cycli.

Hoe dat op te lossen?

Ten eerste kunnen we de bovenstaande uitleg controleren met de opdracht lsattr :

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

Het is duidelijk dat de (i) markeerbare vlag is ingesteld. Dus om dat bestand te verwijderen (of er iets aan te veranderen) moet ik eerst die markering wissen. Daarna kan ik zoals gewoonlijk doen wat ik wil in het bestand:

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

Als je het bestaan ​​van chattr, kunnen de effecten behoorlijk verwarrend zijn. Het vermelden waard chattr is een Linux-specifieke opdracht, oorspronkelijk geschreven voor de ext2 / chattr bestandssystemen. Maar de functie van vandaag wordt ondersteund door andere bestandssystemen.

In de BSD-wereld is er een vergelijkbaar commando met de naam chflags . Lees meer op Wikipedia (// en.wikipedia.org/wiki/Chattr) voor een vriendelijke introductie tot die commando's in vergelijking met chattr .

We hopen dat je die uitdaging leuk vond. Blijf kijken voor meer plezier!

Aanbevolen

Installeer Adobe Lightroom Alternatieve RawTherapee in Ubuntu
2019
Download 15 prachtige sexy achtergronden van Debian
2019
Gebruik de modus Niet storen in Ubuntu met NoNotifications
2019