GNU/Linux >> Znalost Linux >  >> Linux

Příklady příkazů chattr pro změnu atributů souboru (učinit soubory neměnnými)

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.


Linux
  1. 5 příkladů příkazů Wget ke stažení souborů v Linuxu.

  2. 5 příkladů dotykových příkazů Linuxu (jak změnit časové razítko souboru)

  3. 10 příkladů příkazů Cat pro správu souborů v systému Linux / UNIX

  1. 7 Příklady příkazů Patch pro použití souborů oprav rozdílů v systému Linux

  2. V příkladech příkazů v Linuxu

  3. soubor Příklady příkazů v Linuxu

  1. Příkaz Chattr v Linuxu (Set Immutable Bit)

  2. příkaz chattr v Linuxu s příklady

  3. Příkaz mv v Linuxu:7 základních příkladů