Tips en Trucs 2016

Onveranderbare bestanden

Veronderstel dat je een belangrijk bestand wilt beschermen tegen het per vergissing verwijderen of aanpassen ervan. Of je wilt niet dat bestanden met instellingen door programma's worden overschreven. Het aanpassen van de eigenaar of/en de rechten van deze bestanden is een mogelijkheid om dit te bereiken. De rechten en de eigenaar van bestanden kan je manipuleren met de chmod en chown opdrachten. Deze oplossing vervalt vanaf het ogenblik dat je met root rechten werkt, met andere woorden met root rechten kan je altijd elke bewerking op elk bestand uitvoeren. De opdracht chattr kan dit oplossen.

chattr is een linux opdracht waarmee je bestandseigenschappen (buiten de standaard lees, schrijf en uitvoerrechten) kunt aanpassen. Het aanverwante lsattr geeft de geactiveerde eigenschappen van een bestand weer. De bestandseigenschappen beheert door chattr werden oorspronkelijk ondersteund door het EXT bestandssystemen (EXT2/3/4). De extra bestandseigenschappen zijn vandaag geïntegreerd in de meeste Linux bestandssystemen (zoals XFS, Btrfs, ReiserFS, enz.).

De chattr en lsattr opdrachten zijn een onderdeel van het e2fsprogs pakket dat in elke moderne Linux distributie standaard geïnstalleerd is.

De chattr opdracht gebruik je als volgt:

chattr [-RVf] [operator][attribute(s)] files...

De '+' bewerking (operator) activeert bestandseigenschappen (attributes), '-' deactiveert bestandseigenschappen, '=' beperkt de bestandseigenschappen tot de opgegeven eigenschappen.

Enkele veel gebruikte bestandseigenschappen:

De bestandseigenschap onveranderbaar

Om een bestand onveranderbaar (immutable) te maken, ga je als volgt te werk:

dany@laptop:~> echo "Deze tekst kan je niet aanpassen of verwijderen" > onveranderbaar.txt
dany@laptop:~> sudo chattr +i onveranderbaar.txt 
root's password:

Met de eerste opdracht maken een we een tekstbestand met wat tekst erin. De tweede opdracht zorgt dat je het bestand niet meer kunt veranderen. Merk op dat je om de bestandseigenschappen aan te passen root rechten nodig hebt (sudo). Met de volgende opdracht controleer je of het bestand onveranderbaar.txt de juiste bestandseigenschappen heeft gekregen:

dany@laptop:~> lsattr onveranderbaar.txt 
----i--------e-- onveranderbaar.txt

Als een bestand onveranderbaar is, kan het door geen enkele gebruiker aangepast worden. Zelfs de root gebruiker kan een onveranderbaar bestand niet aanpassen, verwijderen, overschrijven, verplaatsen of hernoemen. Om het bestand terug veranderbaar te maken, voer je de volgende opdracht uit:

dany@laptop:~> sudo chattr -i onveranderbaar.txt 
root's password:

chattr

Om een volledige map, inclusief zijn inhoud onveranderbaar te maken, gebruiken we recursiviteit (-R optie):

dany@laptop:~> sudo chattr -R -i onveranderbaar

Enkel toevoegen

Een andere handige bestandseigenschap is "append-only" waardoor een bestand enkel kan groeien. Je kunt bestanden met deze eigenschap niet overschrijven of verwijderen. Zo kan je voorkomen dat log bestanden per vergissing gewist worden. Een bestand wordt in de enkel toevoegen stand geplaatst met de volgende opdracht:

dany@laptop:~> sudo chattr +a /var/log/apache2/access_log

Bij het kopiëren van een onveranderbaar of enkel toevoegen bestand worden de bestandseigenschappen van het oorspronkelijke bestand niet doorgegeven aan de kopie.

Samenvatting

De opdrachten chattr en lsattr worden gebruikt om extra bestandseigenschappen te beheren. Zo kan je voorkomen dat er per ongeluk met een bestand wordt geknoeid. De opdracht chattr is geenszins een beveiliging, want je kunt op een eenvoudige manier de bestandseigenschappen aanpassen. Je kunt de extra bestandseigenschappen als beveiliging gebruiken, maar dan moet je het gebruik van de opdracht chattr aan banden leggen of de kernel functie CAP_LINUX_IMMUTABLE verwijderen. Raadpleeg de man pagina's voor verdere informatie over de chattr opdracht en de verschillende bestandseigenschappen.