Wyszukiwanie w witrynie

5 poleceń „chattr”, które sprawiają, że ważne pliki są NIEZMIENNE (niezmienne) w systemie Linux


chattr (Zmień atrybut) to narzędzie wiersza poleceń dla systemu Linux, które służy do ustawiania/usuwania określonych atrybutów pliku w systemie Linux w celu zabezpieczenia przypadkowego usunięcia lub modyfikacji ważnych plików i folderów, nawet jeśli jesteś zalogowany jako użytkownik root.

W natywnych systemach plików Linuksa, tj. ext2, ext3, ext4, btrfs itp. obsługują wszystkie flagi, chociaż nie wszystkie flagi będą obsługiwane dla wszystkich nienatywnych systemów plików. Nie można usunąć ani zmodyfikować pliku/folderu po ustawieniu atrybutów za pomocą polecenia chattr, nawet jeśli ma się do niego pełne uprawnienia.

Jest to bardzo przydatne do ustawiania atrybutów w plikach systemowych, takich jak pliki passwd i pliki cieni, w których znajdują się informacje o użytkowniku.

Składnia chattr
chattr [operator] [flags] [filename]
Atrybuty i flagi

Poniżej znajduje się lista typowych atrybutów i powiązanych flag, które można ustawić/wyłączyć za pomocą komendy chattr.

  1. Jeśli dostęp do pliku ma ustawiony atrybut „A”, jego rekord czasu nie jest aktualizowany.
  2. Jeśli plik zostanie zmodyfikowany z ustawionym atrybutem „S”, zmiany będą aktualizowane synchronicznie na dysku.
  3. Plik ma ustawiony atrybut „a”, można go otworzyć wyłącznie w trybie dopisywania w celu zapisu.
  4. Plik ma ustawiony atrybut „i”, nie można go modyfikować (nie można go zmienić). Oznacza brak zmiany nazwy, brak tworzenia dowiązań symbolicznych, brak wykonywania, brak możliwości zapisu, tylko superużytkownik może usunąć atrybut.
  5. Ustawiony jest plik z atrybutem „j”, a wszystkie jego informacje są aktualizowane w dzienniku ext3 przed aktualizacją do samego pliku.
  6. Plik ma ustawiony atrybut „t”, bez łączenia końcówek.
  7. Plik z atrybutem „d” nie będzie już kandydatem do utworzenia kopii zapasowej po uruchomieniu procesu zrzutu.
  8. Kiedy plik ma atrybut „u”, jego dane zostają zapisane. Dzięki temu użytkownik może poprosić o przywrócenie jego usunięcia.
Operator
  1. + : Dodaje atrybut do istniejącego atrybutu plików.
  2. : usuwa atrybut istniejącego atrybutu plików.
  3. = : Zachowaj istniejące atrybuty plików.

Tutaj zademonstrujemy niektóre przykłady poleceń chattr służących do ustawiania/wycofywania atrybutów pliku i folderów.

1. Jak dodać atrybuty do plików, aby zabezpieczyć je przed usunięciem

W celach demonstracyjnych użyliśmy odpowiednio folderu demo i pliku important_file.conf. Przed skonfigurowaniem atrybutów upewnij się, że istniejące pliki mają ustawione atrybuty za pomocą polecenia „ls -l”. Widziałeś wyniki? Obecnie nie ustawiono żadnego atrybutu.

[root@tecmint tecmint]# ls -l
total 0
drwxr-xr-x. 2 root root 6 Aug 31 18:02 demo
-rwxrwxrwx. 1 root root 0 Aug 31 17:42 important_file.conf

Do ustawienia atrybutu używamy znaku +, a do jego wyłączenia używamy znaku w komendzie chattr. Ustawmy więc niezmienny bit na plikach za pomocą flag +i, aby uniemożliwić komukolwiek usunięcie pliku, nawet użytkownik root nie ma uprawnień do jego usunięcia.

[root@tecmint tecmint]# chattr +i demo/
[root@tecmint tecmint]# chattr +i important_file.conf

Uwaga: Niezmienny bit +i może ustawić tylko użytkownik superużytkownik (tj. root) lub użytkownik z uprawnieniami sudo może to ustawić .

Po ustawieniu bitu niezmiennego zweryfikujmy atrybut poleceniem „lsattr”.

[root@tecmint tecmint]# lsattr
----i----------- ./demo
----i----------- ./important_file.conf

Teraz próbowałem usunąć na siłę, zmienić nazwę lub zmienić uprawnienia, ale nie jest to dozwolone, pojawia się komunikat „Operacja niedozwolona”.

[root@tecmint tecmint]# rm -rf demo/
rm: cannot remove âdemo/â: Operation not permitted
[root@tecmint tecmint]# mv demo/ demo_alter
mv: cannot move âdemo/â to âdemo_alterâ: Operation not permitted
[root@tecmint tecmint]# chmod 755 important_file.conf
chmod: changing permissions of âimportant_file.confâ: Operation not permitted

2. Jak wyłączyć atrybut plików

W powyższym przykładzie widzieliśmy, jak ustawić atrybut, aby zabezpieczyć i zapobiec przypadkowemu usunięciu plików, tutaj w tym przykładzie zobaczymy, jak zresetować (cofnąć atrybut) uprawnienia i umożliwić zmianę lub zmianę plików za pomocą -i flaga.

[root@tecmint tecmint]# chattr -i demo/ important_file.conf

Po zresetowaniu uprawnień sprawdź niezmienny status plików za pomocą polecenia „lsattr”.

[root@tecmint tecmint]# lsattr
---------------- ./demo
---------------- ./important_file.conf

W powyższych wynikach widać, że flaga „-i” została usunięta, co oznacza, że możesz bezpiecznie usunąć wszystkie pliki i foldery znajdujące się w folderze tecmint.

[root@tecmint tecmint]# rm -rf *

[root@tecmint tecmint]# ls -l
total 0

3. Jak zabezpieczyć pliki /etc/passwd i /etc/shadow

Ustawienie niezmiennego atrybutu plików /etc/passwd lub /etc/shadow zabezpieczy je przed przypadkowym usunięciem lub manipulacją, a także uniemożliwi tworzenie konta użytkownika.

[root@tecmint tecmint]# chattr +i /etc/passwd
[root@tecmint tecmint]# chattr +i /etc/shadow

Teraz spróbuj utworzyć nowego użytkownika systemu, pojawi się komunikat o błędzie „nie można otworzyć /etc/passwd”.

[root@tecmint tecmint]# useradd tecmint
useradd: cannot open /etc/passwd

W ten sposób możesz ustawić niezmienne uprawnienia do ważnych plików lub plików konfiguracyjnych systemu, aby zapobiec ich usunięciu.

4. Dołącz dane bez modyfikowania istniejących danych w pliku

Załóżmy, że chcesz tylko zezwolić wszystkim na dodawanie danych do pliku bez zmiany lub modyfikacji już wprowadzonych danych. Możesz użyć atrybutu „a” w następujący sposób.

[root@tecmint tecmint]# chattr +a example.txt

[root@tecmint tecmint]# lsattr example.txt
-----a---------- example.txt

Po ustawieniu trybu dopisywania plik można otworzyć w celu zapisu danych wyłącznie w trybie dopisywania. Możesz usunąć ustawienie atrybutu dołączania w następujący sposób.

[root@tecmint tecmint]# chattr -a example.txt

Teraz spróbuj zastąpić już istniejącą zawartość pliku example.txt, pojawi się komunikat o błędzie „Operacja niedozwolona”.

[root@tecmint tecmint]# echo "replace contain on file." > example.txt
-bash: example.txt: Operation not permitted

Teraz spróbuj dodać nową treść do istniejącego pliku example.txt i sprawdź to.

[root@tecmint tecmint]# echo "replace contain on file." >> example.txt
[root@tecmint tecmint]# cat example.txt
Here is the example to test 'a' attribute mean append only.
replace contain on file.

5. Jak zabezpieczyć katalogi

Aby zabezpieczyć cały katalog i jego pliki używamy przełącznika „-R” (rekurencyjnie) z flagą „+i” wraz z pełną ścieżką do folderu.

[root@tecmint tecmint]# chattr -R +i myfolder

Po ustawieniu atrybutu rekursywnie spróbuj usunąć folder i jego pliki.

[root@tecmint tecmint]# rm -rf myfolder/
rm: cannot remove 'myfolder/': Operation not permitted

Aby cofnąć uprawnienia, używamy tego samego przełącznika „-R” (rekurencyjnie) z flagą „-i” wraz z pełną ścieżką do folderu.

[root@tecmint tecmint]# chattr -R -i myfolder

Otóż to! Aby dowiedzieć się więcej o atrybutach poleceń chattr, flagach i opcjach, skorzystaj ze stron podręcznika.