Práva prístupu k súborom¶
Linux, rovnako ako ostatné unixové operačné systémy, umožňuje viacerým používateľom pracovať na tom istom serveri. Zdieľaný prístup k súborom však prináša riziko odhalenia citlivých informácií alebo dokonca straty dát, ak iní používatelia získajú prístup k súborom alebo adresárom, ktoré im nepatria. Na riešenie tohto problému Unix poskytuje systém práv prístupu k súborom, ktorý špecifikuje, akú mieru kontroly má každý používateľ nad daným súborom alebo adresárom.
Každý súbor (a adresár) má vlastníka, priradenú Unix skupinu a sadu prístupových príznakov, ktoré špecifikujú práva na čítanie, zapisovanie a spúšťanie pre používateľa (vlastníka), skupinu a iných používateľov.
Práva skupiny sa vzťahujú na všetkých používateľov, ktorí patria do skupiny priradenej k súboru, zatiaľ čo práva pre iných sa vzťahujú na všetkých používateľov, ktorí nie sú vlastníkom ani členom príslušnej skupiny.
Príkaz ls -l zobrazí práva prístupu a priradenú skupinu pre
ľubovoľný súbor:
Práva prístupu k súborom
drwx------ 2 user group 2048 Jun 12 2022 Desktop
drwxr-x--- 2 user group 2048 Oct 17 2021 Share
drwxr-xr-x 3 user group 2048 Nov 13 2021 Public
-rw------- 1 user group 1327 Apr 9 2022 private.out
-rwx------ 1 user group 12040 Apr 9 2022 private_exec.sh
Vyššie uvedené polia reprezentujú, zľava doprava:
1. set of ten permission flags
2. link count
3. owner
4. associated Unix group
5. size
6. date of last modification
7. name of the file
Prístupové príznaky zľava doprava sú:
| Príznak | Význam |
|---|---|
| 1 | "d" ak je to adresár, "-" ak je to bežný súbor |
| 2, 3, 4 | práva na čítanie, zapisovanie a spúšťanie pre používateľa (vlastníka) |
| 5, 6, 7 | práva na čítanie, zapisovanie a spúšťanie pre skupinu |
| 8, 9, 10 | práva na čítanie, zapisovanie a spúšťanie pre iných používateľov |
a majú nasledujúce významy:
| Hodnota | Význam |
|---|---|
| - | Príznak nie je nastavený |
| r | Súbor je čitateľný |
| w | Súbor je zapisovateľný. Pre adresáre je možné vytvárať alebo odstraňovať súbory. |
| x | Súbor je spustiteľný. Pri adresároch umožňuje vypísať ich obsah alebo do nich vstúpiť. |
| s | Nastavenie group ID (sgid). Pre adresáre budú súbory v ňom vytvorené patriť do rovnakej skupiny ako samotný adresár, nie do predvolenej skupiny používateľa. Podadresáre vytvorené v ňom budú mať nielen rovnakú skupinu, ale budú aj nasledovať nastavenie sgid. |
Aplikácia na predchádzajúci príklad:
drwx------ 2 user group 2048 Jun 12 2022 Desktop
Toto je adresár Desktop. Vlastníkom je používateľ user a priradená skupina je group. Adresár má práva na čítanie, zapisovanie a spúšťanie pre vlastníka a žiadne práva pre ostatných používateľov.
drwxr-x--- 2 user group 2048 Oct 17 2021 Share
Toto je adresár Share. Vlastníkom je používateľ user a priradená skupina je group. Vlastník môže adresár čítať, zapisovať doň a prechádzať ním; všetci členovia skupiny môžu vypísať jeho obsah. Tento adresár by pravdepodobne obsahoval súbory, ku ktorým má skupina práva na čítanie.
drwxr-xr-x 3 user group 2048 Nov 13 2021 Public
Toto je adresár Public. Vlastníkom je používateľ user a priradená skupina je group. Vlastník môže adresár čítať, zapisovať doň a prechádzať ním; všetci ostatní používatelia môžu čítať jeho obsah. Adresár tohto typu by pravdepodobne obsahoval súbory, ktoré majú práva na čítanie pre všetkých.
-rw------- 1 user group 1327 Apr 9 2022 private.out
Toto je bežný súbor private.out. Vlastníkom je používateľ user a priradená skupina je group. Je čitateľný a zapisovateľný pre vlastníka, ale nie je prístupný pre žiadneho iného používateľa.
-rwx------ 1 user group 12040 Apr 9 2022 private_exec.sh
Nakoniec ide o bežný súbor private_exec.sh. Vlastníkom je používateľ user a priradená skupina je group. Je spustiteľný, čitateľný a zapisovateľný iba pre vlastníka.
Zmena práv prístupu k súborom¶
Keď sa vytvorí súbor, prístupové príznaky sa nastavujú podľa
masky vytvárania režimu súboru, ktorú je možné nastaviť
pomocou príkazu umask.
Maska vytvárania režimu súboru je trojciferná osmičková hodnota, ktorej deväť bitov zodpovedá poliam 2–10 prístupových príznakov. Výsledné práva sa vypočítajú bitovou operáciou AND z unárneho doplnku argumentu (pomocou bitovej operácie NOT) a predvolených práv špecifikovaných shellom (typicky 666 pre súbory a 777 pre adresáre).
Bežne užitočné hodnoty sú:
| Hodnota | Práva súboru | Práva adresára |
|---|---|---|
| 002 | -rw-rw-r-- | drwxrwxr-x |
| 007 | -rw-rw---- | drwxrwx--- |
| 027 | -rw-r----- | drwxr-x--- |
| 077 | -rw------- | drwx------ |
Predvolená hodnota umask na oboch clustroch je 002 a v
prípade potreby ju možno zmeniť vo vašich konfiguračných súboroch
~/.bash_profile alebo ~/.bashrc pridaním nasledujúceho riadku:
umask 022
Príkaz zmena režimu (chmod) možno použiť na zmenu práv
prístupu k existujúcemu súboru alebo adresáru. Príznak -R možno
použiť na aplikovanie zmien rekurzívne.
Príkaz možno spustiť s osmičkovými hodnotami reprezentujúcimi prístupové príznaky, napríklad:
| Osemičková číslica | Binárna reprezentácia (rwx) | Prístup |
|---|---|---|
| 0 | 000 | žiadny |
| 1 | 001 | spúšťanie |
| 2 | 010 | zapisovanie |
| 3 | 011 | zapisovanie a spúšťanie |
| 4 | 100 | čítanie |
| 5 | 101 | čítanie a spúšťanie |
| 6 | 110 | čítanie a zapisovanie |
| 7 | 111 | všetky |
Numerická zmena režimu
login01:~ $ touch foo
login01:~ $ ls -l foo
-rw-rw-r-- 1 user group 0 Nov 16 05:58 foo
login01:~ $ chmod 744 foo
login01:~ $ ls -l foo
-rwxr--r-- 1 user group 0 Nov 16 05:58 foo
Alternatívne možno príkaz chmod spustiť so symbolickými
hodnotami:
chmod [-R] [classes][operator][modes] file
kde triedy určujú kombináciu používateľ/skupina/iní, na ktorú sa operácia vzťahuje, operátor špecifikuje, či sa práva pridávajú alebo odstraňujú, a režimy špecifikujú práva.
Triedy¶
| Písmeno | Trieda | Popis |
|---|---|---|
| u | používateľ | Vlastník súboru |
| g | skupina | Používatelia, ktorí sú členmi skupiny súboru |
| o | iní | Iní používatelia, ktorí nie sú vlastníkom alebo členmi skupiny súboru |
| a | všetci | Všetci používatelia |
Operátory¶
| Operátor | Popis |
|---|---|
| + | Pridá špecifikované režimy k špecifikovaným triedam |
| - | Odstráni špecifikované režimy zo špecifikovaných tried |
| = | Nastaví špecifikované režimy ako presné práva pre triedy |
Režimy¶
| Režim | Názov | Popis |
|---|---|---|
| r | čítanie | Čítanie súboru alebo vypísanie obsahu adresára |
| w | zapisovanie | Zapisovanie do súboru alebo adresára |
| x | spúšťanie | Spustenie súboru alebo prechod adresárom |
| X | špeciálne spúšťanie | Obmedzená verzia x uplatňovaná predovšetkým na adresáre |
| s | setgid | Spôsobí, že nové súbory v adresári budú nasledovať skupinu adresára |
Sady triedy/operátora/režimu môžu byť oddelené čiarkami.
Použitím vyššie uvedených definícií sa predchádzajúci príklad dá vykonať aj symbolicky:
Symbolická zmena režimu
login01:~ $ touch foo
login01:~ $ ls -l foo
-rw-rw-r-- 1 user group 0 Nov 16 05:58 foo
login01:~ $ chmod u+rwx,go=r foo
login01:~ $ ls -l foo
-rwxr--r-- 1 user group 0 Nov 16 05:58 foo
Unix skupiny¶
Každý používateľ v Unix systéme je členom jednej alebo viacerých Unix skupín vrátane svojej predvolenej skupiny (zvyčajne rovnakej ako používateľské meno).
Príkaz groups <username> možno použiť na vypísanie členstva
používateľa v skupinách alebo id <username> na zobrazenie skupín
spolu s ich číselnými identifikátormi.
Každý súbor (alebo adresár) v systéme má vlastníka a priradenú skupinu. Keď používateľ vytvorí súbor, skupinou súboru sa stane predvolená skupina používateľa.
Používateľ (vlastník) má možnosť zmeniť priradenú skupinu na ktorúkoľvek zo skupín, ktorých je členom, pomocou príkazu zmena skupiny:
chgrp <group> file
Tento príkaz sa bežne používa v spoločných adresároch, kde musia súbory patriť do zdieľanej projektovej skupiny.