Hoe de chattr-opdracht op Linux te gebruiken

Linux-terminal op een rode laptop achtergrond.
fatmawati achmad zaenuri/Shutterstock

Naast de gebruikelijke lees-, schrijf- en uitvoerrechten voor bestanden, hebben Linux-bestanden nog een set attributen die andere kenmerken van het bestand regelen. Hier leest u hoe u ze kunt bekijken en wijzigen.

Machtigingen en attributen

In Linux wordt wie toegang heeft tot een bestand en wat ze ermee kunnen doen, bepaald door een gebruikersgerichte set van rechten. Of u de inhoud van een bestand kunt lezen, nieuwe gegevens in het bestand kunt schrijven of een bestand kunt uitvoeren als het een script of een programma is, wordt allemaal bepaald door die set machtigingen. De machtigingen worden toegepast op het bestand, maar ze definiëren de beperkingen en mogelijkheden voor verschillende gebruikerscategorieën.

Er zijn machtigingen voor de baasje van het bestand, voor de groep van het bestand, en voor anderen-dat wil zeggen gebruikers die niet in de eerste twee categorieën vallen. U kunt de ls commando met de -l (lange lijst) optie om de machtigingen voor een bestand of map te zien.

Hoe de chmod-opdracht op Linux te gebruiken

VERWANTHoe de chmod-opdracht op Linux te gebruiken

Om de rechten te wijzigen, gebruik je de chmod opdracht. Tenminste, als je schrijfrechten hebt voor het bestand, of als je de root gebruiker bent.

We kunnen zien dat bestandsmachtigingen gebruikersgericht zijn omdat ze machtigingen op gebruikersniveau toekennen of verwijderen. Daarentegen is de attributen van een bestand zijn gericht op het bestandssysteem. Net als machtigingen worden ze ingesteld op het bestand of de map. Maar als ze eenmaal zijn ingesteld, zijn ze voor alle gebruikers hetzelfde.

Kenmerken zijn een aparte verzameling instellingen van machtigingen. Kenmerkt controlekenmerken zoals onveranderlijkheid en ander gedrag op bestandssysteemniveau. Om de attributen van een bestand of directory te zien gebruiken we de lsattr opdracht. Om de attributen in te stellen gebruiken we de chattr opdracht.

Alles wat u ooit wilde weten over inodes op Linux

VERWANTAlles wat u ooit wilde weten over inodes op Linux

Machtigingen en attributen worden binnen opgeslagen inodes. Een inode is een bestandssysteemstructuur die informatie bevat over bestandssysteemobjecten zoals bestanden en mappen. De locatie van een bestand op de harde schijf, de aanmaakdatum, de machtigingen en de attributen worden allemaal opgeslagen in de inode.

Omdat verschillende bestandssystemen verschillende onderliggende structuren en mogelijkheden hebben, kunnen kenmerken zich door sommige bestandssystemen anders gedragen – of volledig worden genegeerd. In dit artikel gebruiken we ext4 wat het standaard bestandssysteem is voor veel Linux-distributies.

De attributen van een bestand bekijken

De chattr en lsattr commando’s zijn al aanwezig op uw computer, dus u hoeft niets te installeren.

Om de attributen van de bestanden in de huidige directory te controleren, gebruik lsattr:

lsattr

Bestandskenmerken weergeven voor alle bestanden in een map

De stippellijnen zijn tijdelijke aanduidingen voor attributen die niet zijn ingesteld. Het enige attribuut dat is ingesteld, is de e (omvang) attribuut. Dit toont aan dat inodes van het bestandssysteem gebruik maken van – of zullen gebruiken indien nodig –omvang om naar alle delen van het bestand op de harde schijf te wijzen.

Als het bestand in een aaneengesloten reeks blokken van de harde schijf wordt bewaard, hoeft de inode alleen de eerste en laatste blokken op te nemen die zijn gebruikt om het bestand op te slaan. Als het bestand gefragmenteerd is, moet de inode het nummer van het eerste en laatste blok van elk stuk van het bestand registreren. Deze paren bloknummers van de harde schijf worden ‘extents’ genoemd.

Dit is de lijst met de meest gebruikte attributen.

  • a: Alleen toevoegen. Een bestand met dit kenmerk kan alleen worden toegevoegd aan. Er kan nog steeds naar worden geschreven, maar alleen aan het einde van het bestand. Het is niet mogelijk om de bestaande gegevens in het bestand te overschrijven.
  • c: Gecomprimeerd. Het bestand wordt automatisch gecomprimeerd op de harde schijf en gedecomprimeerd wanneer het wordt gelezen. Gegevens die naar de bestanden worden geschreven, worden gecomprimeerd voordat ze naar de harde schijf worden geschreven.
  • EEN: Nee atime updates. De atime is een waarde in een inode die de laatste keer dat een bestand is geopend, registreert.
  • C: Geen copy-on-write. Als twee processen toegang tot een bestand vragen, kunnen ze verwijzingen naar hetzelfde bestand krijgen. Ze krijgen alleen hun eigen unieke kopie van het bestand als ze proberen naar het bestand te schrijven, waardoor het uniek is voor dat proces.
  • d: Geen dump. de Linux dump commando wordt gebruikt om kopieën van volledige bestandssystemen naar back-upmedia te schrijven. Dit attribuut maakt dump negeer het bestand. Het is uitgesloten van de back-up.
  • D: Synchrone directory-updates. Wanneer dit kenmerk is ingeschakeld voor een directory, worden alle wijzigingen in die directory synchroon, dat wil zeggen, onmiddellijk op de harde schijf geschreven. Gegevensbewerkingen kunnen worden gebufferd.
  • e: Omvang formaat. De e attribuut geeft aan dat het bestandssysteem begrenzingen gebruikt om de locatie van het bestand op de harde schijf toe te wijzen. U kunt dit niet wijzigen met chattr. Het is een functie van de werking van het bestandssysteem.
  • i: onveranderlijk. Een onveranderlijk bestand kan niet worden gewijzigd, inclusief hernoemen en verwijderen. De rootgebruiker is de enige persoon die dit attribuut kan in- of uitschakelen.
  • s: Veilig verwijderen. Wanneer een bestand met deze attributenset wordt verwijderd, worden de blokken op de harde schijf die de bestandsgegevens bevatten overschreven met bytes die nullen bevatten. Merk op dat dit niet wordt gehonoreerd door de ext4 bestandssysteem.
  • S: Synchrone updates. Wijzigingen in een bestand met zijn S attributenset worden synchroon naar het bestand geschreven.
  • jij: een bestand verwijderen dat zijn . heeft u attributenset zorgt ervoor dat er een kopie van het bestand wordt gemaakt. Dit kan gunstig zijn voor bestandsherstel als het bestand ten onrechte is verwijderd.

De kenmerken van een bestand wijzigen

De chattr commando laat ons de attributen van een bestand of directory wijzigen. We kunnen de + (set) en - (unset) operators om een ​​attribuut toe te passen of te verwijderen, vergelijkbaar met de chmod commando en machtigingen.

De chattr commando heeft ook een = (alleen instellen) operator. Dit stelt de attributen van een bestand of directory in op alleen de attributen die in de opdracht zijn gespecificeerd. Dat wil zeggen, alle attributen niet vermeld op de opdrachtregel zijn uitgeschakeld.

Het kenmerk Alleen toevoegen instellen

Laten we het append-only attribuut voor een tekstbestand instellen en kijken hoe dit van invloed is op wat we met het bestand kunnen doen.

sudo chattr +a text-file.txt

Het attribuut alleen toevoegen aan een tekstbestand instellen

We kunnen controleren of het alleen-toevoegen-bit is ingesteld door . te gebruiken lsattr :

lsattr text-file.txt

De attributen voor een tekstbestand weergeven

De brief “a” geeft aan dat het attribuut is ingesteld. Laten we proberen het bestand te overschrijven. Uitvoer omleiden naar een bestand met een enkele punthaak “>” vervangt alle inhoud in het bestand door de omgeleide uitvoer.

We hebben het tekstbestand vooraf geladen met wat lorem ipsum Placeholder tekst.

cat text-file.txt

Tijdelijke tekst in een tekstbestand

We zullen de uitvoer omleiden van ls in het bestand:

ls -l > text-file.txt
sudo ls -l > text-file.txt

Proberen een alleen-toevoegend tekstbestand te overschrijven

De bewerking is niet toegestaan, zelfs niet als we de sudo opdracht.

Als we twee punthaken gebruiken “>>” om de uitvoer om te leiden, wordt het toegevoegd aan de bestaande gegevens in het bestand. Dat zou acceptabel moeten zijn voor ons alleen-toevoegen-tekstbestand.

sudo ls -l >> text-file.txt

Uitvoer omleiden naar het einde van een tekstbestand

We keren terug naar de opdrachtprompt zonder foutmeldingen. Laten we in het bestand kijken om te zien wat er is gebeurd.

cat text-file.txt

De inhoud van een tekstbestand onderzoeken

De omgeleide uitvoer van ls is toegevoegd aan het einde van het bestand.

Nieuwe gegevens toegevoegd aan een tekstbestand dat alleen kan worden toegevoegd

Hoewel we gegevens aan het bestand kunnen toevoegen, is dat de enige wijziging die we erin kunnen aanbrengen. We kunnen het niet verwijderen en ook niet rooten.

rm text-file.txt
sudo rm text-file.txt

Kan een alleen toegevoegd tekstbestand niet verwijderen

Het onveranderlijke kenmerk instellen

Als u een bestand wilt beveiligen waaraan nooit nieuwe gegevens worden toegevoegd, kunt u het onveranderlijke kenmerk instellen. Dit voorkomt alle wijzigingen aan het bestand, inclusief het toevoegen van gegevens.

sudo chattr +i second-file.txt
lsattr second-file.txt

Het onveranderlijke kenmerk instellen op een tekstbestand

We zien de “i” waarmee wordt aangegeven dat het onveranderlijke kenmerk is ingesteld. Nadat ons bestand onveranderlijk is gemaakt, kan zelfs de rootgebruiker het niet hernoemen (mv), Verwijder het (rm), of voeg er gegevens aan toe.

sudo mv second-file.txt new-name.txt
sudo rm second-file.txt
sudo ls -l >> second-file.txt

Een onveranderlijk bestand dat bestand is tegen verandering

Vertrouw niet op veilig verwijderen op ext4

Zoals we hebben aangegeven, ondersteunen sommige besturingssystemen niet alle kenmerken. Het secure delete-kenmerk wordt niet gehonoreerd door de ext familie van bestandssystemen, waaronder: ext4. Vertrouw hier niet op voor het veilig verwijderen van bestanden.

Het is gemakkelijk om te zien dat dit niet werkt in ext4. We zetten de s (secure deletion) attribuut op een tekstbestand.

sudo chattr +s third-file.txt

Het kenmerk voor veilig verwijderen instellen op een tekstbestand

Wat we gaan doen is de inode vinden die de metadata over dit bestand bevat. De inode bevat het eerste blok van de harde schijf dat door het bestand wordt ingenomen. Het bestand bevat enkele lorem ipsum Placeholder tekst.

We lezen dat blok rechtstreeks van de harde schijf om te controleren of we de juiste locatie van de harde schijf lezen. We verwijderen het bestand en lezen dan datzelfde harde duikblok nog een keer. Als het kenmerk voor veilige verwijdering wordt nageleefd, moeten we bytes met nulwaarde lezen.

We kunnen de inode van het bestand vinden met behulp van de hdparm commando met de --fibmap (bestandsblokkaart) optie.

sudo hdparm --fibmap third-file.txt

De inode van een bestand vinden

Het eerste blok van de harde schijf is 18100656. We gebruiken de dd opdracht om het te lezen.

De opties zijn:

  • if=/dev/sda: lezen vanaf de eerste harde schijf op deze computer.
  • bs=512: Gebruik een blokgrootte van de harde schijf van 512 bytes.
  • overslaan = 18100656: Sla alle blokken voor blok 18100656 over. Met andere woorden, begin met lezen bij blok 18100656.
  • tellen = 1: één gegevensblok lezen.
sudo dd if=/dev/sda bs=512 skip=18100656 count=1

Het eerste blok op de harde schijf van een bestand lezen

Zoals verwacht zien we de lorem ipsum Placeholder tekst. We lezen het juiste blok op de harde schijf.

Nu zullen we het bestand verwijderen.

rm third-file.txt

Als we datzelfde blok van de harde schijf lezen, kunnen we de gegevens nog steeds zien.

sudo dd if=/dev/sda bs=512 skip=18100656 count=1

De gegevens lezen van een blok op de harde schijf dat wordt gebruikt door een verwijderd bestand

Nogmaals, vertrouw hier niet op voor veilige verwijdering op ext4.Er zijn betere methoden beschikbaar om bestanden te verwijderen, zodat ze niet kunnen worden hersteld.

Nuttig, maar gebruik met voorzichtigheid

Door de kenmerken van bestanden in te stellen, kunnen ze ongevoelig worden voor onopzettelijke rampen. Als u een bestand niet kunt verwijderen of overschrijven, is het redelijk veilig.

Je zou kunnen denken dat je ze op systeembestanden wilt toepassen en je Linux-installatie veiliger wilt maken. Maar systeembestanden moeten periodiek worden vervangen als er updates worden uitgegeven of upgrades worden toegepast. Om die reden is het het veiligst om deze attributen alleen te gebruiken voor bestanden die je zelf hebt gemaakt.

Nieuwste artikelen

Gerelateerde artikelen