Ahojte všetci. Toto je preklad článku z knihy RedHat RHCSA RHCE 7 RedHat Enterprise Linux 7 EX200 a EX300.
Z mojej strany: Dúfam, že článok bude užitočný nielen pre začiatočníkov, ale aj pomôže skúsenejším administrátorom usporiadať svoje vedomosti.
Takže, poďme na to.

Na prístup k súborom v Linuxe sa používajú oprávnenia. Tieto oprávnenia sa prideľujú trom predmetom: vlastníkovi súboru, vlastníkovi skupiny a inému objektu (t.j. všetkým ostatným). V tomto článku sa dozviete, ako aplikovať oprávnenia.
Článok začína prehľadom základných pojmov, potom sa diskutuje o špeciálnych oprávneniach (Special permissions) a zoznamoch prístupu (ACL). Na konci článku sa zaoberá nastavením predvolených prístupových práv cez umask, ako aj správou rozšírených atribútov používateľa.
Správa vlastníctva súborov
Predtým, ako začneme diskutovať o oprávneniach, musíte poznať úlohu vlastníka súboru a adresára. Vlastníctvo súborov a adresárov je rozhodujúce pre prácu s oprávneniami. V tejto sekcii sa najprv dozviete, ako zistiť vlastníka. Potom sa naučíte, ako zmeniť vlastníka skupiny a používateľa pre súbory a adresáre.
Zobrazenie vlastníka súboru alebo adresára
V Linuxe má každý súbor a každý adresár dvoch vlastníkov: používateľa a vlastníka skupiny.
Títo vlastníci sa nastavujú pri vytváraní súboru alebo adresára. Používateľ, ktorý vytvorí súbor, sa stáva vlastníkom tohto súboru a primárna skupina, do ktorej patrí tento používateľ, sa tiež stáva vlastníkom tohto súboru. Aby ste zistili, či máte ako používateľ prístupové práva k súboru alebo adresáru, shell overuje vlastníctvo.
To sa deje v nasledujúcom poradí:
- Shell overuje, či ste vlastníkom súboru, ku ktorému sa chcete dostať. Ak ste týmto vlastníkom, získavate oprávnenia a shell prestane kontrolu.
- Ak nie ste vlastníkom súboru, shell skontroluje, či ste členom skupiny, ktorá má oprávnenia na tento súbor. Ak ste členom tejto skupiny, získavate prístup k súboru s oprávneniami, ktoré sú pre skupinu nastavené, a shell prestane kontrolu.
- Ak nie ste ani používateľom, ani vlastníkom skupiny, získavate práva ostatných používateľov (Other).
Ak chcete vidieť aktuálne priradenia vlastníka, môžete použiť príkaz ls -l. Tento príkaz zobrazuje používateľa a vlastníka skupiny. Nižšie môžete vidieť nastavenia vlastníka pre adresáre v adresári /home.
[root@server1 home]# ls -l
total 8
drwx------. 3 bob bob 74 Feb 6 10:13 bob
drwx------. 3 caroline caroline 74 Feb 6 10:13 caroline
drwx------. 3 fozia fozia 74 Feb 6 10:13 fozia
drwx------. 3 lara lara 74 Feb 6 10:13 lara
drwx------. 5 lisa lisa 4096 Feb 6 10:12 lisa
drwx------. 14 user user 4096 Feb 5 10:35 user
Pomocou príkazu ls môžete zobraziť vlastníka súborov v danom adresári. Niekedy môže byť užitočné získať zoznam všetkých súborov v systéme, ktorých vlastníkom je daný používateľ alebo skupina. Na to môžete použiť find. Argument find -user môže byť použitý na tento účel. Napríklad nasledujúci príkaz zobrazuje všetky súbory, ktorých vlastníkom je používateľ linda:
find / -user lindaMôžete tiež použiť find na vyhľadávanie súborov, ktorých vlastníkom je určitá skupina.
Napríklad nasledujúci príkaz hľadá všetky súbory patriace skupine users:
find / -group usersZmena vlastníka
Aby ste aplikovali príslušné oprávnenia, prvé, čo treba zvážiť, je vlastníctvo. Na to existuje príkaz chown. Syntax tohto príkazu je jednoduchá na pochopenie:
chown kto čoNapríklad nasledujúci príkaz mení vlastníka adresára /home/account na používateľa linda:
chown linda /home/accountTím chown má niekoľko volieb, jedna z nich je obzvlášť užitočná: -R. Môžete hádať, čo robí, pretože táto voľba je dostupná aj pre mnoho iných príkazov. Umožňuje vám rekurzívne nastaviť vlastníka, čo znamená, že môžete nastaviť vlastníka aktuálneho adresára a všetkého, čo je pod ním. Nasledujúci príkaz mení vlastníka pre adresár /home a všetko, čo je pod ním, na používateľa linda:
Teraz vyzerajú vlastníci nasledovne:
[root@localhost ~]# ls -l /home
total 0
drwx------. 2 account account 62 Sep 25 21:41 account
drwx------. 2 lisa lisa 62 Sep 25 21:42 lisa
Vykonáme:
[root@localhost ~]# chown -R lisa /home/account
[root@localhost ~]#
Teraz je používateľ lisa vlastníkom adresára account:
[root@localhost ~]# ls -l /home
total 0
drwx------. 2 lisa account 62 Sep 25 21:41 account
drwx------. 2 lisa lisa 62 Sep 25 21:42 lisa
Zmena vlastníka skupiny
Existujú dva spôsoby, ako zmeniť vlastníctvo skupiny. Môžete to urobiť pomocou chown, ale existuje špeciálny príkaz s názvom chgrp, ktorý vykonáva túto prácu. Ak chcete použiť príkaz chown, použite . alebo : pred názvom skupiny.
Nasledujúci príkaz zmení vlastníka ktorejkoľvek skupiny /home/account na skupinu account:
chown .account /home/account
Môžete použiť chown na zmenu vlastníka používateľa a/alebo skupiny rôznymi spôsobmi. Tu je niekoľko príkladov:
- chown lisa myfile1 nastaví používateľa lisa ako vlastníka súboru myfile1.
- chown lisa.sales myfile nastaví používateľa lisa ako vlastníka súboru myfile a taktiež nastaví skupinu sales ako vlastníka tohto súboru.
- chown lisa:sales myfile to isté, čo predchádzajúci príkaz.
- chown .sales myfile nastaví skupinu sales ako vlastníka súboru myfile bez zmeny vlastníka používateľa.
- chown :sales myfile to isté, čo predchádzajúci príkaz.
Môžete použiť príkaz chgrp, aby ste zmenili vlastníka skupiny. Pozrime sa na nasledujúci príklad, kde môžete pomocou chgrp nastaviť vlastníkom adresára account skupinu sales:
chgrp .sales /home/accountRovnako ako v prípade chown, môžete použiť možnosť -R s chgrp, ako aj rekurzívne meniť vlastníka skupiny.
Pochopenie predvoleného vlastníka
Mohli ste si všimnúť, že keď používateľ vytvorí súbor, aplikuje sa predpokladané vlastníctvo.
Používateľ, ktorý vytvorí súbor, sa automaticky stáva vlastníkom tohto súboru a primárna skupina tohto používateľa sa automaticky stáva vlastníkom tohto súboru. Zvyčajne je to skupina, ktorá je uvedená v súbore /etc/passwd ako primárna skupina používateľa. Ak však používateľ patrí do viacerých skupín, môže zmeniť efektívnu primárnu skupinu.
Aby používateľ zobrazil aktuálnu efektívnu primárnu skupinu, môže použiť príkaz groups:
[root@server1 ~]# groups lisa
lisa : lisa account sales
Ak chce aktuálny používateľ linda zmeniť efektívnu primárnu skupinu, použije príkaz newgrp, za ktorým nasleduje názov skupiny, ktorú chce nastaviť ako novú efektívnu primárnu skupinu. Po použití príkazu newgrp bude primárna skupina aktívna, kým používateľ nezadá príkaz exit alebo sa neodhlási.
Nižšie je ukázané, ako používateľ linda používa tento príkaz, pričom primárnou skupinou sa stala skupina sales:
lisa@server1 ~]$ groups
lisa account sales
[lisa@server1 ~]$ newgrp sales
[lisa@server1 ~]$ groups
sales lisa account
[lisa@server1 ~]$ touch file1
[lisa@server1 ~]$ ls -l
total 0
-rw-r--r--. 1 lisa sales 0 Feb 6 10:06 file1
Po zmene aktuálnej primárnej skupiny všetky nové súbory vytvorené používateľom získajú túto skupinu ako vlastníka skupiny. Na to, aby ste sa vrátili k pôvodnému nastaveniu primárnej skupiny, použite exit.
Aby ste mohli použiť príkaz newgrp, používateľ musí byť členom skupiny, ktorú chce použiť ako primárnu. Okrem toho môže byť skupinové heslo použité pre skupinu pomocou príkazu gpasswd. Ak používateľ použije príkaz newgrp, ale nie je členom cieľovej skupiny, shell požaduje heslo skupiny. Po zadaní správneho hesla skupiny sa nastaví nová efektívna primárna skupina.
Správa základných práv
Systém povolení Linux bol vynájdený v 70. rokoch 20. storočia. Keďže výpočtové potreby boli v tých časoch obmedzené, základný systém povolení bol dosť obmedzený. Tento systém povolení využíva tri povolenia, ktoré je možné aplikovať na súbory a adresáre. V tejto časti sa dozviete, ako tieto povolenia používať a meniť.
Porozumenie právam na čítanie, zápis a vykonávanie
Tri základné povolenia vám umožňujú čítať, zapisovať a vykonávať súbory. Efekt týchto povolení sa líši pri aplikovaní na súbory alebo adresáre. Pokiaľ ide o súbor, povolenie na čítanie vám dáva právo otvoriť súbor na čítanie. To znamená, že môžete čítať jeho obsah, ale tiež to znamená, že váš počítač môže otvoriť súbor, aby s ním niečo urobil.
Programový súbor, ktorý potrebuje prístup k knižnici, by mal mať napríklad prístup na čítanie k tejto knižnici. Z toho vyplýva, že povolenie na čítanie je najzákladnejšie povolenie, ktoré potrebujete na prácu so súbormi.
Pokiaľ ide o adresár, čítanie umožňuje zobraziť obsah tohto adresára. Musíte vedieť, že toto povolenie vám neumožňuje čítať súbory v adresári. Systém povolení Linux nepozná dedičstvo a jediný spôsob, ako prečítať súbor, je použiť povolenia na čítanie pre tento súbor.
Ako už pravdepodobne tušíte, povolenie na zápis, ak sa vzťahuje na súbor, umožňuje zapisovať do súboru. Inými slovami, umožňuje meniť obsah existujúcich súborov. Avšak neumožňuje vytvárať alebo mazať nové súbory ani meniť práva prístupu k súboru. Na to musíte dať povolenie na zápis do adresára, kde chcete súbor vytvoriť. V adresároch toto povolenie tiež umožňuje vytvárať a mazať nové podadresáre.
Povolenie na vykonávanie je to, čo potrebujete na spustenie súboru. Nikdy nebude nastavené ako predvolené, čo robí Linux prakticky úplne odolným voči vírusom. Iba niekto s právom na zápis do adresára môže aplikovať povolenie na vykonávanie.
Nižšie je zhrnuté používanie základných povolení:

Použitie chmod
Na správu práv sa používa príkaz chmod. Pri použití chmod môžete nastavovať povolenia pre používateľa (user), skupinu (group) a ostatných (other). Môžete tento príkaz používať v dvoch režimoch: relatívny režim a absolútny režim. V absolútnom režime sa používajú tri číslice na nastavenie základných povolení.

Pri nastavovaní povolení vypočítajte potrebnú hodnotu. Ak chcete nastaviť čítanie, zápis a vykonávanie pre používateľa, čítanie a vykonávanie pre skupinu, ako aj čítanie a vykonávanie pre ostatných v súbore /somefile, použijete nasledujúci príkaz chmod:
chmod 755 /somefileKeď používate chmod týmto spôsobom, všetky aktuálne povolenia sa nahrádzajú nastavenými povoleniami.
Ak chcete zmeniť povolenia vzhľadom na aktuálne povolenia, môžete použiť chmod v relatívnom režime. Pri použití chmod v relatívnom režime pracujete s tromi indikátormi, aby ste určili, čo chcete urobiť:
- Najprv určíte, pre koho chcete zmeniť povolenia. Na to si môžete vybrať medzi používateľom (u), skupinou (g) a ostatnými (o).
- . Potom použijete operátor na pridanie alebo odstránenie povolení z aktuálneho režimu alebo ich úplne nastavíte.
- Na koniec použijete r, w a x, aby ste určili, aké povolenia chcete nastaviť.
Pri zmene práv v relatívnom režime môžete vynechať časť „komu“, aby ste pridali alebo odstránili oprávnenie pre všetky objekty. Napríklad, tento príkaz pridáva oprávnenie na vykonávanie pre všetkých používateľov:
chmod +x somefilePri práci v relatívnom režime môžete tiež používať zložitejšie príkazy. Napríklad, tento príkaz pridáva oprávnenie na zápis do skupiny a odstraňuje čítanie pre ostatných:
chmod g+w,o-r somefilePri používaní chmod -R o+rx /data nastavujete oprávnenie na vykonávanie pre všetky adresáre, ako aj pre súbory v adresári /data. Aby ste nastavili oprávnenie na vykonávanie len pre adresáre, a nie pre súbory, použite chmod -R o+ rX /data.
Veľké písmeno X zaručuje, že súbory nedostanú oprávnenie na vykonávanie, ak súbor už nenastavil oprávnenie na vykonávanie pre niektoré objekty. To robí X rozumnejším spôsobom práce s oprávneniami na vykonávanie; to zabráni nastaveniu tohto oprávnenia na súbory, kde to nie je potrebné.
Rozšírené práva
Okrem základných oprávnení, o ktorých ste práve čítali, existuje v Linuxe aj súbor rozšírených oprávnení. Toto nie sú tie oprávnenia, ktoré nastavujete predvolene, ale niekedy poskytujú užitočné doplnenie. V tejto časti sa dozviete, čo to sú a ako ich nastaviť.
Pochopenie rozšírených práv SUID, GUID a sticky bit
Existujú tri pokročilé oprávnenia. Prvé z nich je oprávnenie na nastavenie identifikátora používateľa (SUID). V niektorých špeciálnych prípadoch môžete toto oprávnenie aplikovať na spustiteľné súbory. Predvolene používateľ, ktorý spúšťa spustiteľný súbor, ho spúšťa so svojimi vlastnými oprávneniami.
Pre bežných používateľov to zvyčajne znamená, že používanie programu je obmedzené. Avšak za určitých okolností potrebuje používateľ špeciálne oprávnenia, len na vykonanie určitej úlohy.
Zvážte napríklad situáciu, keď používateľ potrebuje zmeniť heslo. Na to musí používateľ zapísať svoje nové heslo do súboru /etc/shadow. Tento súbor je však nedostupný na zápis používateľom, ktorí nemajú prístupové práva root:
root@hnl ~]# ls -l /etc/shadow
----------. 1 root root 1184 Apr 30 16:54 /etc/shadow
Právo SUID ponúka riešenie tohto problému. V utilite /usr/bin/passwd sa toto právo uplatňuje predvolene. To znamená, že pri zmene hesla používateľ dočasne získa práva root, čo mu umožňuje zapisovať do súboru /etc/shadow. Právo SUID môžete vidieť na ls -l ako s mieste, kde by ste obvykle očakávali vidieť x pre používateľské práva:
[root@hnl ~]# ls -l /usr/bin/passwd
-rwsr-xr-x. 1 root root 32680 Jan 28 2010 /usr/bin/passwd
Právo SUID sa môže zdať užitočné (a v niektorých prípadoch aj je), ale zároveň je potenciálne nebezpečné. Pri nesprávnom použití môžete náhodou poskytnúť práva na prístup root. Preto odporúčam používať ho iba s maximálnou opatrnosťou.
Väčšina administrátorov ho nikdy nebude musieť používať; uvidíte ho iba v niektorých súboroch, kde ho operačný systém predvolene nastavuje.
Druhé špeciálne právo je identifikátor skupiny (SGID). Toto právo má dva účinky. Pri použití na spustiteľný súbor dáva používateľovi, ktorý súbor spúšťa, práva vlastníka skupiny tohto súboru. Takže SGID môže vykonávať viac-menej to isté, čo SUID. Avšak na tento účel sa SGID prakticky nepoužíva.
Rovnako ako v prípade práva SUID, SGID sa uplatňuje na niektoré systémové súbory ako nastavenie predvolene.
Keď sa uplatňuje na adresár, SGID môže byť užitočný, pretože ho môžete použiť na nastavenie predvoleného vlastníka skupiny pre súbory a podadresáre vytvorené v tomto adresári. Predvolene, keď používateľ vytvorí súbor, jeho efektívna primárna skupina sa nastaví ako vlastník skupiny pre tento súbor.
To nie je vždy veľmi užitočné, najmä preto, že užívatelia Red Hat/CentOS majú nastavenú hlavnú skupinu na skupinu s rovnakým názvom ako používateľ, v ktorej je používateľ jediným členom. Takže predvolene budú súbory vytvorené používateľom patriť do skupiny na spoločné používanie.
Predstavte si situáciu, keď používateľky linda a lori pracujú v účtovníctve a sú členmi skupiny accountPredvolene sú títo používatelia členmi súkromnej skupiny, ktorej jediným členom sú. Obaja používatelia sú však členmi skupiny account, a to aj ako sekundárna skupina.
Situácia je taká, že keď niektorý z týchto používateľov vytvorí súbor, hlavná skupina sa stane vlastníkom. Preto predvolene linda nemôže pristupovať k súborom, ktoré vytvorila lori, a naopak. Ak však vytvoríte zdieľaný adresár skupiny (povedzme, /groups/account) a zabezpečíte, že právo SGID je aplikované na tento adresár a skupinový účet je nastavený ako vlastník skupiny pre tento adresár, všetky súbory vytvorené v tomto adresári a všetkých jeho podadresároch budú mať skupinu account ako predvoleného vlastníka skupiny.
Z tohto dôvodu je právo SGID veľmi užitočné oprávnenie na nastavenie v adresároch zdieľaných skupín.
Právo SGID je zobrazené vo výstupe ls -l ako s na pozícii, kde obvykle nájdete právo na vykonávanie skupiny:
[root@hnl data]# ls -ld account
drwxr-sr-x. 2 root account 4096 Apr 30 21:28 account
Tretie zo špeciálnych práv je sticky bit. Toto oprávnenie je užitočné na ochranu súborov pred náhodným odstránením v prostredí, kde majú viacerí používatelia práva na zápis do toho istého adresára. Ak je použitý sticky bit, používateľ môže súbor odstrániť len v prípade, že je vlastníkom súboru alebo adresára, v ktorom sa súbor nachádza. Z tohto dôvodu sa používa ako predvolené oprávnenie pre adresár /tmp a môže byť užitočné aj pre adresáre zdieľaných skupín.
Bez sticky bit, ak používateľ môže vytvárať súbory v adresári, môže tiež odstraňovať súbory z tohto adresára. V prostredí verejnej skupiny to môže byť problém. Predstavte si používateľov lindu a lori, ktorí obaja majú práva na zápis do adresára /data/account a dostávajú tieto práva vďaka členstvu v skupine account. Preto môže linda mazať súbory vytvorené lori a naopak.
Keď aplikujete sticky bit, používateľ môže odstraňovať súbory, iba ak je splnená jedna z nasledujúcich podmienok:
- Používateľ je vlastníkom súboru;
- Používateľ je vlastníkom adresára, v ktorom sa súbor nachádza.
Pri používaní ls -l, môžete vidieť sticky bit ako t na mieste, kde obvykle vidíte povolenie na vykonávanie pre ostatných:
[root@hnl data]# ls -ld account/
drwxr-sr-t. 2 root account 4096 Apr 30 21:28 account/
Aplikácia rozšírených práv
Na použitie SUID, SGID a sticky bit môžete tiež použiť chmod. SUID má číselnú hodnotu 4, SGID má číselnú hodnotu 2 a sticky bit má číselnú hodnotu 1.
Ak chcete aplikovať tieto povolenia, musíte pridať štvormiestny argument v chmod, prvá cifra sa týka osobitných povolení. Nasledujúci riadok, napríklad, pridá povolenie SGID na adresár a nastaví rwx pre používateľa a rx pre skupinu a ostatných:
chmod 2755 /somedirTo je dosť nepraktické, ak chcete najskôr skontrolovať aktuálne prístupové práva, ktoré sú nastavené pred tým, ako pracujete s chmod v absolútnom režime. (Riskujete prepísanie povolení, ak to neurobíte.) Preto odporúčam pracovať v relatívnom režime, ak potrebujete aplikovať niektoré z osobitných povolení:
- Pre SUID použite chmod u+s.
- Pre SGID použite chmod g+s.
- Pre sticky bit použite chmod +t, a potom názov súboru alebo adresára, pre ktorý chcete nastaviť povolenia.
V tabuľke sú zhrnuté všetky dôležité informácie o správe osobitných povolení.

Príklad práce so špeciálnymi právami
V tomto príklade používate osobitné povolenia, aby členovia skupiny mohli ľahšie zdieľať súbory v adresári spoločnej skupiny. Priradíte ID-bit nastaveného identifikátora skupiny a tiež sticky bit a vidíte, že po ich nastavení sú pridané funkcie, ktoré uľahčujú spoluprácu členov skupiny.
- Otvorené terminálu, v ktorom ste používateľom linda. Vytvorenie používateľa možno vykonať príkazom useradd linda, pridajte heslo passwd linda.
- Vytvorte v koreňovom adresári /data a podadresár /data/sales príkazom mkdir -p /data/sales. Vykonajte cd /data/sales, aby ste prešli do adresára sales. Vykonajte touch linda1 a touch linda2, aby ste vytvorili dva prázdne súbory, ktorých vlastníkom je linda.
- Vykonajte su — lisa pre prechod aktuálneho používateľa na používateľa lisa, ktorý je tiež členom skupiny sales.
- Vykonajte cd /data/sales a z tohto adresára vykonajte ls -l. Uvidíte dva súbory, ktoré vytvoril používateľ linda a patria skupine linda. Vykonajte rm -f linda*. To odstráni oba súbory.
- Vykonajte touch lisa1 a touch lisa2, aby ste vytvorili dva súbory, ktoré patria používateľovi lisa.
- Vykonajte su — na zvýšenie vašich privilégií na úroveň root.
- Vykonajte chmod g+s,o+t /data/sales, aby ste nastavili bit identifikátora skupiny (GUID) a sticky bit v spoločnom adresári skupiny.
- Vykonajte su — linda. Potom vykonajte touch linda3 a touch linda4. Teraz by ste mali vidieť, že dva vytvorené súbory patria skupine sales, ktorá je vlastníkom adresára /data/sales.
- Vykonajte rm -rf lisa*. Sticky bit zabraňuje vymazaniu týchto súborov používateľom linda, pretože nie ste vlastníkom týchto súborov. Všimnite si, že ak je používateľ linda vlastníkom adresára /data/sales, môže tieto súbory odstrániť aj tak!
Správa ACL (setfacl, getfacl) v Linuxe
Aj keď rozšírené práva, ktoré boli prediskutované vyššie, pridávajú užitočnú funkčnosť k tomu, ako Linux pracuje s povoleniami, neumožňujú vám poskytovať povolenia viac ako jednému používateľovi alebo jednej skupine v jednom súbore.
Kontrolné zoznamy prístupu ponúkajú túto funkciu. Okrem toho umožňujú administrátorom nastavovať predvolené povolenia zložitým spôsobom, v ktorom môžu byť nastavené povolenia rôzne v rôznych adresároch.
Pochopenie ACL
Hoci podsystem ACL pridáva vynikajúce funkčné možnosti k vášmu serveru, má jednu nevýhodu: nie všetky nástroje ju podporujú. Takže môžete stratiť nastavenia ACL pri kopírovaní alebo presúvaní súborov a zálohovací softvér nemusí zálohovať nastavenia ACL.
Nástroj tar nepodporuje ACL. Aby ste zabezpečili, že nastavenia ACL nebudú stratené pri vytváraní zálohy, používajte star namiesto tar. star funguje so všetkými rovnakými parametrami ako tar; jednoducho pridáva podporu pre nastavenia ACL.
Môžete tiež vytvoriť zálohu ACL pomocou getfacl, ktorú môžete obnoviť pomocou príkazu setfacl. Na vytvorenie zálohy použite getfacl -R /directory > file.acls. Na obnovenie nastavení z záložného súboru použite setfacl —restore=file.acl.
Nedostatok podpory niektorými nástrojmi by nemal byť problém. Kontrolné zoznamy ACL sa často aplikujú na adresáre ako štrukturálna miera, a nie na jednotlivé súbory.
Preto ich nebude veľa, ale len niekoľko, aplikovaných na inteligentných miestach súborového systému. Preto obnoviť pôvodné zoznamy ACL, s ktorými ste pracovali, je relatívne jednoduché, aj keď váš softvér na zálohovanie ich nepodporuje.
Príprava súborového systému na ACL
Pred začatím práce s ACL môže byť potrebné pripraviť súborový systém na podporu ACL. Keďže metaúdaje súborového systému je potrebné rozšíriť, nie vždy existuje podpora ACL v predvolenej konfigurácii súborového systému. Ak pri nastavení zoznamov ACL pre súborový systém dostanete správu 'operation not supported', môže to znamenať, že váš súborový systém nepodporuje ACL.
Aby ste to opravili, musíte pridať možnosť acl mount do súboru /etc/fstab, aby bol súborový systém pripojený s predvolenej podporou ACL.
Zmena a zobrazenie nastavení ACL pomocou setfacl a getfacl
Na nastavenie ACL potrebujete príkaz setfacl. Na zobrazenie aktuálnych nastavení ACL potrebujete getfacl. Príkaz ls -l neukazuje žiadne existujúce ACL; iba zobrazuje + po zozname oprávnení, čo znamená, že zoznamy ACL sú aplikované aj na súbor.
Pred nastavením zoznamov ACL je vždy užitočné zobraziť aktuálne nastavenia ACL pomocou getfacl. Nižšie na príklade môžete vidieť aktuálne prístupové práva, ako sú zobrazené pomocou ls -l, a tiež ako je to zobrazené s getfacl. Ak sa pozriete dostatočne pozorne, uvidíte, že zobrazené informácie sú presne také isté.
[root@server1 \/]# ls -ld \/dir\ndrwxr-xr-x. 2 root root 6 Feb 6 11:28 \/dir\n[root@server1 \/]# getfacl \/dir\ngetfacl: Odstránenie vedúceho ' \/ ' z absolútnych názvov ciest\n# súbor: dir\n# vlastník: root\n# skupina: root\nuser::rwx\ngroup::r-x\nother::r-x
Po vykonaní príkazu getfacl nižšie je viditeľné, že oprávnenia sú zobrazené pre tri rôzne objekty: používateľa, skupinu a ostatných. Teraz pridajme ACL, aby sme dali práva na čítanie a vykonávanie skupine sales. Príkaz na to je setfacl -m g:sales:rx \/dir. V tomto príkaze -m označuje, že aktuálne nastavenia ACL je potrebné zmeniť. Potom g:sales:rx oznamuje príkazu, aby nastavil ACL na čítanie a vykonávanie (rx) pre skupinu (g) sales. Nižšie môžete vidieť, ako vyzerá príkaz, ako aj výstup príkazu getfacl po zmene aktuálnych nastavení ACL.
[root@server1 \/]# setfacl -m g:sales:rx \/dir\n[root@server1 \/]# getfacl \/dir\ngetfacl: Odstránenie vedúceho ' \/ ' z absolútnych názvov ciest\n# súbor: dir\n# vlastník: root\n# skupina: root\nuser::rwx\ngroup::r-x\ngroup:sales:r-x\nmask::r-x\nother::r-x
Teraz, keď chápete, ako nastaviť skupinový ACL, je ľahké pochopiť ACL pre používateľov a iných používateľov. Napríklad príkaz setfacl -m u:linda:rwx /data dáva oprávnenia používateľovi linda v adresári /data, bez toho aby ho urobil vlastníkom alebo zmenil súčasného vlastníka.
Tím setfacl má množstvo funkcií a možností. Jednou možnosťou, ktorá je obzvlášť dôležitá, je parameter -R. Ak sa používa, možnosť nastavuje ACL pre všetky súbory a podadresáre, ktoré v súčasnosti existujú v adresári, kde nastavujete ACL. Odporúča sa vždy používať túto možnosť pri zmene zoznamov ACL pre existujúce adresáre.
Práca s predvoleným ACL
Jednou z výhod používania zoznamov ACL je, že môžete dať oprávnenia viacerým používateľom alebo skupinám v adresári. Ďalšou výhodou je, že môžete povoliť dedenie, keď pracujete s predvoleným ACL.
Nastavením predvoleného ACL určíte oprávnenia, ktoré budú nastavené pre všetky nové položky vytvorené v adresári. Majte na pamäti, že predvolený ACL nemení oprávnenia pre existujúce súbory a podadresáre. Na ich zmenu je potrebné pridať aj bežný ACL!
Je dôležité to vedieť. Ak chcete používať ACL na nastavenie prístupu viacerých používateľov alebo skupín k rovnakému adresáru, musíte nastaviť ACL dvakrát. Najprv použite setfacl -R -m, aby ste zmenili ACL pre aktuálne súbory. Potom použite setfacl -m d:, aby ste sa postarali o všetky nové položky, ktoré budú taktiež vytvorené.
Aby ste nastavili predvolený ACL, jednoducho musíte pridať možnosť d po možnosti -m poradie má význam!). Preto použite setfacl -m d:g:sales:rx /data, ak chcete, aby skupina sales mala prístup na čítanie a vykonávanie všetkého, čo kedy bude vytvorené v adresári /data.
Pri používaní predvolených zoznamov ACL môže byť tiež užitočné nastaviť ACL pre iných. Zvyčajne to nemá osobitný zmysel, pretože môžete meniť oprávnenia pre iných pomocou chmod. Avšak, čo nemôžete urobiť s pomocou chmod, je to stanoviť práva, ktoré sa majú poskytnúť ostatným používateľom pre každý nový súbor, ktorý sa kedy vytvorí. Ak chcete, aby ostatní nemali žiadne oprávnenia na čokoľvek vytvorené v /data, použite setfacl -m d:o::- /data.
ACL a bežné oprávnenia nie sú vždy dobre integrované. Môžu vzniknúť problémy, ak ste na adresár použili predvolené ACL, po čom boli do tohto adresára pridané položky, a potom sa pokúsite zmeniť bežné oprávnenia. Zmeny, ktoré sa aplikujú na bežné oprávnenia, sa nebudú dobre odrážať v prehľade ACL. Aby ste sa vyhli problémom, najprv nastavte bežné oprávnenia a až potom nastavte predvolené ACL (a po tomto sa snažte ich znovu nemeniť).
Príklad správy rozšírených práv pomocou ACL
V tomto príklade budete pokračovať v práci s adresármi /data/account a /data/sales, ktoré ste vytvorili skôr. V predchádzajúcich príkladoch ste zabezpečili, že skupina sales má oprávnenia na /data/sales, zatiaľ čo skupina account má oprávnenia na /data/account.
Najprv sa uistite, že skupina account dostáva oprávnenia na čítanie v adresári /data/sales, zatiaľ čo skupina sales dostáva oprávnenia na čítanie v adresári /data/account.
Potom nastavíte predvolené ACL, aby ste sa uistili, že všetky nové súbory majú správne nastavené oprávnenia pre všetky nové položky.
- Otvorenie terminálu.
- Vykonajte setfacl -m g:account:rx /data/sales a setfacl -m g:sales:rx /data/account.
- Vykonajte getfacl, aby ste sa uistili, že prístupové práva sú nastavené tak, ako ste chceli.
- Vykonajte setfacl -m d:g:account:rwx,g:sales:rx /data/sales, aby ste nastavili predvolené ACL pre adresár sales.
- Pridajte predvolené ACL pre adresár /data/account pomocou setfacl -m d:g:sales:rwx,g:account:rx /data/account.
- Uistite sa, že nastavenia ACL fungujú, pridaním nového súboru do /data/sales. Spustite touch /data/sales/newfile a spustite getfacl /data/sales/newfile na overenie aktuálnych oprávnení.
Nastavenie predvolených práv pomocou umask
Vyššie ste sa dozvedeli, ako pracovať s predvolenými ACL. Ak nepoužívate ACL, existuje parameter shellu, ktorý určuje predvolené oprávnenia, ktoré dostanete: umask (obranná maska). V tejto časti sa dozviete, ako zmeniť predvolené oprávnenia pomocou umask.
Asi ste si všimli, že pri vytváraní nového súboru sa nastavujú niektoré predvolené oprávnenia. Tieto oprávnenia sú definované nastavením umask. Tento parameter shell sa aplikuje všetkým používateľom pri prihlásení do systému. V parametri umask sa používa číselná hodnota, ktorá sa odčíta z maximálnych povolení, ktoré môžu byť automaticky nastavené pre súbor; maximálne nastavenie pre súbory je 666 a pre adresáre 777.
Avšak niektoré výnimky sa vzťahujú na toto pravidlo. Môžete nájsť kompletný prehľad nastavení umask v tabuľke nižšie.
Z čísel, ktoré sa používajú v umask, rovnako ako v prípade číselných argumentov pre príkaz chmod, prvé číslo sa vzťahuje na povolenia používateľa, druhé číslo je pre povolenia skupiny a posledné je pre predvolené povolenia nastavené pre ostatných. Hodnota umask predvolene 022 dáva 644 pre všetky nové súbory a 755 pre všetky nové adresáre vytvorené na vašom serveri.
Kompletný prehľad všetkých číselných hodnôt umask a ich výsledkov je v tabuľke nižšie.

Jednoduchý spôsob, ako vidieť, ako parameter umask funguje, vyzerá nasledovne: začnite s predvolenými povoleniami pre súbor nastavenými na 666 a odpočítajte umask, aby ste získali platné povolenia. Urobte to isté pre adresár a jeho predvolené povolenia 777.
Existujú dva spôsoby, ako zmeniť nastavenie umask: pre všetkých používateľov a pre jednotlivých používateľov. Ak chcete nastaviť umask pre všetkých používateľov, musíte zabezpečiť, aby bol parameter umask zohľadnený pri spúšťaní súborov prostredia shell, ako je uvedené v /etc/profile. Správny prístup je vytvoriť shellový skript s názvom umask.sh v adresári /etc/profile.d a uviesť umask, ktorý chcete použiť v tomto shellovom skripte. Ak sa v tomto súbore mení umask, aplikuje sa na všetkých používateľov po prihlásení na server.
Alternatívou nastaveniu umask prostredníctvom /etc/profile a súvisiacich súborov, kde sa uplatňuje na všetkých používateľov, ktorí sa prihlasujú, je zmena nastavení umask v súbore s názvom .profile, ktorý sa vytvára v domácom adresári každého používateľa.
Nastavenia aplikované v tomto súbore sa vzťahujú len na jednotlivého používateľa; preto je to dobrá metóda, ak potrebujete viac detailov. Osobne sa mi táto funkcia páči, aby som zmenil predvolenú hodnotu umask pre používateľa root na 027, zatiaľ čo bežní používatelia pracujú so základným umaskom 022.
Práca s rozšírenými atribútmi používateľa
Toto je záverečná časť o právach v systéme Linux.
Pri práci s oprávneniami vždy existuje prepojenie medzi objektom používateľa alebo skupiny a oprávneniami, ktoré tieto objekty používateľa alebo skupiny majú na súbor alebo adresár. Alternatívnou metódou ochrany súborov na serveri Linux je práca s atribútmi.
Atribúty fungujú nezávisle od používateľa, ktorý pristupuje k súboru.
Rovnako ako v prípade ACL môže byť potrebné pre atribúty súboru povoliť parameter mount.
toto je voľba user_xattr. Ak dostanete správu "operácia nie je podporovaná" pri práci s rozšírenými atribútmi používateľa, určite nastavte parameter mount v súbore /etc/fstab.
Mnohé atribúty sú zdokumentované. Niektoré atribúty sú k dispozícii, ale ešte neboli implementované. Nepoužívajte ich; neprinesú vám žiadny úžitok.
Nižšie sú uvedené najužitočnejšie atribúty, ktoré môžete použiť:
A Tento atribút zaručuje, že čas prístupu k súboru sa nezmení.
Obvykle, vždy keď je súbor otvorený, čas prístupu k súboru by mal byť zaznamenaný do metadát súboru. To negatívne ovplyvňuje výkon; preto pre súbory, ku ktorým sa pravidelne pristupuje, sa atribút A môže použiť na vypnutie tejto funkcie.
a Tento atribút umožňuje pridávať, ale nie odstraňovať súbor.
c Ak používate súborový systém, ktorý podporuje kompresiu na úrovni zväzku, tento atribút súboru zaručuje, že súbor bude komprimovaný pri prvom zapnutí mechanizmu kompresie.
D Tento atribút zaručuje, že zmeny v súboroch sa zapisujú na disk okamžite, a nie do vyrovnávacej pamäte najskôr. Toto je užitočný atribút pre dôležité databázové súbory, ktorý zabezpečuje, že sa nestratia medzi vyrovnávacou pamäťou súborov a pevným diskom.
d Tento atribút zaručuje, že súbor nebude uložený v zálohách, kde sa používa nástroj na dumpovanie.
I Tento atribút umožňuje indexovanie pre adresár, v ktorom je povolený. To zabezpečuje rýchlejší prístup k súborom pre primitivne súborové systémy, ako je Ext3, ktoré nepoužívajú databázu B-tree pre rýchly prístup k súborom.
i Tento atribút robí súbor nezmeniteľným. Preto nie je možné vykonávať zmeny na súbore, čo je užitočné pre súbory, ktoré potrebujú dodatočnú ochranu.
j Tento atribút zaručuje, že súbor v súborovom systéme ext3 je najprv zapísaný do denníka a až potom do blokov dát na pevnom disku.
s Prepísať bloky, v ktorých bol súbor uložený, na 0 po jeho odstránení. To zaručuje, že obnova súboru je nemožná po jeho odstránení.
u Tento atribút uchováva informácie o odstránení. To umožňuje vyvinúť nástroj, ktorý pracuje s touto informáciou pre záchranu odstránených súborov.
Ak chcete uplatniť atribúty, môžete použiť príkaz chattr. Napríklad použite chattr +s somefile, aby ste uplatnili atribúty na somefile. Chcete odstrániť atribút? Potom použite chattr -s somefile, a ten bude odstránený. Pre prehľad všetkých aktuálne uplatnených atribútov použite príkaz lsattr.
Zhrnutie
V tomto článku ste sa naučili, ako pracovať s oprávneniami. Prečítali ste si o troch hlavných oprávneniach, rozšírených oprávneniach a o tom, ako aplikovať zoznamy ACL v súborovom systéme. Tiež ste sa naučili, ako používať parameter umask na aplikáciu predvolených oprávnení. Na konci tohto článku ste sa naučili, ako používať rozšírené atribúty používateľa na pridanie ďalšej úrovne bezpečnosti v súborovom systéme.
Ak sa vám tento preklad páčil, napíšte o tom prosím do komentárov. Bude väčšia motivácia robiť užitočné preklady.
V článku som opravil niektoré preklepy a gramatické chyby. Znížil som niektoré zdĺhavé odseky na menšie pre lepšiu zrozumiteľnosť.
Namiesto „Iba niekto s administrátorskými právami na adresár môže aplikovať povolenie na vykonanie.“ som opravil na „Iba niekto s právami na zápis do adresára môže aplikovať povolenie na vykonanie.“, čo bude presnejšie.
Ďakujem za pripomienky .
Nahradené:
Ak nie ste vlastníkom používateľa, shell skontroluje, či ste členom skupiny, ktorá sa tiež nazýva skupina súboru.Na:
Ak nie ste vlastníkom súboru, shell skontroluje, či ste členom skupiny, ktorá má oprávnenia na tento súbor. Ak ste členom tejto skupiny, získavate prístup k súboru s oprávneniami, ktoré sú pre skupinu nastavené, a shell prestane kontrolu.Ďakujem za poznámku
Zdroj: habr.com
