Tips en Trucs 2020

Eigenschappen van bestanden aanpassen met chattr

Meestal wordt een Linux computer door verschillende gebruikers gebruikt. Daarbij hebben ze toegang tot gemeenschappelijke bestanden. Dit kan voor problemen zorgen door het per ongeluk wissen of aanpassen van belangrijke bestanden. En dit wil je als beheerder voorkomen. Gelukkig kunnen we gebruik maken van de chattr opdracht.

Met de chattr opdracht kan je de eigenschappen van een bestand naar wens aanpassen. Hieronder de beschrijving van de man pagina:
chattr

Schrijfbeveiligen

Eerst maken we een testbestand aan. Daarna beperken we de toegang tot alleen lezen.

dany@main:~> touch test.txt
dany@main:~> ls -alrt test.txt
-rw-r--r-- 1 dany users 0  8 feb 11:45 test.txt
dany@main:~> sudo chattr +i test.txt 
[sudo] wachtwoord voor root: 
dany@main:~> echo "Hallo" > test.txt 
bash: test.txt: Actie is niet toegestaan
dany@main:~> rm test.txt
rm: kan 'test.txt' niet verwijderen: Actie is niet toegestaan

Merk op dat je root rechten nodig hebt om de bestandseigenschappen met chattr aan te passen.

Schrijfbeveiliging opheffen

Om een bestand terug schrijfrechten te geven, gebruik je de -i optie:

dany@main:~> sudo chattr -i test.txt 
[sudo] wachtwoord voor root: 
dany@main:~> echo "Hallo" > test.txt 
dany@main:~> rm test.txt

Enkel toevoegen

Soms wil je niet alle schrijftoegang tot een bestand blokkeren, maar is het toegestaan gegevens toe te voegen. Dit kan met de +a optie:

dany@main:~> touch test.txt
dany@main:~> sudo chattr +a test.txt 
[sudo] wachtwoord voor root: 
dany@main:~> echo "Hallo" >> test.txt 
dany@main:~> echo "Hey" > test.txt 
bash: test.txt: Actie is niet toegestaan
dany@main:~> rm test.txt
rm: kan 'test.txt' niet verwijderen: Actie is niet toegestaan

Toevoegen is dus mogelijk, aanpassen en verwijderen niet. Het bestand geef je terug de normale schrijfrechten met de opdracht:

dany@main:~> sudo chattr -a test.txt

Een eigenschap op alle bestanden in een map aanpassen

Dit kan met de -R optie (Recursief) die eigenschap van de map en zijn inhoud aanpast. Om alle bestanden in de testmap alleen lezen te maken, gebruik je:

dany@main:~> mkdir testmap
dany@main:~> for bestand in test1.txt test2.txt test3.txt ; do cp test.txt testmap/"$bestand" ; done
dany@main:~> rm test.txt
dany@main:~> sudo chattr -R +i ./testmap/ 
[sudo] wachtwoord voor root:
dany@main:~> cd testmap/
dany@main:~/testmap> ls -lrt
totaal 12
-rw-r--r-- 1 dany users 6  8 feb 13:56 test1.txt
-rw-r--r-- 1 dany users 6  8 feb 13:56 test2.txt
-rw-r--r-- 1 dany users 6  8 feb 13:56 test3.txt
dany@main:~/testmap> rm test*
rm: kan 'test1.txt' niet verwijderen: Actie is niet toegestaan
rm: kan 'test2.txt' niet verwijderen: Actie is niet toegestaan
rm: kan 'test3.txt' niet verwijderen: Actie is niet toegestaan

De eigenschappen van bestanden opvragen

Tot nu hebben we de aangepaste bestandseigenschappen getest door er bewerkingen op uit te voeren. Maar je kan met de opdracht lsattr ook eerst de eigenschappen van bestanden opvragen:

dany@main:~/testmap> lsattr
----i---------e---- ./test3.txt
----i---------e---- ./test2.txt
----i---------e---- ./test1.txt
dany@main:~/testmap> sudo chattr -R -i ../testmap/
[sudo] wachtwoord voor root: 
dany@main:~/testmap> lsattr
--------------e---- ./test3.txt
--------------e---- ./test2.txt
--------------e---- ./test1.txt

De alleen lezen eigenschap werd verwijderd. Ruim op met de volgende opdrachten:

dany@main:~/testmap> cd
dany@main:~> rm -R testmap/

Samenvatting

Met chattr kan je bestandseigenschappen haarfijn en naar wens aanpassen. Een goed uitgedokterd gebruik is een verzekering tegen gebruikelijke ongelukken. Om de uitgebreide mogelijkheden te ontdekken, raadpleeg je best de man pagina van zowel chattr als het gebruikte bestandssysteem. Want het bestandssysteem moet de door chattr ingestelde eigenschappen wel ondersteunen.