====== 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 [[wp>cs:Open_source|open source licencí]] kterou, jak známo používají systémy[[wp>cs:Linux|GNU/Linux]]. Jiné, související dogma zní: "Každý soubor někomu patří". Pojďme si to trochu vysvětlit. ===== Co všechno je soubor ===== [[wp>cs: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á [[soubory_a_adresare#file|utilita file]] pomůže zjistit o jaký druh souboru se jedná. [[soubory_a_adresare#ls|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ář: [[:system:prikazovy_radek#konzole|{{wiki:icons:konzole.png?40 |Konzole}}]] 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|root]] nebo vlastník souboru. \\ * Pro nastavení práv použijte [[#prikaz_chmod_s_ciselnou_strukturou|příkaz chmod]]. * Pro změnu majitele, nebo skupiny použijte [[#prikaz_chown|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: [[:system:prikazovy_radek#konzole|{{wiki:icons:konzole.png?40 |Konzole}}]] chmod [MAJITEL, SKUPINA nebo OSTATNÍ] soubor tedy vyjádřeno číselně: [[:system:prikazovy_radek#konzole|{{wiki:icons:konzole.png?40 |Konzole}}]] 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í: [[:system:prikazovy_radek#konzole|{{wiki:icons:konzole.png?40 |Konzole}}]] 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: [[:system:prikazovy_radek#konzole|{{wiki:icons:konzole.png?40 |Konzole}}]] chmod -R 751 adresář Další příklad: [[:system:prikazovy_radek#konzole|{{wiki:icons:konzole.png?40 |Konzole}}]] 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: [[:system:prikazovy_radek#konzole|{{wiki:icons:konzole.png?40 |Konzole}}]] chmod 740 obrazek.jpg Jiný způsob by byl : [[:system:prikazovy_radek#konzole|{{wiki:icons:konzole.png?40 |Konzole}}]] 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''. [[:system:prikazovy_radek#konzole|{{wiki:icons:konzole.png?40 |Konzole}}]] 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í. [[:system:prikazovy_radek#konzole|{{wiki:icons:konzole.png?40 |Konzole}}]] 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''. [[:system:prikazovy_radek#konzole|{{wiki:icons:konzole.png?40 |Konzole}}]] 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|root]] můžete změnit i vlastnictví souboru (potažmo adresáře). Syntaxe je jednoduchá: [[:system:prikazovy_radek#konzole|{{wiki:icons:konzole.png?40 |Konzole}}]] chown uživatel:skupina soubor pro adresáře ovšen rekruzivně, aby i obsah adresáře měl stejné majitele: [[:system:prikazovy_radek#konzole|{{wiki:icons:konzole.png?40 |Konzole}}]] 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'' [[:system:prikazovy_radek#konzole|{{wiki:icons:konzole.png?40 |Konzole}}]] 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| ===== Odkazy ===== http://www.manpagez.com/man/1/chmod \\ http://www.manpagez.com/man/8/chown