8. díl - Linuxový terminál (Bash) - Oprávnění, instalace a procesy

Linux a UNIX Základy Linuxový terminál (Bash) - Oprávnění, instalace a procesy

V minulém dílu našeho seriálu o Linuxu jsme se naučili pracovat se soubory a získávat nápovědu pro různé typy příkazů. Dnešní díl je věnován uživatelským oprávněním, instalaci balíčků s aplikacemi a správě procesů.

Uživatelé

Linux je multiuživatelský operační systém. To znamená, že ho může používat na jednom počítači několik uživatelů a to dokonce najednou. UNIXové systémy mají kromě klasických uživatelů ještě uživatele root (superuser), který má kompletní přístup k systému. Ostatní uživatelé mají přístup jen do svých složek a nemohou např. instalovat aplikace.

V Ubuntu je účet root zakázán a např. instalace aplikací probíhá pomocí vynucení práv superuživatele na dobu nutnou pro instalaci softwaru nebo zkrátka pro akci, kterou nemůže běžný uživatel provést.

Přihlášení

sudo

Pokud před nějaký příkaz napíšeme sudo, vyžádá si od nás systém heslo a daný příkaz bude mít ke svému běhu plná oprávnění. Zkusme si to, nainstalujeme si nějakou aplikaci přes konzoli, např. aplikaci kolourpaint4. Docílíme toho příkazem apt-get install, který si za moment rozebereme.

Instalace balíčku v terminálu Linuxu pomocí sudo a apt-get

Vidíme, že bez sudo nám systém balíček odmítne nainstalovat.

Klon MSPaint KolourPaint na Linuxu
su

Pokud chceme, můžeme práva superuživatele vynutit na delší dobu a ne jen na jeden příkaz. Docílíme toho příkazem su. Jakmile se budeme chtít odhlásit, napíšeme exit. Příkaz su musíme na Ubuntu spustit pomocí sudo.

Získání práv superuživatele v Bashi pomocí příkazu su

Instalace balíčků

Jeden z nejdůležitějších konzolových příkazů je apt-get. Jeho název vychází z balíčkovacího systému APT (Advanced Packaging Tool), který používá Linuxová distribuce Debian a distribuce od ní odvozené (např. právě Ubuntu).

Balíček nainstalujeme pomocí následujícího příkazu:

sudo apt-get install nazev_balicku

To jsme si již vyzkoušeli výše s KolourPaint.

Odinstalace

Aplikaci následně odinstalujeme pomocí parametru remove nebo purge. Remove odstraní aplikaci a ponechá nastavení. Purge odstraní kompletně vše.

sudo apt-get purge nazev_balicku
Vyhledávání

Balíčky jsou často pojmenované trochu jinak než aplikace. Naštěstí v nich můžeme velmi jednoduše vyhledávat:

dpkg -l *hledany_vyraz*
Příkaz dpkg k vyhledání balíčku

Podobně můžeme vyhledávat i pomocí:

apt-cache search hledany_vyraz
Vyhledání balíčku v Linuxu
Informace

Jakmile nějakou zajímavou aplikaci objevíme, můžeme si nechat vypsat podrobnosti pomocí:

apt-cache show nazev_aplikace
Zobrazení informací o balíčku v Linuxu

Oprávnění

V úvodním dílu k Bashi jsme si ukazovali příkaz ls a jeho přepínač -l, díky kterému ls vypsal i přístupová práva k souboru nebo složce:

Oprávnění k souborům a složkám v Linuxu

Vysvětlili jsme si, že práva zapisujeme jako sekvenci 10ti znaků. Jejich význam je následující:

- r w x r w x r w x
1 2 3 4
  1. Pomlčka označuje soubor, d označuje složku.
  2. První trojice znaků označuje práva pro vlastníka
  3. Druhá trojice znaků označuje práva pro skupinu
  4. Poslední trojice označuje práva pro ostatní uživatele

Každá trojice se skládá ze 3 znaků. Na první pozici je buď r nebo -, což označuje zda může uživatel tento soubor číst či nikoli. w označuje zápis a x spouštění.

Skupina

V Linuxu se uživatelé sdružují do skupin a právě prostřední trojice označuje jaká práva má k souboru/složce skupina vlastníka.

Složka

U složek se oprávnění zapisuje úplně stejně jako u souborů, jen řetězec začíná znakem d. Jednotlivé znaky mají následující význam:

  • r - Umožňuje vypsat obsah složky (pokud do ni lze vstoupit).
  • w - Umožňuje změnu obsahu složky (pokud do ni lze vstoupit).
  • x - Umožní vstoupit do složky a zobrazit její obsah.
Práva v oktanové soustavě

Práva se často zapisují také v osmičkové soustavě. Představme si následující oprávnění:

-rwxrw-r--

Oprávnění můžeme převést na dvojkovou soustavu a to tak, že pokud je daná operace (znak) povolena, zapíšeme 1, jinak zapíšeme 0:

111110100

Když každou trojici nyní převedeme na desítkovou soustavu, získáme následující číslo:

764

Určitě byste přišli na to, že plná oprávnění k souboru zapíšeme jako 777.

chmod

Příkaz chmod (CHange MODe) umožňuje nastavit souboru nebo složce oprávnění a to právě pomocí oktanového zápisu. Před příkaz musíme vložit sudo pro vynucení práv.

Přidělení práv k souboru nebo složce v Linuxu pomocí příkazu chmod

Je dobré zmínit, že takto plná práva obvykle nenastavujeme.

chown

Pomocí příkazu chown (jako CHange OWNer) změníme vlastníka souboru. Určitě vás nepřekvapí, že k tomu potřebujeme oprávnění.

Příklad:

sudo chown karel soubor.xml
chgrp

Pomocí chgrp (CHange GRouP) změníme skupinu.

sudo chgrp skupina soubor.xml

Procesy

Linux je stejně jako Windows víceúlohový operační systém (anglicky multitasking). Aplikace běží jako procesy, o které se procesor střídá nebo které běží na různých jádrech. V procesech běží ve skutečnosti ještě vlákna, ale těmi se zabývat nebudeme. Zaměříme se na procesy a naučíme se je spravovat.

ps

Všechny běžící procesy uživatele vypíšeme pomocí příkazu ps (jako Process Status).

Výpis běžících procesů v Bash pomocí příkazu ps

Vidíme zde běžící terminál a samotný ps. Všimněte si, že každý proces má své ID (PDI), pomocí kterého ho můžeme např. ukončit. ID je nutné z důvodu, že jedna aplikace může běžet několikrát a systém by tedy jen podle jejího názvu nerozpoznal který proces má ukončit.

jobs

Kromě ps můžeme k výpisu procesů využít i shell builtin jobs. Protože je součástí shellu, použijeme ho v případě, když nás zajímají procesy, které jsme přes shell spustili.

jobs

Po spuštění nevidíme žádné procesy, jelikož nemáme žádný spuštěný. Napravme to a spusťme si např. gedit. Jakmile vyskočí okno a my se vrátíme zpět do terminálu, zjistíme, že je zaneprázdněný.

Gedit spuštěný jako proces v Bashi

Proces můžeme pozastavit tak, že se přepneme do terminálu a stiskneme CTRL + Z.

Gedit spuštěný jako proces v Bashi

bg

Pomocí příkazu bg spustíme pozastavený proces na pozadí (jako BackGround).

Gedit spuštěný jako proces v Bashi

Vidíme, že nyní reaguje gedit a zároveň je přístupný i terminál. Proces můžeme na pozadí spustit i hned napoprvé a to tak, že mu dáme jako parametr ampersand (&):

Gedit spuštěný jako proces v Bashi

fg

Pomocí příkazu fg můžeme proces přenést do popředí (jako ForeGround). Za příkaz fg můžeme zadat jeho ID po procentu (ID získáme z příkazu jobs) nebo ho spustit bez parametrů, kdy přenese do popředí poslední pozastavený proces nebo poslední proces v pozadí.

Gedit spuštěný jako proces v Bashi

kill

Poslední příkaz, který si v souvislosti s procesy zmíníme, je příkaz kill. Jak asi tušíte, slouží k ukončení daného procesu. Proces můžeme označit buď pomocí jeho PID (zjistíme příkazem ps) nebo pomocí procenta a čísla, které zjistíme pomocí příkazu jobs.

Ukončení procesu v Bash pomocí příkazu kill v Linuxu

Příště se podíváme na standardní vstup/výstup a vysvětlíme si co je to expanze a jak ji využívat.


 

  Aktivity (2)

Článek pro vás napsal David Čápka
Avatar
Autor pracuje jako softwarový architekt a pedagog na projektu ITnetwork.cz (a jeho zahraničních verzích). Velmi si váží svobody podnikání v naší zemi a věří, že když se člověk neštítí práce, tak dokáže úplně cokoli.
Unicorn College Autor se informační technologie naučil na Unicorn College - prestižní soukromé vysoké škole IT a ekonomie.

Jak se ti líbí článek?
Celkem (8 hlasů) :
55555


 



 

 

Komentáře
Zobrazit starší komentáře (6)

Avatar
Pavel Vybíral:

Tak to pak jo. Díky za ujasnění. :)

 
Odpovědět 6.8.2014 14:00
Avatar
mkub
Redaktor
Avatar
mkub:

prikaz killall na rozdiel od prikazu kill ako parameter neberie cislo ulohy, ale nazov ulohy a okrem toho killall ukoncuje vsetky ulohy s danym nazvom, resp. posiela signaly vsetkym uloham s tym nazvom

 
Odpovědět 18.8.2014 11:06
Avatar
-snaživec-
Člen
Avatar
-snaživec-:

Dá sa niak zistiť či je nainštalovaný niaky balík a ktorej verzie? Samozrejme v termináli

Odpovědět 2.12.2014 22:16
Pomali ďalej zájdeš.
Avatar
Odpovídá na -snaživec-
Petr Vaníček:

Dá a celkem snadno, jako vše v linuxu. ;-)

U RHEL-based (CentOS, Fedora,...)
rpm -qi nazev_baliku

U Debian-based (Ubuntu,...)
dpkg -s nazev_baliku

 
Odpovědět 3.12.2014 9:43
Avatar
Petr Vaníček:

Jinak na "zabíjení" procesů používám často spíš pkill.

 
Odpovědět  -1 3.12.2014 18:36
Avatar
Filip Šohajek
Redaktor
Avatar
Odpovídá na Petr Vaníček
Filip Šohajek:

Pro balíky nainstalované pomocí APT se dá ještě použít apt-cache policy nazev_baliku .

 
Odpovědět 3.12.2014 19:49
Avatar
-snaživec-
Člen
Avatar
Odpovídá na Petr Vaníček
-snaživec-:

Ja večšinou používam killall
alebo ps -ef a potom kill

Odpovědět  +1 4.12.2014 6:13
Pomali ďalej zájdeš.
Avatar
David.Landa
Člen
Avatar
David.Landa:

Na instalaci balíčků doporučím spíše aptitude nadstavbu nad apt-get. Sjednocuje příkazy pod jeden program a nedělá takovou paseku v systému, navíc má lepší mód vyhledávání i odstraňování balíčků.

 
Odpovědět  +1 8.2.2015 0:18
Avatar
Martin
Člen
Avatar
Martin:

Ahoj, chtěl bych se zeptat proč mi nejdou měnit práva ani uživatel na druhém disku fat32, vždy když změním práva tak se mi to hned vrátí a já to potřebuji abych si tam mohl vytvořit steamapps. Díky

 
Odpovědět 21.7.2015 23:45
Avatar
mkub
Redaktor
Avatar
Odpovídá na Martin
mkub:

prepac, ze odpovedam tak neskoro, nesledujem totiz pravidelne prispevky k clankom
a k tomu tvojmu problemu len tolko, ze fat32, ako ani iny fs zalozeneho na FAT nepodporuje unixoveatributy a tym neumoznuje nastavit ani prava uzivatelov, ale ak chces pouzivat Unix/Linux prava, tak pripajaj tento filesystem ako umsdos

 
Odpovědět 30.8.2015 0:45
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 16. Zobrazit vše