Ako povolenia súboru Linux fungujú?
Ak už dlho používate Linux (a dokonca aj OS X), pravdepodobne ste narazili na chybu "oprávnenia". Ale čo presne sú a prečo sú potrebné alebo užitočné? Vezmime si vnútorný pohľad.
Povolenia používateľa
Späť v priebehu dňa boli počítače masívne stroje, ktoré boli neuveriteľne drahé. Aby sa z nich čo najviac využilo, boli pripojené viaceré počítačové terminály, ktoré umožnili mnohým používateľom súčasne pracovať s ich podnikaním. Spracovanie a ukladanie údajov bolo vykonané na stroji, zatiaľ čo samotné terminály boli len o niečo viac ako prostriedok na prezeranie a zadávanie údajov. Ak o tom premýšľate, je to v podstate prístup k údajom o "mraku"; pozrite sa na systém Amazon Cloud MP3, Gmail a Dropbox, a všimnete si, že hoci zmeny môžu byť vykonané lokálne, všetko je uložené na diaľku.
(Obrázok: Zenith Z-19 "dumb" terminál, kredit: ajmexico)
Aby to fungovalo, individuálni používatelia potrebujú mať účty. Musia mať časť úložného priestoru, ktorá je im pridelená, a musia im byť povolené spustiť príkazy a programy. Každý dostane špecifické "používateľské oprávnenia", ktoré diktujú, čo môžu a čo nemôžu robiť, kde v systéme robia a nemajú prístup a ktorých súbory môžu a nemôžu upravovať. Každý používateľ je tiež umiestnený do rôznych skupín, ktoré udeľujú alebo obmedzujú ďalší prístup.
Prístup k súborom
V tomto čudnom svete pre viacerých používateľov sme už nastavili hranice toho, čo môžu používatelia robiť. Ale čo s tým, na čo pristupujú? Každý súbor má súbor oprávnení a vlastníka. Označenie vlastníka, zvyčajne viazané pri vytváraní súboru, deklaruje, ku ktorému používateľovi patrí a iba ten používateľ môže zmeniť svoje prístupové povolenia.
Vo svete Linuxu sú povolenia rozdelené do troch kategórií: čítanie, zápis a spúšťanie. Prístup "Čítanie" umožňuje zobrazenie obsahu súboru, prístup "zápis" umožňuje upraviť obsah súboru a "spustiť" umožňuje spustiť súbor pokynov, ako skript alebo program. Každá z týchto kategórií sa aplikuje na rôzne triedy: používateľ, skupina a svet. "Používateľ" znamená vlastníka, "skupina" znamená akéhokoľvek používateľa, ktorý je v rovnakej skupine ako vlastník a "svet" znamená niekoho a každého.
Priečinky môžu byť obmedzené aj týmito oprávneniami. Môžete napríklad povoliť iným ľuďom vo vašej skupine, aby si mohli prezerať adresáre a súbory vo vašom domovskom priečinku, ale nikto mimo vašej skupiny. Budete pravdepodobne chcieť obmedziť prístup "písať" iba na seba, ak pracujete na nejakom zdieľanom projekte. Môžete tiež vytvoriť zdieľaný adresár, ktorý umožňuje komukoľvek zobraziť a upraviť súbory v tejto zložke.
Zmena oprávnení v Ubuntu
GUI
Ak chcete zmeniť povolenia súboru, ktorý vlastníte v Ubuntu, kliknite pravým tlačidlom na súbor a prejdite na položku Vlastnosti.
Môžete zmeniť, či majiteľ, skupina alebo iní môžu čítať a písať, čítať alebo robiť nič. Môžete tiež skontrolovať políčko umožňujúce spustenie súboru a toto umožní pre vlastníka, skupinu a iné súčasne.
Príkazový riadok
Môžete to urobiť aj prostredníctvom príkazového riadku. Prejdite do adresára, ktorý obsahuje súbory a zadajte nasledujúci príkaz na zobrazenie všetkých súborov v zozname:
ls -al
Vedľa každého súboru a adresára sa zobrazí špeciálna časť, ktorá načrtáva oprávnenia, ktoré má. Vyzerá to takto:
-rwxrw-r-
r znamená "čítať" w znamená "písať" a X znamená "vykonať". Adresáre sa začínajú "d" namiesto "-". Tiež si všimnete, že je tu 10 priestorov, ktoré majú hodnotu. Môžete ignorovať prvý a potom sú 3 sady 3. Prvá sada je pre majiteľa, druhá sada je pre skupinu a posledná sada je pre svet.
Ak chcete zmeniť povolenie súboru alebo adresára, pozrite sa na základnú formu príkazu chmod.
chmod [trieda] [operátor] [povolenie] súbor
súbor chmod [ugoa] [+ alebo -] [rwx]
Možno to na prvý pohľad môže zdať komplikované, ale verte mi, je to dosť jednoduché. Po prvé, pozrime sa na triedy:
- u: Toto je pre majiteľa.
- g: Toto je pre skupinu.
- o: Toto je pre všetkých ostatných.
- a: Toto zmení povolenia pre všetky vyššie uvedené.
Ďalej prevádzkovatelia:
- +: Značka plus pridá povolenia, ktoré nasledujú.
- -: Znak mínus odstráni oprávnenia, ktoré nasledujú.
Stále so mnou? A posledná časť je rovnaká ako pri kontrole oprávnení súboru:
- r: Umožňuje prístup na čítanie.
- w: Umožňuje prístup na zápis.
- x: Umožňuje vykonanie.
Teraz to spojíme. Povedzme, že máme súbor s názvom "todo.txt", ktorý má nasledujúce povolenia:
-rw-rw-r-
To znamená, že majiteľ a skupina môžu čítať a písať a svet môže len čítať. Chceme zmeniť tieto povolenia:
-rwxr-
To znamená, že vlastník má plné povolenia a skupina môže čítať. Môžeme to urobiť v troch krokoch. Najprv pridáme oprávnenie na vykonanie pre používateľa.
chmod u + x todo.txt
Potom odstránime oprávnenie na zápis pre skupinu.
chmod g-w todo.txt
Nakoniec odstránime oprávnenia na čítanie pre všetkých ostatných používateľov.
chmod o-r todo.txt
Tiež ich môžeme kombinovať do jedného príkazu, napríklad:
chmod u + x, g-w, o-r todo.txt
Môžete vidieť, že každá sekcia je oddelená čiarkami a nie sú žiadne medzery.
Tu sú niektoré užitočné povolenia:
- -rwxr-xr-x: Majiteľ má plné povolenia, skupina a ostatní používatelia môžu čítať obsah súboru a vykonávať.
- -rwxr-r-: Vlastník má plné povolenia, skupina a ostatní používatelia môžu iba čítať súbor (užitočné, ak vám nevadí ostatné prezeranie súborov.
- -rwx-: Vlastník má plné povolenia, všetky ostatné nemajú žiadne (užitočné pre osobné skripty).
- -rw-rw--: Vlastník a skupina môžu čítať a písať (užitočné pre spoluprácu s členmi skupiny).
- -rw-r-r-: Vlastník môže čítať a písať, zoskupovať a iní užívatelia môžu len čítať súbor (užitočné pre ukladanie osobných súborov v zdieľanej sieti).
- -rw--: Vlastník môže čítať a písať, všetky ostatné nemajú žiadny (užitočné pre ukladanie osobných súborov).
Existuje niekoľko ďalších vecí, ktoré môžete robiť s chmod - ako setuid a setgid - ale sú trochu in-hĺbka a väčšina používateľov ich skutočne nebude musieť použiť.
Súbory root alebo Super-User a System
V súčasnosti nie vždy používame systémy s viacerými používateľmi. Prečo by sme sa mali stále zaujímať o povolenia?
No, Unix a jeho deriváty - Linux, OS X, okrem iného - rozlišujú aj veci, ktoré spravuje používateľ, veci spravované administrátorom alebo administrátorskými privilégiami a veci, ktoré spravuje samotný systém. Takéto veci, ktoré sú integrálne pre systém, vyžadujú administrátorské práva na zmenu alebo prístup. Týmto spôsobom nič nepoškodíte.
V Ubuntu môžete vykonať zmeny v systémových súboroch pomocou "sudo" alebo "gksudo", aby získali ekvivalent oprávnení správcu. V ostatných rozdeleniach sa prepnete na "koreň" alebo "superužívateľ", ktorý efektívne robí to isté, kým sa odhlásíte.
Uvedomte si, že v obidvoch týchto prípadoch môže zmena oprávnení k súborom viesť k tomu, že programy nefungujú, neúmyselne menia vlastníctvo súborov na používateľa root (namiesto vlastníka) a robia systém bezpečnejším (poskytnutím ďalších povolení). Preto sa neodporúča meniť povolenia pre súbory - najmä systémové súbory - ak to nie je potrebné alebo viete, čo robíte.
Sú povolenia súboru, ktoré poskytujú základný systém bezpečnosti používateľom. Učenie, ako fungujú, vám môže pomôcť nastaviť základné zdieľanie v prostredí viacerých používateľov, chrániť "verejné" súbory a poskytnúť vám informácie o tom, kedy sa niečo pokazí so systémovým vlastníctvom súborov.
Myslíte, že môžete veci vysvetliť jednoduchšie? Máte opravu? Chcete spomenúť na staré dni? Vezmite si pauzu a vložte svoje myšlienky do poznámok.