Obsah
Soubory a vlastnická práva
Oprávnění přístupu k souborům a jejich vlastnictví (dále jen práva) je výrazný bezpečnostní prvek, používaný v linuxových systémech. Otřepaná fráze z linuxového světa zní: „Všechno je soubor“, což úzce souvisí s open source licencí kterou, jak známo používají systémyGNU/Linux. Jiné, související dogma zní: „Každý soubor někomu patří“. Pojďme si to trochu vysvětlit.
Co všechno je soubor
Soubor může být fotografie z dovolené, ale i text, určující, jak jste připojeni na internet. Je tedy pochopitelné, práva k takto rozdílným souborům nebudou stejná. Nehledejte rozlišování pomocí přípon (jako třeba *.exe
pro spustitelné soubory),v linuxu je to jinak… Možná je to složitější, ale o to přesnější.
Zjištění práv a vlastnictví
Systémová utilita file pomůže zjistit o jaký druh souboru se jedná. Příkaz ls pak umí vypsat soubory obsažené v adresáři i různými doplňujícími informacemi.
Jako příklad si necháme vypsat svůj domovský adresář:
ls -lA
výsledkem bude obsáhlý výpis, plný podobných řádků:
drwxr-xr-x 2 kaja masters 4096 2008-12-06 13:43 Documents/
Ptáte se, co to znamená? Směsice písmen a pomlček na začátku řádku určuje:
typ | práva vlastníka | práva skupiny | práva ostatních |
---|---|---|---|
d | rwx | r-x | r-x |
kdy typ může být:
soubor | znakové zařízení | blokové zařízení | adresář | link |
---|---|---|---|---|
- | c | b | d | l |
a práva jsou:
čtení | zápis | spouštění |
---|---|---|
r | w | x |
nebo alternativně číselně
čtení | zápis | spouštění |
---|---|---|
r | w | x |
4 | 2 | 1 |
další sloupce výpisu určují vlastníka, skupinu, velikost souboru, datum vytvoření a název.
Změna práv a vlastnictví
Pro změnu práv a vlastnictví může ve většině případů provádět jako root nebo vlastník souboru.
- Pro nastavení práv použijte příkaz chmod.
- Pro změnu majitele, nebo skupiny použijte příkaz chown
Příkaz chmod s číselnou strukturou
Nejsnažší změnou práv je použití oktálové (osmičkové) struktury: podle tabulky uložené výše je snadno pochopitelné, že každé písmeno určující práva má svojí číselnou alternativu. Z toho vychází oktálová syntaxe.
příklad:
chmod [MAJITEL, SKUPINA nebo OSTATNÍ] soubor
tedy vyjádřeno číselně:
chmod 751 soubor
znamená: MAJITEL 4+2+1
, SKUPINA 4+1
, OSTATNÍ UŽIVATELÉ
, NEČLENI SKUPINY 1
.
Číselná hodnota: | Popis práva: |
0 | - žádná práva |
1 | - právo spouštění |
2 | - právo zápisu |
3 | - právo spouštění a zápisu |
4 | - právo právo čtení |
5 | - právo spouštění a čtení |
6 | - právo čtení a zápisu |
7 | - právo spouštění, zápisu a čtení |
Příkaz chmod se znakovou strukturou
Složitější ale s více možnostmi. V prvé řadě je třeba vypsat komu jsou práva měněna:
u | g | o | a |
---|---|---|---|
user | group | others | all |
vlastník | skupina | ostatní | všichni |
a jakým způsobem jsou měněna:
+ | - | = |
---|---|---|
přidat | odebrat | je rovno |
takže stejná práva jako v předchozím případě nastavíme pomocí:
chmod u=rwx,g=rx,o=x soubor
- chmod a adresáře
Podobné je to s právy u adresářů . chmod
lze použít i rekurzivně, tzn. že nastaví práva i v podřízených souborech a adresářích. Slouží k tomu přepínač -R
, tedy:
chmod -R 751 adresář
Další příklad:
chmod ug=rwx,o=r obrazek.jpg
Výhoda tohoto zápisu je právě v operacích, které lze tímto způsobem s právy dělat. Viz. dále.
Jak přesně nastavit práva
Následující příklad nastaví pro soubor obrazek.jpg
práva tak, že uživatel může číst, zapisovat, spouštět; skupina může jen čtení; a ostatní nemohou soubor obrazek.jpg
ani číst:
chmod 740 obrazek.jpg
Jiný způsob by byl :
chmod u=rwx,g=r,o= obrazek.jpg
Jak přidávat práva
Např. potřebuji jen přidat právo zápisu pro skupinu do souboru obrazek.jpg
.
chmod g+w obrazek.jpg
Jiná práva zůstanou tak jak byly. Tedy u souboru obrazek.jpg
se nezmění žádná práva ani pro majitele souboru obrazek.jpg
, ani práva pro ostatní uživatele. Stejně tak se nezmění u skupiny práva čtení a spouštění. Toho nelze při tzv. osmičkovém zápisu dosáhnout.
Jak kopírovat práva.
Nebo zajímavá možnost kopírovat práva. Např. nastavit taková práva jaká má uživatel, aby měli stejná práva i ostatní.
chmod o=u obrazek.jpg
Jak kopírovat práva ze souboru.
Nebo možnost kopírovat práva z jiného souboru. Např. nastavit práva pro soubor obrazek.jpg
podle toho, jaká práva má soubor popisobrazku.txt
.
chmod -reference=popisobrazku.txt obrazek.jpg
Speciální atributy souborů
(použijte +
pro nastavení a -
pro odebrání práv)
Příkaz chown
Opět jako root můžete změnit i vlastnictví souboru (potažmo adresáře). Syntaxe je jednoduchá:
chown uživatel:skupina soubor
pro adresáře ovšen rekruzivně, aby i obsah adresáře měl stejné majitele:
chown -R uživatel:skupina adresář
jako příklad použijeme změnu majitele výše uvedeného adresáře z výstupu ls -lA
chown -R root:root /home/kaja/Dokuments
a kájovo dokumenty nejsou kájovo.
Příkaz chgrpm
chgrp group1 file1
změní skupinu souboru file1
chown user1:group1 file1
změní uživatele a skupinu souboru file1
Příkaz chattr
Příkaz: | Popis příkazu: |
chattr +a file1 | - nastaví souboru zápis pouze pro přidávání |
chattr +c file1 | - dovolí, aby byl soubor automaticky komprimován / dekomprimován jádrem systému |
chattr +d file1 | - nastaví soubor pro vynechání ze zálohování pomocí programu Dump |
chattr +i file1 | - nastaví soubor jako neměnný (nemůže být odstraněn, upraven, přejmenován a ani na něj není možné vytvořit odkaz) |
chattr +s file1 | - nastaví souboru bezpečné mazání |
chattr +S file1 | - nastaví zapsání změn souboru v synchronním módu pomocí sync |
chattr +u file1 | - nastaví souboru možnost být obnoven |
Příkaz lsattr
Příkaz: | Popis příkazu: |
lsattr | - zobrazí speciální atributy |