Są pewne atrybuty, które można przypisać plikom i katalogom aby kontrolować jakie operacje mogą lub nie mogą być wykonane na tych plikach i katalogach. Przykładowo można przypisać plikowi atrybut, który spowoduje, że żaden użytkownik łącznie z rootem nie może skasować, zmodyfikować tego pliku, zmienić jego nazwy czy skompresować go. Takie atrybuty mogą być ustawione na plikach i katalogach w systemie plików ext3, ext4 lub xfs.
Atrybut | Działanie |
a (append) | Do pliku można tylko dopisać dane. |
A | Zapobiega aktualizacji czasu dostępu do pliku. |
c (compressed) | Plik jest automatycznie kompresowany na dysku. |
D | Zmiany katalogu są zapisywane synchronicznie na dysku. |
e (extend format) | Plik używa extentów do mapowania bloków na dysku. |
i (immutable) | Plik nie może być zmieniony, skasowany, nie może być zmieniona jego nazwa. |
S (synchronous) | Zmiany pliku są zapisywane synchronicznie na dysku. |
Są dwie komendy do zarządzania atrybutami:
# lsatrr
– wyświetla atrybutu pliku lub katalogu.
# chattr
– ustawia atrybutu pliku lub katalogu.
Aby wyświetlić aktualne atrybuty pliku file1:
1 2 |
# lsattr file1 ---------------- file1 |
Wyjście wskazuje na to, że nie są ustawione żadne atrybuty na pliku. Aby pozwolić tylko na dodawanie danych do pliku (append) używamy komendy chattr
:
1 2 3 |
# chattr +a file1 # lsattr file1 -----a---------- file1 |
Spróbujmy teraz wpisać zawartość pliku /etc/fstab
do pliku file1:
1 2 |
# cat /etc/fstab > file1 -bash: file1: Operation not permitted |
Jeżeli natomiast spróbujemy tylko dodać coś do pliku file1 to zakończy się to powodzeniem:
1 |
# cat /etc/fstab >> file1 |
Dodajmy teraz flagę niezmienności (immutable) do tego pliku aby zabezpieczyć go przed wykasowaniem lub modyfikacją:
1 2 3 |
# chattr +i file1 # lsattr file1 ----ia---------- file1 |
Jeżeli teraz spróbujemy go wykasować otrzymamy:
1 2 3 |
# rm file1 rm: remove regular file `file1'? y rm: cannot remove ‘file1’: Operation not permitted |
By usunąć oba atrybuty:
1 |
# chattr –ia file1 |