Soubory mohou mít také atributy, které jsou vyjádřeny jiným způsobem než oprávnění, která jsme dosud viděli. Příkladem toho je vytvoření neměnného souboru (vymyšlené slovo, což znamená, že jej nelze změnit). Neměnný soubor má stále normální vlastnictví a oprávnění skupiny a RWX, ale nedovolí uživateli jej změnit, i když obsahuje oprávnění k zápisu. Další charakteristikou je, že soubor nelze přejmenovat.
V tomto příspěvku budeme diskutovat o tom, jak pomocí příkazu chattr změnit atributy souborů v Linuxu a učinit důležité soubory neměnnými. chattr znamená změnit atribut. příkaz chattr je velmi užitečný nástroj v Linuxu a používá se ke změně atributů souborů. Immutable znamená, že jakmile nastavím atribut pro nějaký soubor pomocí příkazu chattr, nebudete moci přesunout soubor, odstranit soubor, vytvořit odkaz na soubor nebo upravit soubor, i když k tomuto souboru máte plný přístup. uživatel root také nemůže v tomto souboru provádět žádné změny, dokud není atribut použit. můžete použít příkaz chattr k nastavení a zrušení nastavení atributů souboru. uživatel root má přístup pouze k nastavení nebo zrušení atributů souborů a adresářů pomocí příkazu chattr.
Pojďme se tedy podívat na některé příklady příkazu chattr pro změnu atributů souboru:
Nastavit atribut „i“ souboru
Předpokládejme, že mám soubor s názvem geek.txt, který je přístupný všem, což znamená, že každý uživatel může tento soubor smazat, přesunout nebo upravit. Viz výstup níže.
# ls -l geek.txt -rwxrwxrwx. 1 root root 0 Apr 24 03:59 geek.txt # Everyone has full access to "geek.txt"
# rm geek.txt # I am able to delete the file rm: remove regular empty file `geek.txt'? y
Nyní nastavíme atribut na soubor geek.txt pomocí příkazu chattr. Pro nastavení atributu musíme použít znaménko „+“ a pro zrušení nastavení atributu musíme použít znaménko „–“.
# chattr +i geek.txt # Setting Attribute to a file
Kde,
i – Znamená Immutable.
Můžete také použít -V možnost zkontrolovat podrobný výstup při nastavování atributu souboru.
# chattr -V +i geek.txt # Setting attribute to a file with -V chattr 1.41.12 (17-May-2010) Flags of geek.txt set as ----i--------e-
Nastavíme tedy atribut souboru geek.txt. Chcete-li totéž potvrdit, můžete použít příkaz lsattr. Podívejte se na ukázkový výstup níže. V sekci oprávnění v souboru si všimnete i (zvýrazněno červenou barvou).
# lsattr geek.txt # confirm if attribute set or not ----i--------e- geek.txt
Nyní zkusme odebrat, smazat, přesunout a změnit oprávnění souboru a jsem si jistý, že nic z toho udělat nemůžete.
1. Odeberte soubor:
# rm geek.txt # Removing the File rm: remove regular empty file `geek.txt'? y rm: cannot remove `geek.txt': Operation not permitted
# You can also try to remove the file forcefully. # rm -rf geek.txt # Removing the file forcefully rm: cannot remove `geek.txt': Operation not permitted
2. Přesuňte soubor:
# mv geek.txt test.txt # Move the file mv: cannot move `geek.txt' to `test.txt': Operation not permitted
3. Upravte soubor:
# cat >> geek.txt bash: geek.txt: Permission denied
4. Změňte oprávnění souboru:
# chmod 755 geek.txt chmod: changing permissions of `geek.txt': Operation not permitted
Jak můžete vidět na všech výše uvedených příkladech, nemůžeme v tomto souboru provádět žádné změny.
Odstranění atributu -i (neměnný) ze souborů
Pro odstranění atributu „i“ použijte níže uvedený příkaz.
# chattr -i geek.txt # Unset "i" attribute
Po odebrání atributu uvidíte, že sekce oprávnění bude prázdná.
# lsattr geek.txt --------------- geek.txt
Změna adresáře pomocí chattr
Nyní se pokusíme zabezpečit adresář rekurzivní změnou jeho atributu pomocí příkazu chattr. Zde mám adresář s názvem data a každý má k tomuto adresáři rekurzivně plný přístup. Viz ukázkový výstup níže.
# mkdir data # chmod -R 777 data/ # ls -l total 4 drwxrwxrwx. 2 root root 4096 Apr 24 04:25 data
Nyní nastavte atribut tomuto adresáři.
# chattr +i data/ # lsattr ----i--------e- ./data
Můžete také nastavit atribut Rekurzivně pomocí volby -R s chattr.
# chattr -R +i data/
Po nastavení atributu na adresář se nyní pokuste smazat, přesunout nebo vytvořit soubor, jsem si jistý, že vám nic z toho nebude povoleno. Viz ukázkový výstup níže.
# rmdir data/ # Deleting the Directory rmdir: failed to remove `data/': Operation not permitted
# rm -rf data/ # Deletiing the Directory Forcefully rm: cannot remove `data': Operation not permitted
# mv data/ mydata # Moving the Directory mv: cannot move `data/' to `mydata': Operation not permitted
# cd data/ # cat > test.txt # Creating a File in the directory bash: test.txt: Permission denied
Kde vlastně můžeme použít příkaz chattr?
Vezměme si příklad:Jako správce Linuxu zjevně nechcete, aby kdokoli přistupoval k vašim konfiguračním souborům, prováděl změny v jakýchkoli souborech nebo odstraňoval jakékoli konfigurační soubory nebo je jakkoli zneužíval. Je vaší odpovědností zajistit, aby byla zabezpečena a chráněna před neoprávněnou rukou, která nemá oprávnění k přístupu k ní. Všechny naše konfigurační věci můžeme zabezpečit pomocí příkazu chattr.
V Linuxu jsou všechny konfigurační soubory uloženy v adresáři /etc. Pokud nastavíme atribut na adresář /etc, nikdo nebude mít přístup k žádné z vašich konfigurací. Tak pojďme na to.
# chattr +i /etc/ # Setting attribute to /etc directory
Nyní se pokusíme udělat nějaké úkoly:
Příklady:1 Vytvoření skupiny
# groupadd g5 groupadd: cannot lock /etc/group; try again later.
Příklad:2 Nastavení hesla pro libovolného uživatele
# passwd michelle Changing password for user michelle. New password: Retype new password: passwd: Authentication token manipulation error
Příklad:3 Vytvořte nového uživatele
# useradd thegeekdiary useradd: cannot lock /etc/passwd; try again later.
Jak můžete vidět výše, nemůžeme provádět některé úkoly, jako je vytvoření nového uživatele, nastavení hesla pro libovolného uživatele, vytvoření nové skupiny. nemůžeme dělat všechny tyto úkoly, protože když vytvoříme nového uživatele nebo nastavíme heslo pro kteréhokoli uživatele, aktualizuje soubor /etc/passwd a /etc/shadow, což zde není možné, protože nastavujeme atribut pro úplný adresář /etc.
Poznámka :Zde jsem nastavil atributy pro úplný adresář /etc, abych vám to vysvětlil jako příklad. Ale můžete nastavit atributy souborů podle vašich potřeb, například pokud chcete pouze ovládat správu uživatelů a skupin, pak nemusíte nastavovat atribut pro úplný adresář /etc, můžete nastavit pouze pro /etc/passwd a /etc/shadow a pro skupiny nastavte atribut pro /etc/group. Pokud chcete ovládat tabulku souborového systému, nastavte atribut pro /etc/fstab a tak dále.Nyní si vezmeme další příklad a odpojíme souborový systém. Viz ukázkový výstup níže.
Příklad:4 Odpojte systém souborů
# umount /media/ # Unmounting a File System can't create lock file /etc/mtab~2762: Permission denied (use -n flag to override)
Také nejsme schopni odpojit souborový systém. Abychom mohli provést všechny výše uvedené úkoly, musíme zrušit nastavení atributů, které jsme použili pro adresář /etc.
Zrušte nastavení atributu pomocí příkazu chattr
Atribut můžeme zrušit pomocí příkazu chattr s volbou -i.
# chattr -Vi /etc/ # Removing Attributes from directory chattr 1.41.12 (17-May-2010) Flags of /etc/ set as ----------I--e-
Povolit připojení souboru pomocí příkazu chattr
Souboru můžete povolit připojení dat pomocí příkazu chattr s volbou +a. Použitím tohoto atributu máte povoleno pouze zapisovat data do tohoto souboru a nesmíte je mazat a přesouvat.
Zde povoluji uživatelům přidávat data do souboru geekdiary.txt.
# chattr +a thegeekdiary.txt # Setting +a Attribute
Pro kontrolu použitého atributu použijte níže uvedený příkaz. Všimnete si sekce povolení.
# lsattr thegeekdiary.txt -----a-------e- thegeekdiary.txt
Jak můžete vidět níže, můžeme vidět obsah souboru.
# cat thegeekdiary.txt Welcome to thegeekdiary.com
Nyní se pokusíme do souboru připojit nějaká data.
# cat >> thegeekdiary.txt # Writing some data Here you will get Linux Tutorials
# Nyní totéž potvrďte pomocí příkazu cat
# cat thegeekdiary.txt Welcome to thegeekdiary.com Here you will get Linux Tutorials
Takže můžeme úspěšně připojit data do souboru geekdiary.txt. Nyní se pokusíme soubor smazat.
# rm thegeekdiary.txt # Deleting the File rm: remove regular file `thegeekdiary.txt'? y rm: cannot remove `thegeekdiary.txt': Operation not permitted
# rm -rf thegeekdiary.txt # Deleting the File Forcefully rm: cannot remove `thegeekdiary.txt': Operation not permitted
Pro více informací souvisejících s příkazem chattr můžete použít níže uvedené příkazy na vašem linuxovém systému.
# man chattr # man lsattr
Podívejte se na některé užitečné možnosti příkazu chattr:
- +i – Soubor s atributem +i nelze odstranit, přesunout, přejmenovat. zkrátka nelze upravit.
- -i – Tato možnost umožňuje odstranit atribut i ze souboru.
- -V – Chcete-li zobrazit podrobný výstup
- -a – Použití tohoto atributu umožní pouze připojit data k souboru a nelze je odstranit ani přesunout.