Nastavování oprávnění

Z MiS
(Rozdíly mezi verzemi)
Přejít na: navigace, hledání
(Vytvoření stránky)
 
(Používáme termín „oprávnění“ (permission) místo „právo“ (right).)
 
(Není zobrazeno 14 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]]
+
  
*Zdroje
+
== Oprávnění pro přístup k souborům a složkám ==
**abclinuxu.cz > Clanky > Navody > Unixove-nastroje-5-opravneni-chmod-chown-chgrp <http://www.abclinuxu.cz/clanky/navody/unixove-nastroje-5-opravneni-chmod-chown-chgrp>
+
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ší.
**Příkaz chmod
+
 
***catcode.com > Teachmod <http://catcode.com/teachmod/>
+
Oprávnění k&nbsp;souboru si můžeme představit jako tabulku s&nbsp;devíti jednobitovými hodnotami (má oprávnění/nemá oprávnění):
**L* GUIDE
+
 
**Student chápe systém nastavení uživatelských práv v systému Linux. Umí své soubory zpřístupnit ostatním uživatelům.
+
{| class="wikitable"
**Student umí přidat nového uživatele, nastavit si heslo.
+
|--
**Pracuje s uživatelským adresářem, zná zkratku ~.
+
|
*Nastavování práv
+
!| r(ead)
** *UK* Zjistěte sami na Internetu
+
!| w(rite)
***Komu můžeme přiřadit práva k souborům (3 subjektům)
+
!| x(eXecute)
***Práva se označují písmenky r, w, x, co písmenka znamenají pro soubor a co pro adresář
+
|-
***Co vypíše příkaz ls -l (hlavně význam prvních 10 písmenek)
+
! scope="col"| u(ser)
**Práva pro přístup k souborům
+
| ?
***R, W, E
+
| ?
***význam pro
+
| ?
****soubor
+
|-
*****Na začátek spustitelných skriptů: #!/bin/sh
+
! scope="col"| g(roup)
****adresář
+
| ?
*****Představa
+
| ?
******složka jako seznam názvů souborů a odkazů na jejich data
+
| ?
******r
+
|-
******w
+
! scope="col"| o(thers)
******x
+
| ?
*******přístup k souborům ve složce
+
| ?
**Zjištění práv
+
| ?
***Jak zjistíte vlastníka souboru,
+
|-
***práva vlastníka, skupiny a všech k souboru,
+
|}
***do kterých skupin patří uživatel?
+
 
**Nastavování práv
+
=== Oprávnění nastavujeme ===
***chmod
+
* <tt>u</tt>... vlastníkovi souboru (neříkejte „uživateli“, nebylo by zřejmé, kterému)
***číselné vyjádření práv
+
* <tt>g</tt>... skupině, která soubor vlastní („vlastnické skupině“)
***změna jednotlivých práv
+
* <tt>o</tt>... všem ostatním uživatelům
**Se SUDO mohu stejně všechno!
+
 
**Změna vlastníka a skupiny
+
=== Význam jednotlivých oprávnění ===
***Vlastníkem souboru je na začátku ten, kdo ho vytvoří.
+
; Pro soubory:
***chown
+
* <tt>r</tt>... zobrazit obsah souboru
****změna vlastníka
+
* <tt>w</tt>... upravit obsah souboru
****obvykle může provádět pouze root
+
* <tt>x</tt>... spustit soubor
*****Lze změnit v jádře
+
; Pro složky/adresáře:
*****Macro: int _POSIX_CHOWN_RESTRICTED
+
* <tt>r</tt>... zobrazit soubory v&nbsp;adresáři
***chgrp
+
* <tt>w</tt>... umožní přidávat, mazat, přejmenovávat soubory a složky
****změna vlastnické skupiny
+
* <tt>x</tt>... umožní přístup k souborům ve složce (v závislosti na oprávnění k danému souboru)
****může provádět vlastník a root
+
 
***UK* Nastavování práv
+
<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>
****SUK* Soubor jen pro skupinu
+
 
****Vytvořte ve své domovské složce adresář 3b
+
<div class="Priklad">
****Adresář bude přístupný všem uživatelům ve skupině 3b (kterou si vytvoříte)
+
; Úkoly:
****Vytvořte uživatele Jakub, který bude ve skupině 3b
+
# Jaká oprávnění potřebujete mít pro provedení příkazů:
****Vytvořte uživatele Franta, který tam nebude
+
#* <code>ls directory</code>
****Ve složce 3b vytvořte soubor ahoj.txt.
+
#* <code>mv directory/file.txt file.txt</code>
****Zařiďte, aby ho Franta mohl přečíst, nikoli však smazat, ani do něj zapisovat.
+
#* <code>mv directory/file.txt directory/file-backup.txt</code>
****Jakub může číst, psát, ale nemůže mazat.
+
#* <code>cp directory/file.txt file.txt</code>
***Starší
+
#* <code>cat directory/file.txt</code>
*****PR* Hromadné vytváření uživatelů
+
#* <code>rm directory/file.txt</code>
*****Vytvořte všechny uživatele třídy a odpovídající skupinu
+
</div>
*****Vytvořte složku, ke které budou mít přístup všichni uživatelé systému.
+
 
*****UK*
+
== Výpis stávajících oprávnění ==
*****Máme složku /var/ftp, vlastník má být root, skupina ftpusers. Vlastník všechna, skupina taktéž, ostatní jen číst
+
; Příkazem <code>ls -l</code>
*****Vytvořte složku public ve své domovském adresáři, bude přístupný kompletně všem.
+
 
******Co vypíše příkaz ls -l ~ | grep public
+
Příklad výstupu:
*****Složku public z předchozího zpřístupněte pouze skupině kamaradi, ostatním uživatelům přístup zakažte.
+
-rwxr--r-- 1 student skupina  1627  8. lis 10.52 soubor.txt
****Zpřístupněte
+
 
***** soubor pozdrav.txt ve svém ~ ostatním uživatelům pro čtení.
+
; Význam znaků
*****soubor vzkazy.txt ve svém $HOME ostatním i pro zápis.
+
* první znak: typ souboru
*****Nebudou ale moci vypsat obsah vašeho ~.
+
** - ... běžný soubor
*****res
+
** d ... adresář (složka)
******d: --x, f: r--
+
* oprávnění k souboru
*****UK* ??? V /etc/fstab?
+
** nejprve pro vlastníka, pak skupiny, pak pro ostatní
*****Nastavte práva pro montování disku s Windows.
+
** vždy v pořadí rwx
*****Nastavte práva pro montování disků s Novellem.
+
** pokud je oprávnění nastaveno, je tam odpovídající písmeno
**Další
+
** pokud oprávnění není nastaveno, pak je uvedena pomlčka
***Uživatelé os: připojonání disků s uživatelskými právy, vlastník, skupina
+
* počet pevných linků (viz [[Ext2: typy souborů|typy souborů]])
***UK* Otázky
+
* username vlastníka
***Jak zjistíte, zda uživatel může soubor smazat | přejmenovat,...
+
* groupname skupiny, která soubor vlastní
***Není nastavování práv v rozporu s tím, že administrátor „může všechno“?
+
* velikost souboru
 +
* datum poslední změny
 +
* název souboru
 +
 
 +
<div class="Priklad">
 +
; Úkol
 +
* Vypsali jste si oprávnění k souboru <tt>soubor.txt</tt>:
 +
''$'' 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>
 +
 
 +
== Změna oprávnění (<code>chmod</code>) ==
 +
* Dva režimy: změna všech oprávnění naráz, nebo změna jednoho oprávnění.
 +
; Kompletní sada 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>.
 +
* 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 ==
 +
; Při vytvoření souboru
 +
* Vlastníkem souboru se při vytvoření souboru stane ten, kdo soubor vytvoří.
 +
* Nový soubor vlastní skupina, která je primární skupinou vlastníka.
 +
; <code>chown</code>
 +
* změna vlastníka
 +
* obvykle může provádět pouze administrátor (''root'')(toto chování lze změnit)
 +
sudo chown xmarek data.txt
 +
; <code>chgrp</code>
 +
* 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í ==
 +
* 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 oprávnění???
 +
* Jak zjistíte, zda uživatel může soubor smazat?
 +
 
 +
== Zdroje ==
 +
* [http://www.abclinuxu.cz/clanky/navody/unixove-nastroje-5-opravneni-chmod-chown-chgrp AbcLinuxu.cz > Unixové nástroje, oprávnění, chmod-chown-chgrp]
 +
* [http://catcode.com/teachmod/ catcode.com > Teachmod]

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