Atrybuty plików i katalogów
Wprowadzenie:
Poza standardowymi uprawnieniami (rwx), system Linux oferuje dodatkowe mechanizmy kontroli dostępu do plików i katalogów. Należą do nich pliki ukryte oraz rozszerzone atrybuty zarządzane poleceniem chattr.
1. Pliki ukryte w systemie Linux/Unix
Co to są pliki ukryte?
W systemach Unix/Linux plikami ukrytymi nazywamy pliki i katalogi, których nazwa zaczyna się od kropki (.). Są one domyślnie niewidoczne przy standardowym wywoływaniu ls. Pliki ukryte często zawierają konfiguracje użytkownika lub aplikacji.
Wyświetlanie plików ukrytych:
ls -a
Pokazuje wszystkie pliki, w tym ukryte.
ls -la
Szczegółowy widok ze wszystkimi plikami, w tym ukrytymi.
Przykłady typowych plików ukrytych:
.bashrc– konfiguracja powłoki bash.bash_profile– konfiguracja przy logowaniu.ssh/– katalog z kluczami SSH.gitignore– plik konfiguracyjny git.vimrc– konfiguracja edytora vim
Tworzenie ukrytego pliku:
touch .ukryty_plik.txt
Wystarczy, że nazwa zaczyna się od kropki.
2. Rozszerzone atrybuty plików – chattr
Co to są rozszerzone atrybuty?
Rozszerzone atrybuty to dodatkowe flagi kontrolujące zachowanie plików na poziomie systemu plików. Pozwalają one na bardziej precyzyjną kontrolę niż standardowe uprawnienia rwx. Są obsługiwane głównie w systemach plików ext2, ext3, ext4.
Komenda chattr – zmiana atrybutów:
chattr +i plik.txt
Ustawia atrybut niezmienności (immutable). Plik nie może być modyfikowany, usuwany, zmieniany ani przenoszony – nawet przez użytkownika root!
chattr -i plik.txt
Usuwa atrybut niezmienności.
3. Najważniejsze atrybuty chattr
Atrybut i (immutable – niezmienny):
chattr +i /etc/ważny_config.conf
Plik nie może być w żaden sposób modyfikowany. Przydatne do ochrony krytycznych plików konfiguracyjnych przed przypadkową zmianą.
Atrybut a (append only – tylko dopisywanie):
chattr +a /var/log/aplikacja.log
Plik może być tylko rozszerzany (dopisywanie na końcu), ale nie można modyfikować ani usuwać istniejącej zawartości. Idealne dla plików logów.
Atrybut c (compressed – kompresowany):
chattr +c duży_plik.txt
Jądro automatycznie kompresuje plik na dysku (jeśli system plików to obsługuje).
Atrybut d (no dump – pomijany w backup):
chattr +d cache.tmp
Plik jest pomijany przez narzędzie dump podczas tworzenia kopii zapasowej.
Atrybut s (secure deletion – bezpieczne usuwanie):
chattr +s tajny_dokument.txt
Przy usuwaniu pliku, jego bloki na dysku są nadpisywane zerami, co utrudnia odzyskanie danych.
Atrybut u (undeletable – możliwy do odzyskania):
chattr +u ważny_plik.txt
System zachowuje informacje pozwalające na odzyskanie pliku po usunięciu (jeśli system plików to wspiera).
4. Komenda lsattr – wyświetlanie atrybutów
lsattr plik.txt
Pokazuje aktualne atrybuty pliku.
lsattr -d katalog/
Pokazuje atrybuty samego katalogu (a nie jego zawartości).
lsattr -a
Pokazuje atrybuty wszystkich plików, w tym ukrytych.
Przykładowy wynik:
$ lsattr plik.txt
----i---------e----- plik.txt
Litera i oznacza atrybut immutable.
5. Rekurencyjna zmiana atrybutów
chattr -R +i /etc/config/
Opcja -R (recursive) stosuje atrybut do wszystkich plików i podkatalogów.
6. Praktyczne przykłady zastosowań
# Ochrona pliku konfiguracyjnego przed modyfikacją
sudo chattr +i /etc/ssh/sshd_config
# Teraz nawet root nie może go zmienić bez usunięcia atrybutu
# Sprawdzenie atrybutów
lsattr /etc/ssh/sshd_config
# Aby móc edytować, trzeba najpierw usunąć atrybut
sudo chattr -i /etc/ssh/sshd_config
# Zabezpieczenie pliku logów – tylko dopisywanie
sudo chattr +a /var/log/aplikacja.log
# Ochrona całego katalogu przed usunięciem
sudo chattr -R +i /opt/produkcja/
# Weryfikacja atrybutów wszystkich plików w katalogu
lsattr -a /home/user/
7. Ważne uwagi
- Rozszerzone atrybuty działają na poziomie systemu plików – nie wszystkie systemy plików je obsługują
- Tylko użytkownik root może zmieniać większość atrybutów
- Atrybuty są niezależne od standardowych uprawnień Unix (rwx)
- Podczas przenoszenia plików między systemami atrybuty mogą zostać utracone
- Warto dokumentować użycie atrybutów, aby inni administratorzy wiedzieli o ich zastosowaniu