PredchádzajúciHoreDomovNasledujúci

Prístupové práva

V unixových systémoch sú nad jednotlivými komponentmi (napr. nad jednotlivými položkami v súborovom systéme) definované tri základné prístupové práva:

Presná interpretácia týchto práv môže byť rôzna, podľa toho o aký komponent OS sa jedná. V súborovom systéme sa tieto práva interpretujú nasledovne:

Pre rôzne komponenty systému sú definované aj ďalšie typy prístupových práv.

Základná schéma prístupových práv

Pri základnej správe prístupových práv sú nad každou položkou OS definované tri skupiny používateľov:

Pre každú skupinu používateľov môže byť nad jednotlivými položkami definovaná samostatná sada prístupových práv. Takýmto spôsobom je možné spolu s nastavením vlastníka a skupiny definovať rôzne práva pre rôznych používateľov. Sada prístupových práv je reprezentovaná bitovou maskou.

Výpis prístupových práv

Vlastníka, skupinu a prístupové práva v súborovom systéme je na príkazovom riadku možné zistiť pomocou príkazu ls s prepínačom -l:

$> ls -l /etc/passwd /dev/ttyS0 /sbin/reboot
crw-rw---- 1 root dialout 4, 64 Jun 17 08:55 /dev/ttyS0
-rw-r--r-- 1 root root     1673 Feb 26 10:33 /etc/passwd
-rwxr-xr-x 1 root root    13848 Jan 18  2013 /sbin/reboot

Znaky 2 až 10 v predchádzajúcom výpise indikujú prístupové práva na vypísaných položkách. Znaky 2, 3 a 4 sú práva vlastníka, 5, 6 a 7 sú práva skupiny a 8, 9, 10 sú práva ostatných.

Zmena prístupových práv

Prístupové práva v súborovom systéme je možné meniť pomocou príkazu chmod nasledovne:

chmod mode <cesta1> [cesta2] ... [cestaN]

Parameter mode môže byť dvojaký:

Bitová maska

Pri použití bitovej masky sú existujúce prístupové práva úplne nahradené novou sadou prístupových práv pre všetky skupiny používateľov. Maska pozostáva z číslic v osmičkovej sústave, pričom každá číslica nastavuje práva pre jednotlivé skupiny používateľov v poradí u, g a o. Jednotlivé práva r, w a x sú reprezentované bitmi 2, 1 a 0 t.j.:

právo

r

w

x

bit

2

1

0

mocnina

2^2

2^1

2^0

hodnota

4

2

1

Jednotlivé hodnoty masky sú vytvorené sčítaním hodnôt pre príslušne bity:

r

w

x

hodnota

poznámka

0

+

0

+

0

=

0

žiadne práva

0

+

0

+

1

=

1

iba execute

0

+

2

+

0

=

2

iba write

0

+

2

+

1

=

3

write a execute

4

+

0

+

0

=

4

iba read

4

+

0

+

1

=

5

read a execute

4

+

2

+

0

=

6

read a write

4

+

2

+

1

=

7

read, write a execute

Celková maska pre používateľov je zostavená aspoň z troch číslic. Napríklad:

u

g

o

poznámka

0

0

0

Nikto nemá žiadne práva

4

0

0

Vlastník má práva na čítanie ostatní žiadne práva

7

5

0

Vlastník má všetky práva, skupina má práva read a execute, ostatní žiadne práva

7

7

7

Všetci majú všetky práva

Vplyv nastavenia prístupových práv na súboroch, ich odobratie a pridelenie si vyskúšate nasledovne:

Cvičenie

Zmente aktuálny pracovný adresár:

$> cd ~/os/cv01

Cvičenie Vytvorte súbor file.txt a odoberte všetkým všetky prístupové práva:

$> echo "blabla" > file.txt
$> chmod 000 file.txt
$> ls -l file.txt
---------- 1 user user 7 Jun 17 16:57 file.txt

Cvičenie Vyskúšajte prečítať obsah súboru:

$> cat file.txt
cat: filetxt: Permission denied

Cvičenie Operačný systém zabránil procesu bežiacemu pod vašim používateľským účtom aby prečítal obsah súboru, pretože nemáte príslušné právo. Teraz si právo na čítanie pridajte a skúste prečitať obsah súboru:

$> chmod 400 file.txt
$> ls -l file.txt
-r-------- 1 user user 7 Jun 17 16:57 file.txt
$> cat file.txt
blabla

Cvičenie Teraz skúste zmeniť obsah súboru:

$> echo "bleble" > file.txt
bash: file.txt: Permission denied

Cvičenie Prideľte si právo na zápis do súboru a skúste zmeniť jeho obsah:

$> chmod 600 file.txt
$> ls -l file.txt
-rw------- 1 user user 7 Jun 17 16:57 file.txt
$> echo "bleble" > file.txt
$> cat file.txt
bleble

Spustenie súboru a pridelenie príslušných práv bude predmetom niektorého z ďalších cvičení.

Vplyv jednotlivých práv na adresároch si vyskúšate nasledovne:

Cvičenie

Vytvorte adresár testdir a odoberte všetkým všetky prístupové práva:

$> mkdir testdir
$> chmod 000 testdir
$> ls -ld testdir
d--------- 1 user user 6 Jun 17 16:57 testdir

Cvičenie Skúste vypísať obsah vytvoreného adresára:

$> ls testdir/
ls: cannot open directory testdir/: Permission denied

Cvičenie Operačný systém opäť zabránil procesu, vykonávanému pod vaším používateľským účtom, vykonať operáciu, na ktorú nemáte príslušné prístupové právo.

Prideľte si právo r, a opäť skúste vypísať obsah adresára:

$> chmod 400 testdir
$> ls -ld testdir
dr-------- 1 user user 6 Jun 17 16:57 testdir
$> ls testdir/

Cvičenie Teraz vyskúšajte zmeniť obsah adresára; vytvorte v adresári nový súbor:

$> touch testdir/file
touch: cannot touch `testdir/file': Permission denied

Cvičenie Prideľte si právo w a skúste znova:

$> chmod 600 testdir
$> ls -ld testdir
drw------- 1 user user 6 Jun 17 16:57 testdir
$> touch testdir/file
$> ls testdir/
file

Cvičenie Teraz vyskúšajte zmeniť aktuálny pracovný adresár:

$> cd testdir/
bash: cd: testdir/: Permission denied

Cvičenie Prideľte si právo x a zopakujte predchádzajúci príkaz:

$> chmod 700 testdir
$> ls -ld testdir
drwx------ 1 user user 6 Jun 17 16:57 testdir
$> cd testdir/
$> pwd
/home/pouzivatel/os/cv01/testdir

Inštrukcie na zmenu

V mnohých situáciách potrebujeme iba upraviť existujúce práva, bez zmeny ostatných: napríklad prideliť vlastníkovi práva na zápis, odobrať ostatným práva na čítane a pod. V takomto prípade je možné parameter mode zadať ako trojicu znakov z nasledujúcich možností:

sada

zmena

právo

u

r

g

+[a]

w

o

-[b]

x

a[c]

[a] Pridať právo

[b] Odobrať právo

[c] All -- všetci (vlastník, skupina, ostatní)

Napriklad:

# vlastnikovi prida pravo na zapis
$> chmod u+w file
$> ls -l file
# ostatnym prida pravo na citanie
$> chmod o+r file
$> ls -l file
# vsetkym odoberie pravo na spustenie
$> chmod a-x file
$> ls -l file

Zmena vlastníka a skupiny

Vlastníka a skupinu položky v súborovom systéme je možné zmeniť pomocou príkazu chown:

chown [uid][:gid] file

Hodnoty uid a gid môžu byť zadané ako numerické identifikátory používateľa resp. skupiny alebo aj ako symbolické názvy (prihlasovacie meno a názov skupiny). Napríklad:

# novým vlastníkom súboru sa stane používateľ s /uid/ 1001
$> chown 1001 file
# novým vlastníkom súboru sa stane používateľ s /loginom/ bob
$> chown bob file
# zmena vlastníka aj skupiny
$> chown bob:studenti file
[Dôležité] Dôležité

Unixové systémy z bezpečnostných dôvodov väčšinou neumožňujú bežným používateľom priamo odovzdať súbory iným používateľom bez ich zásahu, t.j. zmeniť vlastníka súboru. Preto príkaz chown môže úspešne vykonať iba administrátor systému.

[Tip] Tip

Ak chcete súbor alebo adresár dať k dispozícií inému používateľovi, môžte na to použiť dočasný adresár.

Iba skupinu položky v súborovom systéme je možné zmeniť pomocou príkazu chgrp:

chgrp gid file

Hodnota gid môže byť opäť zadaná ako číselný identifikátor alebo názov skupiny. Napríklad:

$> chgrp studenti file
[Dôležité] Dôležité

Bežný používateľ systému môže z bezpečnostných dôvodov súboru priradiť iba jednu zo skupín, ktorej je členom.


PredchádzajúciHoreDomovNasledujúci