Nastavování oprávnění

Z MiS
(Rozdíly mezi verzemi)
Přejít na: navigace, hledání
(Zjištění nastavení práv: Rozepsán formát výpisu, dodány úkoly)
(Používáme termín „oprávnění“ (permission) místo „právo“ (right).)
 
(Není zobrazeno 12 mezilehlých verzí od 1 uživatele.)
Řádka 1: Řádka 1:
[[Category:VSE]]
+
[[Category:VSE]][[Category:Informatika]][[Category:OSY]][[Category:Linux]][[Category:Uživatelské účty]]
[[Category:Informatika]]
+
[[Category:OSY]]
+
  
== Práva pro přístup k souborům a složkám ==
+
== Oprávnění pro přístup k souborům a složkám ==
* Práva: r, w, e
+
V tomto článku se zabýváme klasickým systémem nastavení oprávění tak, jak fungoval v Unixu a jak funguje dodnes v mnoha distribucích GNU/Linuxu. Existují ale rozšíření jako SELinux, AppArmor a další.
* Význam se liší pro: soubory, složky
+
* Poznámka: představte si složku jako soubor, obsahující seznam názvů souborů a odkazů na jejich datové bloky
+
  
== Zjištění nastavení práv ==
+
Oprávnění k souboru si můžeme představit jako tabulku s devíti jednobitovými hodnotami (má oprávnění/nemá oprávnění):
* příkaz ls -l
+
  
; Příklad
+
{| class="wikitable"
 +
|--
 +
|
 +
!| r(ead)
 +
!| w(rite)
 +
!| x(eXecute)
 +
|-
 +
! scope="col"| u(ser)
 +
| ?
 +
| ?
 +
| ?
 +
|-
 +
! scope="col"| g(roup)
 +
| ?
 +
| ?
 +
| ?
 +
|-
 +
! scope="col"| o(thers)
 +
| ?
 +
| ?
 +
| ?
 +
|-
 +
|}
 +
 
 +
=== Oprávnění nastavujeme ===
 +
* <tt>u</tt>... vlastníkovi souboru (neříkejte „uživateli“, nebylo by zřejmé, kterému)
 +
* <tt>g</tt>... skupině, která soubor vlastní („vlastnické skupině“)
 +
* <tt>o</tt>... všem ostatním uživatelům
 +
 
 +
=== Význam jednotlivých oprávnění ===
 +
; Pro soubory:
 +
* <tt>r</tt>... zobrazit obsah souboru
 +
* <tt>w</tt>... upravit obsah souboru
 +
* <tt>x</tt>... spustit soubor
 +
; Pro složky/adresáře:
 +
* <tt>r</tt>... zobrazit soubory v&nbsp;adresáři
 +
* <tt>w</tt>... umožní přidávat, mazat, přejmenovávat soubory a složky
 +
* <tt>x</tt>... umožní přístup k souborům ve složce (v závislosti na oprávnění k danému souboru)
 +
 
 +
<div class="Poznamka">Poznámka: představte si složku/adresář jako soubor, obsahující seznam názvů souborů a odkazů na jejich datové bloky</div>
 +
 
 +
<div class="Priklad">
 +
; Úkoly:
 +
# Jaká oprávnění potřebujete mít pro provedení příkazů:
 +
#* <code>ls directory</code>
 +
#* <code>mv directory/file.txt file.txt</code>
 +
#* <code>mv directory/file.txt directory/file-backup.txt</code>
 +
#* <code>cp directory/file.txt file.txt</code>
 +
#* <code>cat directory/file.txt</code>
 +
#* <code>rm directory/file.txt</code>
 +
</div>
 +
 
 +
== Výpis stávajících oprávnění ==
 +
; Příkazem <code>ls -l</code>
 +
 
 +
Příklad výstupu:
 
  -rwxr--r-- 1 student skupina  1627  8. lis 10.52 soubor.txt
 
  -rwxr--r-- 1 student skupina  1627  8. lis 10.52 soubor.txt
  
Řádka 18: Řádka 68:
 
** - ... běžný soubor
 
** - ... běžný soubor
 
** d ... adresář (složka)
 
** d ... adresář (složka)
* práva k souboru
+
* oprávnění k souboru
 
** nejprve pro vlastníka, pak skupiny, pak pro ostatní
 
** nejprve pro vlastníka, pak skupiny, pak pro ostatní
 
** vždy v pořadí rwx
 
** vždy v pořadí rwx
 
** pokud je oprávnění nastaveno, je tam odpovídající písmeno
 
** pokud je oprávnění nastaveno, je tam odpovídající písmeno
 
** pokud oprávnění není nastaveno, pak je uvedena pomlčka
 
** pokud oprávnění není nastaveno, pak je uvedena pomlčka
* počet pevných linků (viz [[Souborový systém]])
+
* počet pevných linků (viz [[Ext2: typy souborů|typy souborů]])
 
* username vlastníka
 
* username vlastníka
 
* groupname skupiny, která soubor vlastní
 
* groupname skupiny, která soubor vlastní
Řádka 30: Řádka 80:
 
* název souboru
 
* název souboru
  
 +
<div class="Priklad">
 
; Úkol
 
; Úkol
* Může uživatel Franta zapisovat do souboru <tt>soubor.txt</tt>?
+
* Vypsali jste si oprávnění k souboru <tt>soubor.txt</tt>:
* Co má Franta dělat, aby do souboru mohl zapsat?
+
''$'' ls -l
 +
-rwxr----- 1 student skupina  1627  8. lis 10.52 soubor.txt
 +
* Může uživatel <code>franta</code> zapisovat do souboru <tt>soubor.txt</tt>?
 +
* Co má případně <code>franta</code> dělat, aby do souboru mohl zapsat?
 +
* Může uživatel <code>franta</code> obsah souboru číst?
 +
* Co má případně <code>franta</code> dělat, aby obsah souboru mohl číst?
 +
</div>
  
== Nastavení práv ==
+
== Změna oprávnění (<code>chmod</code>) ==
=== Příkaz chmod ===  
+
* Dva režimy: změna všech oprávnění naráz, nebo změna jednoho oprávnění.
* Dva režimy:
+
; Kompletní sada oprávnění naráz:
** číselné vyjádření práv: nastaví kompletní sadu oprávnění naráz
+
* Zapíšeme oprávnění jako posloupnost jedniček (má oprávnění) a nul (nemá oprávnění) v pořadí: <tt>u(rwx) g(rwx) o(rwx)</tt>.
** nastavení jednotlivých oprávnění.
+
* Trojice přečteme jako dvojkový zápis desítkových čísel.
 +
<div class="Priklad">
 +
Představme si, že chceme zapsat, že vlastník má všechna oprávnění, skupina nemůže zapisovat a ostatní mohou jen číst:
 +
  u  g  o
 +
rwx rwx rwx
 +
111 101 100
 +
  7  5  4
 +
</div>
 +
Použití:
 +
chmod 754 data.txt
 +
; Nastavení jednotlivých oprávnění:
 +
* Píšeme: <code>chmod ''komu''+/-''co'' ''soubor''</code>
 +
** <code>''komu''</code>... <code>u</code>, <code>g</code>, <code>o</code>, ev. <code>a</code> jako ''all'' pro všechny typy.
 +
** <code>+</code>... nastavit oprávnění nebo <code>-</code>... odebrat oprávnění,
 +
** <code>''co''</code>... <code>r</code>, <code>w</code>, <code>x</code>.
 +
Příklad:
 +
chmod u+r data.txt
  
=== Změna vlastníka a skupiny ===
+
== Změna vlastníka a skupiny ==
* Při vytvoření souboru
+
; Při vytvoření souboru
** Vlastníkem souboru je na začátku ten, kdo ho vytvoří.
+
* Vlastníkem souboru se při vytvoření souboru stane ten, kdo soubor vytvoří.
** Soubor vlastní skupina, která je primární skupinou vlastníka.
+
* Nový soubor vlastní skupina, která je primární skupinou vlastníka.
* chown
+
; <code>chown</code>
** změna vlastníka
+
* změna vlastníka
** obvykle může provádět pouze root (lze změnit)
+
* obvykle může provádět pouze administrátor (''root'')(toto chování lze změnit)
*chgrp
+
sudo chown xmarek data.txt
** změna vlastnické skupiny
+
; <code>chgrp</code>
** může provádět vlastník a root
+
* změna vlastnické skupiny
 +
* kdo může měnit vlastnickou skupinu:
 +
*# vlastník souboru či složky může přiřazovat soubor jen skupinám, do kterých sám patří
 +
*# administrátor (''root'') může přiřadit libovolnou skupinu.
 +
chgrp ucetni data.txt
  
 
== Opakování ==
 
== Opakování ==
* Zjistěte vlastníka souboru /etc/passwd.
+
* Zjistěte vlastníka souboru <tt>/etc/passwd</tt>.
* Říká se, že administrátor počítače může v klasických desktopových distribucích všechno. Není to v rozporu s výše uvedeným nastavením práv???
+
* Říká se, že administrátor počítače může v klasických desktopových distribucích všechno. Není to v rozporu s výše uvedeným nastavením oprávnění???
 
* Jak zjistíte, zda uživatel může soubor smazat?
 
* Jak zjistíte, zda uživatel může soubor smazat?
  

Aktuální verze z 14. 4. 2021, 07:02


Obsah

Oprávnění pro přístup k souborům a složkám

V tomto článku se zabýváme klasickým systémem nastavení oprávění tak, jak fungoval v Unixu a jak funguje dodnes v mnoha distribucích GNU/Linuxu. Existují ale rozšíření jako SELinux, AppArmor a další.

Oprávnění k souboru si můžeme představit jako tabulku s devíti jednobitovými hodnotami (má oprávnění/nemá oprávnění):

r(ead) w(rite) x(eXecute)
u(ser)  ?  ?  ?
g(roup)  ?  ?  ?
o(thers)  ?  ?  ?

Oprávnění nastavujeme

Význam jednotlivých oprávnění

Pro soubory
Pro složky/adresáře
Poznámka: představte si složku/adresář jako soubor, obsahující seznam názvů souborů a odkazů na jejich datové bloky
Úkoly
  1. Jaká oprávnění potřebujete mít pro provedení příkazů:
    • ls directory
    • mv directory/file.txt file.txt
    • mv directory/file.txt directory/file-backup.txt
    • cp directory/file.txt file.txt
    • cat directory/file.txt
    • rm directory/file.txt

Výpis stávajících oprávnění

Příkazem ls -l

Příklad výstupu:

-rwxr--r-- 1 student skupina   1627  8. lis 10.52 soubor.txt
Význam znaků
Úkol
  • Vypsali jste si oprávnění k souboru soubor.txt:
$ ls -l
-rwxr----- 1 student skupina   1627  8. lis 10.52 soubor.txt
  • Může uživatel franta zapisovat do souboru soubor.txt?
  • Co má případně franta dělat, aby do souboru mohl zapsat?
  • Může uživatel franta obsah souboru číst?
  • Co má případně franta dělat, aby obsah souboru mohl číst?

Změna oprávnění (chmod)

Kompletní sada oprávnění naráz

Představme si, že chceme zapsat, že vlastník má všechna oprávnění, skupina nemůže zapisovat a ostatní mohou jen číst:

 u   g   o
rwx rwx rwx
111 101 100
 7   5   4

Použití:

chmod 754 data.txt
Nastavení jednotlivých oprávnění

Příklad:

chmod u+r data.txt

Změna vlastníka a skupiny

Při vytvoření souboru
chown
sudo chown xmarek data.txt
chgrp
chgrp ucetni data.txt

Opakování

Zdroje

Osobní nástroje
Jmenné prostory
Varianty
Akce
Výuka
Navigace
Nástroje