Přístupová práva

Vytvoření složky a přesunutí se do složky

  1. Pro účely příkladů si v našem domovském adresáři vytvoříme složku s názvem test. Do konzole zadáme mkdir test.
    xname00@bis:~$ mkdir test
  2. Do složky test se přesuneme. Zadáme cd test.
    xname00@bis:~$ cd test
    
    xname00@bis:~/test$
  3. Nyní se nacházíme ve složce test.

Vytvoření souboru a určení jeho vlastnictví a práv

  1. Vytvoříme soubor bůček.log, který budeme vlastnit my a skupina users. Práva budou rw-r--r-- (r znamená čtení, w znamená zápis, přičemž první tři znaky určují práva pro majitele souboru, další tři znaky určují práva pro skupinu uživatelů a poslední tři znaky určují práva pro všechny ostatní, vysvětlení je třeba tady).

    Do konzole zadáme touch bůček.log (přičemž jsme stále ve složce test).
    xname00@bis:~/test$ touch bůček.log
  2. Podíváme se, jestli se soubor doopravdy vytvořil a jaká jsou jeho práva a vlastnictví. Zadáme ls -l.
    xname00@bis:~/test$ ls -l
    
    total 0
    
    -rw-r--r-- 1 xname00 xname00 0 Apr 15 23:04 bůček.log
    
    
  3. Vidíme, že soubor bůček.log se v adresáři test nachází. Jeho defaultní práva jsou taková, jaká jsme chtěli. Jeho majitelé jsme my (první xname00), ale jeho skupina jsme také my (druhé xname00). Chceme, abychom skupina souboru nebyli my, ale skupina users.

    Zadáme chgrp users bůček.log (nejprve jsme zadali chgrp pro změnu skupiny, poté jsme napsali jméno skupiny a nakonec jméno souboru, u kterého skupinu měníme).
    xname00@bis:~/test$ chgrp users bůček.log
  4. Podíváme se, jestli je nyní skupina uživatelů u souboru doopravdy users. Zadáme opět ls -l.
    xname00@bis:~/test$ ls -l
    
    total 0
    
    -rw-r--r-- 1 xname00 users 0 Apr 15 23:04 bůček.log
    
    
  5. Vidíme, že vlastníci souboru jsme stále my (xname00), ale soubor nyní již patří i skupině users (users). Práva souboru říkají, že my soubor můžeme číst a zapisovat, lidé ze skupiny users ho mohou pouze číst a všichni ostatní ho mohou také pouze číst.

Vytvoření symbolického linku

  1. Vytvoříme symbolický link s názvem bůčínek.lnk, který bude odkazovat na soubor bůček.log.

    Do konzole zadáme ln -s bůček.log bůčínek.lnk (přepínač -s říká, že vytváříme symbolický link, poté zadáváme jméno souboru nebo adresáře, na který vytváříme odkaz, a nakonec jméno souboru, který bude tímto odkazem).
    xname00@bis:~/test$ ln -s bůček.log bůčínek.lnk
  2. Napíšeme ls -l, abychom se podívali, že se odkaz vytvořil.
    xname00@bis:~/test$ ls -l
    
    total 0
    
    -rw-r--r-- 1 xname00 users    0 Apr 15 23:04 bůček.log
    
    lrwxrwxrwx 1 xname00 xname00 11 Apr 15 23:32 bůčínek.lnk -> bůček.log
    
    
  3. Ve výpisu vidíme, že se v adresáři nachází dva soubory. První je obyčejný soubor bůček.log (že se jedná o obyčejný soubor poznáme podle pomlčky - před právy souboru na začátku řádku). Druhý soubor je odkaz bůčínek.lnk (na začátku řádku před právy vidíme písmeno l jako link a na konci řádku vidíme za šipkou soubor, na který tento odkaz odkazuje).

    Poznámka: Vytvářeli jsme symbolický (soft) link použitím přepínače -s. Soft linky mohou odkazovat na rozdíl od hard linků i na adresáře a mohou odkazovat i mimo souborový systém. Pokud bychom teď smazali soubor bůček.log, bude odkaz bůčínek.lnk odkazovat do prázdna. To by se nestalo v případě použití hard linku (bez zadání přepínače -s), u kterého se v případě aktualizace (přesunutí, smazání) souboru, na který link odkazuje, aktualizuje i tento link (pokud původní soubor smažeme, data na disku zůstanou a hard link na ně bude dál odkazovat). Počet hard linků na nějaký soubor ukazuje ve výpisu nahoře číslo po právech a před vlastníkem souboru (v našem případě u obou souborů 1).

Změna práv adresáře

  1. U složky test, kterou jsme si vytvořili v prvním návodu na této stránce, nastavíme práva tak, abychom my i skupina users mohli se složkou (a se soubory v ní) dělat úplně vše, ale ostatní vůbec nic.

    Pokud se ve složce test stále nacházíme, napíšeme cd .., abychom se dostali do nadřazené složky (do našeho domovského adresáře). V našem domovském adresáři zadáme ls -l.
    xname00@bis:~/test$ cd ..
    
    xname00@bis:~$ ls -l
    
    total 12816
    
    ...
    
    drwxr-xr-x 2 xname00 xname00    4096 Apr 15 23:32 test
    
    ...
    
    
  2. Ve výpisu všech souborů a složek v našem domovském adresáři najdeme složku test (složky poznáme tak, že mají na začátku řádku před právy písmeno d jako directory). Práva naší složky jsou rwxr-xr-x, tedy my můžeme se složkou dělat vše (r pro čtení jmen souborů, w pro vytváření souborů, x pro otevírání souborů), uživatelé ze skupiny souboru mohou pouze číst jména souborů v adresáři a otevírat je (následující tři znaky práv) a to samé mohou dělat i všichni ostatní (poslední tři znaky práv). S ohledem na zadání tedy s našimi právy nemusíme dělat nic, ovšem práva uživatelů ze skupiny budeme chtít rozšířit a práva všech ostatních naopak omezit.

    Jako první však složku zařadíme do skupiny users (ve vypísu vidíme, že složka k této skupině zatím nenáleží). Zadáme chgrp users test a poté opět ls -l, abychom si změnu skupiny ověřili.
    
    xname00@bis:~$ chgrp users test
    
    xname00@bis:~$ ls -l
    
    total 12816
    
    ...
    
    drwxr-xr-x 2 xname00 users      4096 Apr 15 23:32 test
    
    ...
    
    
  3. Vidíme, že složka nyní náleží ke skupině users. S právy jsme zatím ale nic neudělali. Na výpisu nahoře jsou práva uživatelů ve skupině označena zeleně (r-x). Chybí jim w, aby mohli soubory ve složce přepisovat (mazat, přidávat, upravovat).

    Napíšeme chmod g+w test (příkaz chmod mění práva, písmeno g určuje, že budeme pracovat s právy uživatelů ve skupině, znak + říká, že budeme práva přidávat, w říká, že chceme přidat právo pro přepisování souborů a test je název složky, kterou chceme ovlivnit).

    Poté napíšeme ls -l, abychom si změnu práv ověřili.
    xname00@bis:~$ chmod g+w test
    
    xname00@bis:~$ ls -l
    
    total 12816
    
    ...
    
    drwxrwxr-x 2 xname00 users      4096 Apr 15 23:32 test
    
    ...
    
    
  4. Vidíme, že uživatelé ve skupině mají nyní ke složce stejně jako my všechna práva. Teď odebereme všem ostatním všechna práva.

    Napíšeme chmod o-rwx test (příkaz chmod mění práva, písmeno o určuje, že budeme pracovat s právy všech ostatních, znak - říká, že budeme práva odebírat a rwx jsou všechna práva - samozřejmě bychom mohli napsat jenom rx, protože ve výpisu vidíme, že právo w není povoleno, takže ho není třeba odebírat).

    Po změně práv napíšeme opět ls -l, abychom si nový stav ověřili.
    xname00@bis:~$ chmod o-rwx test
    
    xname00@bis:~$ ls -l
    
    total 12816
    
    ...
    
    drwxrwx--- 2 xname00 users      4096 Apr 15 23:32 test
    
    ...
    
    
  5. Vidíme, že my máme všechna práva, uživatelé ze skupiny mají také všechna práva a ostatní nemají ke složce žádná práva.

    Poznámka: Nastavovali jsme práva pro složku. Pokud bychom chtěli stejná práva nastavit zároveň i pro soubory v této složce, požili bychom ještě parametr -R, tedy například chmod o-rwx -R test.

    Další poznámka: Práva u jednotlivých souborů se mění také příkazem chmod. Pokud bychom chtěli například u souboru soubor.log odebrat všechna práva všem ostatním, zadali bychom chmod o-rwx soubor.log.

Nastavení složky tak, aby všechny soubory v ní vytvořené patřily skupině této složky

  1. Nastavíme adresář test tak, aby všechny soubory v něm vytvořené patřily skupině users. Vyzkoušíme si, že tomu tak nyní není.

    Přepneme se do složky test (zadáme cd test), vytvoříme v ní soubor s názvem soubor (zadáme touch soubor) a vypíšeme si její obsah (zadáme ls -l).
    xname00@bis:~$ cd test
    
    xname00@bis:~/test$ touch soubor
    
    xname00@bis:~/test$ ls -l
    
    total 0
    
    ...
    
    -rw-r--r-- 1 xname00 xname00  0 Apr 16 00:32 soubor
    
    
  2. Vidíme, že nový soubor po vytvoření defaultně nepatří skupině users, ačkoli složka této skupině patří (to jsme nastavovali v předchozím návodu).

    Vrátíme se do našeho nadřazeného domácího adresáře (zadáme cd ..).
  3. Napíšeme chmod ug+s test (ug znamená my a lidé ze skupiny, + znamená, že "právo" přidáváme a s znamená, že chceme, aby nové soubory a podsložky dědily skupinu této složky a ne uživatele, který nové soubory a složky vytváří, jako je tomu teď).
  4. Vrátíme se do složky test (zadáme cd test) a vytvoříme zde soubor soubor2 (zadáme touch soubor2), abychom se přesvědčili, že nově vytvořený soubor zdědí skupinu složky (obsah složky si vypíšeme ls -l).
    
    xname00@bis:~$ cd test
    
    xname00@bis:~/test$ touch soubor2
    
    xname00@bis:~/test$ ls -l
    
    total 0
    
    ...
    
    -rw-r--r-- 1 xname00 xname00  0 Apr 16 00:32 soubor
    
    -rw-r--r-- 1 xname00 users    0 Apr 16 00:38 soubor2
    
    
  5. Vidíme, že soubor soubor2 nyní po vytvoření rovnou patří skupině users (na rozdíl od souboru soubor, který jsme vytvořili, když složka test ještě neměla nastavené přenášení skupiny na nové soubory a podsložky).

Procesy a balíčky

Efektivní vlastník a skupina procesu

  1. Zjistíme, kdo je efektivním vlastníkem procesu /usr/sbin/sks recon, jaká je efektivní skupina tohoto procesu a zjistíme i jejich odpovídající ID (EUID je číslo efektivního vlastníka, EGID je číslo efektivní skupiny).

    Použijeme příkaz ps (process status), kterému dále řekneme, které informace o procesech chceme vypsat (to určíme za parametrem -eo), tedy ps -eo euid,euser,egid,egroup,command (euid pro číslo efektivního uživatele, euser pro jméno efektivního uživatele, egid pro číslo efektivní skupiny, egroup pro jméno efektivní skupiny a command pro samotný proces).

    Protože by tento příkaz vypsal všechny procesy, ve kterých by bylo obtížné hledat náš jeden zkoumaný, použijeme ještě program grep (vypíše pouze řádky, které odpovídají zadanému regulárnímu výrazu). Celý příkaz tedy bude vypadat takto: ps -eo euid,euser,egid,egroup,command | grep 'sks recon'.
    
    xname00@bis:~$ ps -eo euid,euser,egid,egroup,command | grep 'sks recon'
    
    26129 xname00  26129 xname00  grep sks recon
    
      106 106        110 110      /usr/sbin/sks recon
    
    
  2. Při filtrování programem grep jsme ve výpisu procesů našli dva procesy. Ten první nás nezajímá, protože je to proces programu grep, který jsme právě použili pro vyhledání výrazu 'sks recon' (zároveň vidíme, že vlastník i skupina tohoto procesu jsme my podle našeho xname).

    Zajímá nás druhý proces. Ačkoli jsme si řekli o jméno vlastníka i skupiny, dostali jsme u zkoumaného procesu jenom čísla (106 jako EUID, tedy číslo efektivního vlastníka, a 110 jako EGID, tedy číslo efektivní skupiny), protože názvy byly v tomto případě příliš dlouhé (delší než 8 znaků).

    Chceme zjistit odpovídající jméno vlastníka a skupiny. Nejprve zjistíme jméno vlastníka, které je v souboru /etc/passwd. Příkazem cat si tedy obsah tohoto souboru vypíšeme (a programem grep ještě vyfiltrujeme jenom řádky obsahující číslo 106). Zadáme cat /etc/passwd | grep 106.
    
    xname00@bis:~$ cat /etc/passwd | grep 106
    
    debian-sks:x:106:110::/var/lib/sks:/bin/bash
    
    
  3. Zjistili jsme, že jméno efektivního vlastníka s číslem 106 procesu /usr/sbin/sks recon bylo debian-sks.

    Nyní zjistíme jméno efektivní skupiny podle jejího čísla 110. Jména skupin jsou v souboru /etc/group. Zadáme cat /etc/group | grep 110.
    
    xname00@bis:~$ cat /etc/group | grep 110
    
    debian-sks:x:110:
    
    
  4. Zjistili jsme, že jméno efektivní skupiny s číslem 110 procesu /usr/sbin/sks recon bylo také debian-sks.

Práva procesu

  1. Zjistíme, jestli proces z předchozího návodu (/usr/sbin/sks recon) může otevřít a přečíst soubor /var/log/mail.log.

    Již víme, že efektivním vlastníkem procesu je uživatel debian-sks. Podíváme se, do jakých skupin tento uživatel patří. Zadáme id debian-sks.
    
    xname00@bis:~$ id debian-sks
    
    uid=106(debian-sks) gid=110(debian-sks) groups=110(debian-sks)
    
    
  2. Vidíme, že uživatel debian-sks patří pouze do stejnojmenné skupiny debian-sks s číslem 110, což je efektivní skupina procesu z předchozího návodu.

    Chceme zjistit, jestli může proces z předchozího návodu otevřít a číst soubor mail.log, který se nachází ve složce log, která se nachází ve složce var. Podíváme se tedy na práva celé této cesty. Začneme složkou var. Pro vypsání informací o této složce zadáme ls -ld /var.
    
    xname00@bis:~$ ls -ld /var
    
    drwxr-xr-x 14 root root 4096 Oct 17 11:21 /var
    
    
  3. Vidíme, že majitelem složky je uživatel root, což není náš uživatel (debian-sks), takže práva majitele (tři písmena po písmenu d na začátku řádku) nás nezajímají. Dále vidíme, že ani skupina neodpovídá naší skupině, takže ani práva pro skupinu (podbarvena bíle) se natýkají našeho procesu. Můžeme se tedy řídit jedině právy pro všechny ostatní (podbarveny zeleně), která nám říkají, že všichni ostatní mohou číst jména souborů (r) ve složce i soubory samotné (x), tedy náš proces se do této složky dostane.

    U zkoumaného souboru však ještě nejsme, dále musíme stejným způsobem ověřit složku /log, která je ve složce /var. Zadáme ls -ld /var/log.
    
    xname00@bis:~$ ls -ld /var/log
    
    drwxr-xr-x 10 root root 12288 Apr 17 06:37 /var/log
    
    
  4. Situace je stejná jako v předchozím případě. Zkoumaný proces se tedy dostane jak do složky var, tak do podřazené složky log. Zbývá ověřit samotný soubor mail.log. Zadáme ls -ld /var/log/mail.log.
    
    xname00@bis:~$ ls -ld /var/log/mail.log
    
    -rw-r----- 1 root adm 1018576 Apr 17 18:57 /var/log/mail.log
    
    
  5. Zde je již situace jiná. Náš proces se sice dostane do složky, ve které se tento soubor nachází a přečte si jeho název (vzhledem k právům předchozích složek), ale samotný soubor mail.log nemá nastavena žádná práva pro ostatní (označeno zeleně). Majitelem tohoto souboru je root (to není náš uživatel) a skupina souboru je adm, do které náš uživatel nepatří (jak jsme si ověřili v prvním kroku tohoto návodu), takže práva pro majitele souboru ani skupinu nás nezajímají.

    Proces /usr/sbin/sks recon tedy soubor /var/log/mail.log nemůže otevřít, a tím ani přečíst jeho obsah.

Zjištění verze balíčku

  1. Zjistíme, jaká verze balíčku openssh-server je na serveru nainstalována. Seznam všech nainstalovaných balíčků bychom vypsali příkazem dpkg --list. V dlouhém seznamu bychom se nevyznali, proto výsledek vyfiltrujeme programem grep a zadáme dpkg --list | grep openssh-server.
    
    xname00@bis:~$ dpkg --list | grep openssh-server
    
    ii  openssh-server  1:6.0p1-4+deb7u2  amd64  secure shell (SSH) server, for secure access from remote machines
    
    
  2. ii na začátku řádku znamená, že je balíček nainstalovaný. Na řádku následuje jméno balíčku a poté jeho verze. První číslo podbarvené bíle je vždy celé a nezáporné (pokud není zadáno, předpokládá se 0, která se nezobrazuje), toto číslo se zvyšuje v případě chybného označení některé předchozí verze. Následuje hlavní verze balíčku (v našem případě 6.0p1). Poslední část verze (za pomlčkou) podbarevná zeleně (v našem případě 4+deb7u2) je označení revize stejného balíčku (například revize pro naši verzi operačního systému), které není povinné. Na konci řádku se nachází architektura procesoru, pro kterou je balíček určen (zde amd64, tedy verze pro 64 bitový operační systém a procesor) a stručný popis balíčku.

    Verze balíčku openssh-server nainstalovaná na serveru je 6.0p1.

Domů

Toto jsou soukromé studijní materiály. Všechny návody jsou poskytovány bez jakékoliv záruky. Všechny postupy provádíte na vlastní nebezpečí.