Preskočiť na obsah

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.

Created by: Marek Štekláč