Jak fungují oprávnění souborů Linux?
Pokud používáte Linux nějakou dobu (a dokonce i OS X), pravděpodobně jste narazili na chybu "oprávnění". Ale co přesně jsou a proč jsou nezbytné nebo užitečné? Vezměme si vnitřní pohled.
Povolení uživatele
Počítače byly v dnešní době masivní stroje, které byly neuvěřitelně drahé. Aby bylo co nejvíce využíváno, byly připojeny více počítačových terminálů, které umožnily mnoha uživatelům pracovat současně. Zpracování a ukládání dat probíhalo na stroji, zatímco samotné terminály představovaly jen málo víc než prostředek pro prohlížení a zadávání dat. Pokud o tom přemýšlíte, je to v podstatě způsob, jakým přistupujeme k datům o "oblaku"; podívejte se na systém MP3, Gmail a Dropbox systému Amazon Cloud, a všimnete si, že i když lze provést změny místně, vše je uloženo na dálku.
(Obrázek: Zenith Z-19 "hloupý" terminál, úvěr: ajmexico)
Aby to fungovalo, potřebují mít jednotliví uživatelé účty. Musí mít k dispozici část úložného prostoru a musí jim být povoleno spouštět příkazy a programy. Každý dostane specifická "oprávnění uživatelů", která diktuje, co mohou a nemůže dělat, kde v systému dělají a nemají přístup a jejichž soubory mohou a nemohou měnit. Každý uživatel je také umístěn do různých skupin, které udělují nebo omezují další přístup.
Přístup k souborům
V tomto neuspořádaném světě pro více uživatelů jsme již nastavili hranice toho, co mohou uživatelé dělat. Ale co s tím mají přístup? Každý soubor má soubor oprávnění a vlastníka. Označení vlastníka, obvykle vázané při vytváření souboru, deklaruje, do kterého uživatele patří a pouze ten uživatel může změnit přístupová oprávnění.
Ve světě Linuxu jsou oprávnění rozdělena do tří kategorií: čtení, psaní a spouštění. Přístup "Číst" umožňuje prohlížet obsah souboru, přístup "zapisovat" dovoluje změnu obsahu souboru a "spouštění" dovoluje spuštění souboru instrukcí, jako je skript nebo program. Každá z těchto kategorií se používá v různých třídách: uživatel, skupina a svět. "Uživatel" znamená vlastníka, "skupina" znamená jakéhokoli uživatele, který je ve stejné skupině jako vlastník, a "svět" znamená někoho a každého.
S těmito oprávněními mohou být také omezeny složky. Můžete například povolit jiným lidem ve vaší skupině, aby zobrazovali adresáře a soubory ve vaší domovské složce, ale nikdo jiný mimo vaši skupinu. Pravděpodobně budete chtít omezit přístup "psát" pouze na sebe, pokud nepracujete na sdíleném projektu nějakého druhu. Můžete také vytvořit sdílený adresář, který umožňuje komukoli zobrazit a upravovat soubory v této složce.
Změna oprávnění v Ubuntu
GUI
Chcete-li změnit oprávnění souboru, který vlastníte v Ubuntu, klikněte pravým tlačítkem myši na soubor a přejděte na položku Vlastnosti.
Můžete změnit, zda majitel, skupina nebo jiní mohou číst a psát, přečíst pouze nebo neudělat nic. Můžete také zaškrtnout políčko umožňující spuštění souboru a toto umožní pro majitele, skupinu a další současně.
Příkazový řádek
Můžete to také provést pomocí příkazového řádku. Přejděte do adresáře obsahujícího soubory a zadejte následující příkaz pro zobrazení všech souborů v seznamu:
ls -al
Vedle každého souboru a adresáře uvidíte zvláštní část, která načrtne oprávnění, která má. Vypadá to takto:
-rwxrw-r-
The r znamená "číst" w znamená "napsat" a " X znamená "spustit". Adresáře začínají "d" namísto "-". Také si všimnete, že je 10 míst, které mají hodnotu. Nejprve můžete ignorovat a pak jsou 3 sady 3. První sada je pro majitele, druhá sada pro skupinu a poslední sada pro svět.
Chcete-li změnit oprávnění souboru nebo adresáře, podívejme se na základní formu příkazu chmod.
chmod [class] [operátor] [oprávnění]
soubor chmod [ugoa] [+ nebo -] [rwx]
To se může zdát komplikované zpočátku, ale věřte mi, je to docela snadné. Nejprve se podívejme na třídy:
- u: Toto je pro majitele.
- g: Toto je pro skupinu.
- o: Toto je pro všechny ostatní.
- a: Změní se oprávnění pro všechny výše uvedené.
Dále operátoři:
- +: Značka plus přidá oprávnění, která následují.
- -: Znak mínus odstraní oprávnění, která následují.
Stále se mnou? A poslední část je stejná jako při kontrole oprávnění souboru:
- r: Umožňuje přístup ke čtení.
- w: Umožňuje přístup k zápisu.
- x: Umožňuje provedení.
Teď to pojďme dohromady. Řekněme, že máme soubor s názvem "todo.txt", který má následující oprávnění:
-rw-rw-r-
To znamená, že majitel a skupina mohou číst a psát a svět může jen číst. Chceme změnit oprávnění k těmto:
-rwxr-
To znamená, že majitel má plná oprávnění a skupina může číst. Můžeme to udělat ve třech krocích. Nejprve přidáme uživateli oprávnění k provádění.
chmod u + x todo.txt
Poté odstraníme oprávnění k zápisu pro skupinu.
chmod g-w todo.txt
Nakonec odstraníme oprávnění ke čtení pro všechny ostatní uživatele.
chmod o-r todo.txt
Můžeme je také kombinovat do jednoho příkazu, například:
chmod u + x, g-w, o-r todo.txt
Vidíte, že každá sekce je oddělena čárkami a nejsou mezery.
Zde jsou některá užitečná oprávnění:
- -rwxr-xr-x: Vlastník má plná oprávnění, skupina a ostatní uživatelé mohou číst obsah souboru a spustit.
- -rwxr-r-: Majitel má plná oprávnění, skupina a ostatní uživatelé mohou pouze číst soubor (užitečné, pokud nevadí ostatním prohlížení souborů.
- -rwx-: Majitel má plná oprávnění, všechny ostatní nemají (užitečné pro osobní skripty).
- -rw-rw--: Vlastník a skupina mohou číst a psát (užitečné pro spolupráci s členy skupiny).
- -rw-r-r-: Majitel může číst a psát, seskupovat a ostatní uživatelé mohou pouze číst soubor (užitečný pro ukládání osobních souborů na sdílené síti).
- -rw--: Majitel může číst a psát, ostatní nemají žádný (užitečné pro ukládání osobních souborů).
Existuje několik dalších věcí, které můžete dělat s chmodem - jako setuid a setgid - ale jsou trochu hloubkoví a většina uživatelů ve skutečnosti nebude potřebovat je používat.
Soubory kořenového nebo superuživatelského a systémového souboru
V současné době ne vždy běží systémy, které mají více uživatelů. Proč bychom se měli stále bát o oprávnění?
No, Unix a jeho deriváty - Linux, OS X, mimo jiné - také rozlišují mezi věcmi, které řídí uživatel, věci spravované administrátorem nebo administrátory a věci spravované samotným systémem. Takové věci, které jsou integrální pro systém, vyžadují administrátorská práva, která mají být změněna nebo přístupná. Tímto způsobem nic nehrozíte náhodou.
V Ubuntu můžete provádět změny v systémových souborech pomocí "sudo" nebo "gksudo", aby získali ekvivalent oprávnění administrátora. V ostatních distribucích se přepnete na "root" nebo "superuživatele", které efektivně dělají totéž, dokud se odhlásíte.
Uvědomte si, že v obou těchto případech může změna oprávnění k souborům vést k tomu, že programy nefungují, neúmyslně mění vlastnictví souborů na kořenového uživatele (namísto vlastníka) a zhoršuje bezpečnost systému (udělením dalších oprávnění). Jako takové doporučujeme neměnit oprávnění pro soubory - zejména systémové soubory - pokud to není nutné nebo víte, co děláte.
Soubory oprávnění jsou k dispozici, aby poskytly základní systém zabezpečení mezi uživateli. Učení, jak fungují, vám pomůže nastavit základní sdílení v prostředí pro více uživatelů, chránit "veřejné" soubory a poskytnout vám informace o tom, kdy se něco stane s vlastnictvím systému souborů.
Myslíte si, že můžete věci vysvětlit snadněji? Máte opravu? Chcete vzpomenout na staré dny? Udělejte si přestávku a vložte své myšlenky do komentářů.