Základy příkazové řádky
I když již není znalost unixových příkazů pro soužití s Linuxem natolik důležitá jako dříve, není od věci osvojit si alespoň několik základních příkazů. Důvodem je, že
„klikací“ aplikace pro nastavení systému se mohou lišit pro jednotlivé verze distribuce - příkazy však zůstávají neměnné. Navíc v případě, kdy budete nuceni pracovat např. v záchranném módu, budete odkázáni výhradně na příkazový řádek. Sečteno a podtrženo - znalost několika málo příkazů Vás nezabije, ale posílí (navíc zažije určitě řadu situací, kdy se Vám tato znalost bude i hodit). Jestliže Vás však tato kapitola už od prvního pohledu odpuzuje, můžete ji přeskočit.
V následujícím textu budeme zaměňovat pojmy příkazový řádek a terminál. Příkazovým řádkem / terminálem budeme rozumět rozhraní, pomocí něhož zadává uživatel příkazy. Dalším pojmem, se kterým se zde můžete setkat, je shell. shell je zjednodušeně řečeno software, který umožňuje komunikaci mezi uživatelem a jádrem OS Linux - je totiž zodpovědný za interpertaci příkazů zadávaných uživatelem prostřednictvím příkazového řádku. shell tak brání tomu, aby uživatelé přistupovali přímo k jádru, což lze chápat do jisté míry jako bezpečnostní prvek.
Pro OS Linux bylo vyvinuto několik shellů. Standardním shellem je bash, který bude s největší pravděpodobností také součástí Vaší instalace. bash je akronymem sousloví „Bourne Again SHell“ a je pokračovatelem původního shellu, který napsal Stephen Bourne koncem 70.let. Samotný bash pak pochází z roku 1987.
Dalším hojně používaným pojmem je příkaz. Příkaz není v podstatě nic jiného než soubor, který má nastaveno právo spouštění (viz. kapitola Definování přístupových práv). Většina těchto souborů je pak uložena v adresářích /sbin
, /bin
, /usr/bin
a /usr/sbin
. Jestliže chceme zadat daný příkaz stačí ve většině případů do příkazové řádky napsat pouze jeho jméno.
ls -la
Je však možné také zadat kompletní cestu.
/bin/ls -la
V případě, že adresář, ve kterém se nachází daný příkaz, není definován v proměnné PATH
, je uvedení celé cesty nezbytné (viz. kapitola Proměnná PATH).
Příkazový řádek otevřete v grafickém prostředí Gnome pomocí nabídky Aplikace → Příslušenství → Terminál. V historii zadaných příkazů můžete listovat pomocí šipky nahoru a dolů. Dále je možné automaticky doplňovat názvy souborů a adresářů pomocí klávesy tabelator (stačí napsat část názvu souboru nebo adresáře a stisknout klávesu tabelatoru).
Poznámka: Zde uvedené příkazy lze označit jako naprosté minimum příkazové řádky - seznam příkazů není ani zdaleka vyčerpávající.
Obecné informace
Proměnná PATH
Jak již bylo zmíněno v úvodu, aby bylo možné spustit daný příkaz pouze zadáním jména bez specifikování celé cesty, musí být adresář, ve kterém je příkaz uložen, definován v proměnné PATH
. Obsah této proměnné získáte pomocí příkazu
echo $PATH /usr/kerberos/bin:/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:/home/macky/bin
Na výše uvedeném výpisu je vidět, že proměnná PATH
obsahuje cesty k několika adresářům oddělených dvojtečkou. Jestliže uživatel zadá příkaz, jsou postupně v pořadí daném výpisem procházeny jednotlivé adresáře. V případě, že některý z těchto adresářů bude obsahovat soubor se stejným jménem jako jméno příkazu, pokusí se ho shell spustit.
ls -la
Jestliže se tento soubor spustit nepodaří (např. jestliže není nastaveno právo spouštění) nebo jestliže žádný z adresářů stejnojmenný soubor neobsahuje, nahlásí shell chybu.
V případě, že soubor sice existuje, avšak jeho adresář není specifikován v proměnné PATH
, jsou možná dvě řešení. Prvním a nejjednodušším řešením je uvést celou cestu k danému souboru.
/bin/ls -la
Druhou možností je pak přidat daný adresář do proměnné PATH
. Editaci této proměnné může provádět pouze superuživatel. Je také dobré si rozmyslet, zda-li je opravdu nutné daný adresář do proměnné PATH
přidávat. Jestliže totiž přidáme množství adresářů s velkým počtem souborů, může dojít z důvodu procházení těchto adresářů k prodloužení zpracování příkazů. Dalším aspektem je pak bezpečnostnost. Jestliže bychom např. přidali adresář na začátek proměnné PATH
a tento adresář nezabezpečili proti zápisu pro ostatní uživatele, může dojít k „podstrčení“ příkazu. shell totiž postupně prochází všechny adresáře a spustí první soubor prvního adresáře, jehož jméno se shoduje se jménem příkazu. Příkaz ls -la
by pak namísto výpisu obsahu pracovního adresáře mohl např. mazat soubory.
Adresář /cesta/k/adresari
je možné na konec proměnné PATH
přidat pomocí příkazu
$PATH = echo $PATH:/cesta/k/adresari
Spuštení vícero příkazů
Standardně zapisujeme jeden příkaz na jeden řádek.
cd /usr/sbin ls -la
Znak středník (;) umožňuje spustit několik příkazů po sobě v pořadí uvedeném v příkazové řádce.
cd /usr/sbin; ls -la
Tento zápis je ekvivalentní s výše uvedeným.
Zástupné znaky
Zástupné znaky (tzv. wildcards) umožňují specifikovat několik jmen souborů / adresářů najednou.
Uvažujme soubory text.txt
, textik.txt
a latex.tex
. Jestliže bysme chtěli zjistit např. nastavená práva přiřazená těmto souborům pro jednotivé uživatele, můžeme použít tři samostatné příkazy
ls -la text.txt ls -la text.tex ls -ls latex.tex
nebo jeden příkaz.
ls -la *tex*.t*
Zástupný znak hvězdička (*) představuje libovolný počet znaků (včetně žádného znaku).
Dalším zástupným znakem je otazník (?), kterým nahrazujeme libovolný jeden znak. Soubory text.txt
a text.tex
tedy můžeme pomocí tohoto zástupneho znaku výjádřit jako
ls -la text.t??
Libovolný znak z vybrané skupiny znaků lze zapsat pomocí dvojice hranatých závorek ([ , ]), které obsahují dané znaky. Uvažujme soubory text_a.txt
, text_A.txt
1), text_b.text
, text_B.txt
, text_1.txt
a text_2.txt
. Příkaz
ls -la text_[a,b].txt
nám vypíše údaje o souborech text_a.txt
a text_b.txt
. Příkaz
ls -la text_[A-B].txt
zase vypíše údaje o souborech text_A.txt
a text_B.txt
. Údaje o souborech text_1.txt
a text_2.txt
získáme např. pomocí
ls -la text_[0-9].txt
Chceme-li získat údaje pro všechny soubory, použijeme syntaxi
ls -la text_[0-9, a-z, A-Z].txt
Informace o všech souborech kromě souboru text_2.txt
získáme pomocí
ls -la text_[!2].txt
Použití závorek a zpětného lomítka
Způsob, jakým příkazový řádek vyhodnocuje zadané příkazy, si v některých případech může vynutit použití závorek popř. zpětného lomítka. Klasickým příkladem jsou mezery v názvech souborů a adresářů běžně používané v OS typu Windows. Jestliže budeme mít adresář jmeno adresare
bude příkaz
cd jmeno adresare
interpretován stejně jako kdybychom zadali pouze
cd jmeno
Tento problém se dá vyřešit třemi způsoby.
cd 'jmeno adresare' cd "jmeno adresare" cd jmeno\ adresare
V prvním případě jednoduché uvozovky „chrání“ v nich uzavřený text před interpretací příkazovým řádkem. Druhý příklad je totožný s prvním s tím rozdílem, že dvojité uvozovky povolují interpretaci zástupných znaků. Zpětné lomítko brání interpretaci bezprostředně následujícího znaku.
Mezi znaky interpretované příkazovou řádkou patří vedle mezery např. zástupné znaky, ampersand (&), znak „svislítko“ (|) a lomítko (/).
Apostrof
Jestliže text uzavřeme do apostrofů, bude text zpracován jako příkaz a na jeho místo bude dosazen výstup tohoto příkazu.
$pracovni_adresar=`pwd` echo $pracovni_adresar
Poznámka: Pomocí prvního příkazu definujeme proměnnou pracovni_adresar a její hodnotu vypíšeme pomocí druhého příkazu. Při přiřazení hodnoty proměnné nesmí být mezi jménem proměnné, znakem rovno (=) a hodnotou mezera.
Přesměrování výstupu
Řada programů produkuje určitý výstup. Například příkaz
ls -la
vypíše na obrazovku obsah pracovního adresáře. Ta je v tomto případě tzv. standardním výstupem. Kdybychom však chtěli výstup tohoto příkazu zapsat např. do souboru, museli bychom tento výstup přesměrovat. K tomu slouží znaky >
a »
.
ls -la > obsah_adresare.txt ls -la >> obsah_adresare.txt
Pomocí prvního příkazu vytvoříme soubor obsah_adresare.txt
. Pokud tento soubor již existuje, přepíšeme jeho obsah. Druhý příkaz je totožný s tím rozdílem, že v případě existence souboru obsah_adresare.txt
nedojde k přepsání jeho obsahu, ale přidání výstupu na konec souboru.
V některých případech se může být žádoucí výstup příkazu zahodit. V tomto případě přesměrujeme výstup do adresáře /dev/null
, který je jakousi „černou dírou“ systému.
ls -la > /dev/null
Roury
Roura je mechanismus, kterým je možné přímo předat výstup jednoho příkazu příkazu jinému. Klasickým příkladem je příkaz grep
.
cat text.txt | grep Linux
Příkaz nalevo od „svislítka“ vygerenuje obsah souboru text.txt
, který je předán příkazu grep
. Ten pak vypíše všechny řádky, které obsahují slovo Linux.
Příkazy spouštěné na pozadí
Standardně jsou příkazy spouštěné na popředí. To znamená, že příkazový řádek je příkazem „zablokován“ 2) a uživatel musí čekat, než proběhne jeho zpracování. Alternativou k aplikacím spuštěným na pozadí jsou příkazy spuštěné na pozadí. V tomto případě není příkazový řádek příkazem blokován a uživatel může spouštět další příkazy. Příkaz se spustí na pozadí tak, že se na jeho konec přidá znak ampersand (&).
sleep 60&
Narozdíl od výše uvedené syntaxe, zablokuje příkaz
sleep 60
příkazový řádek na 60 sekund. Po tuto dobu nemůže uživatel zadávat další příkazy a musí čekat, než příkaz skončí.
Uživatelé
V Linuxu rozlišujeme dvě základní kategorie úživatelů - běžného uživatele a tzv. superuživatele (root).
Účet superuživatele slouží pro správu systému. Tento uživatel tak může bez omezení přistupovat ke všem souborů, adresářům a procesům 3). Jeho práva jsou „absolutní“ a nelze je omezit. Z tohoto důvodu je práce pod účetem superuživatele potenciálně nebezpečná - může totiž vést k poškození systému.
Naproti tomu běžní uživatelé mohou v systému vykonávat pouze takové činnosti, které jim dovolují přidělená práva. Standardně tato práva spravuje právě superuživatel.
Každý z uživatelů patří minimálně do jedné skupiny uživatelů, přičemž jedna z těchto skupin je defaultní. Skupiny uživatelů jsou důležité pro definování přístupových práv. Tímto způsobem je umožněn definované skupině uživatelů přístup ke společným souborům / adresářům popř. spouštění programů.
useradd
Příkaz useradd
přidá do systému nového uživatele. Následující příkaz vytvoří uživatele uzivatel
náležícího do defaultní skupiny skupina
. Pro tohoto uživatele vytvoří domovský adresář /home/uzivatel
(v případě, že tento adresář ještě neexistuje).
/usr/sbin/useradd -m uzivatel -g skupina
Poznámka: Pro tohoto uživatele je ještě zapotřebí nastavit heslo pomocí příkazu passwd
.
userdel
userdel
slouží k odstranění uživatele. Pomocí příkazu
/usr/sbin/userdel -r uzivatel
odstraníte ze systému uživatele uživatel
včetně jeho domovské adresáře.
groupadd
Příkaz groupadd
přidává do systému novou skupinu.
/usr/sbin/groupadd -f skupina
groupdel
groupdel
slouží k odebrání skupiny. Aby bylo možné skupinu odebrat, je nejprve nutné zrušit účet všem uživatelům, kteří do této skupiny patří. Předpokládejme, že budeme chtít zrušit skupinu skupina
. Seznam uživatelů náležících do této skupiny lze získat následujícím způsobem. Nejprve je třeba ze souboru etc/group
zjistit identifikační číslo skupiny skupina
.
cat /etc/group | grep skupina skupina:x:501:
Seznam uživatelů této skupiny získáme pomocí
cat /etc/passwd | grep 501 uzivatel:x:501:501::/home/uzivatel:/bin/bash
Nejprve je třeba odstranit uživatele, po té je možné odstranit skupinu.
/usr/sbin/userdel -r uzivatel /usr/sbin/groupdel skupina
passwd
Příkaz passwd
umožňuje uživateli provést změnu svého hesla. Jinému uživateli může heslo změnit pouze superuživatel.
Své heslo můžete změnit pomocí
passwd
Superuživatel pak může změnit heslo jiného uživatele pomocí
passwd jmeno_uzivatele
su
su
je příkazem pro změnu uživatele. Klasickým případem je, když z důvodu instalace aplikace potřebujete získat práva superuživatele. Po zadání příkazu su
bude vyzváni k zadání hesla daného uživatele (s vyjímkou případů, kdy tento příkaz spouštíte jako superuživatel).
Změnu uživatele na superuživatele provedeme pomocí
su
popř.
su root
Jestliže se chcete změnit svou „identitu“ na jiného uživatele, použijte následující syntaxi
su jmeno_uzivatele
su
můžete také spustit ve tvaru
su - jmeno_uzivatele
Rozdíl oproti výše uvedené syntaxi je v tom, že se Vám nastaví kompletní shell prostředí daného uživatele (tj. včetně případných proměnných a dalších vlastností).
Základní informace o systému
uname
uname
slouží ke zjištění údajů o systému, ke kterému jste momentálně přihlášeni.
uname -a Linux localhost.localdomain 2.6.17-1.2139_FC5 #1 Fri Jun 23 12:40:16 EDT 2006 i686 athlon i386 GNU/Linux
whoami
whoami
vypíše jméno uživatele, který momentálně „ovládá“ příkazový řádek.
whoami macky
free
free
vypíše informace o využití fyzické operační paměti a tzv. swapu. Údaje zde uváděné jsou v násobcích 1kB.
free total used free shared buffers cached Mem: 515696 507504 8192 0 11444 189824 -/+ buffers/cache: 306236 209460 Swap: 0 0 0
w
w
zobrazí základní informace o uživatelích přihlášených do systému a o aplikacích, které tito uživatelé spustili. Dále lze pomocí tohoto příkazu získat informace o čase a zatížení CPU za poslední 1, 5 a 15 minut.
w 18:15:43 up 1:11, 3 users, load average: 0.40, 0.76, 0.59 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT macky :0 - 17:04 ?xdm? 4:35 0.66s gnome-session macky pts/1 :0.0 17:18 1:20 0.02s 0.02s bash macky pts/2 :0.0 18:12 0.00s 0.06s 0.01s w
df
df
slouží k získávání informací o místě připojení jednotlivých diskových oddílů a míře zaplnění jim přiděleného prostoru.
df Filesystem 1K-blocks Used Available Use% Mounted on /dev/hda6 9912560 5660824 3740068 61% / tmpfs 257848 0 257848 0% /dev/shm /dev/hda7 1984016 614028 1267576 33% /home /dev/hda8 28080704 4358864 22272380 17% /opt /dev/hda1 5116668 3151676 1964992 62% /media/windows_c
Informace zde uváděné jsou v tzv. blocích, které mají standardně velikost 1kB. Pokud Vám tento formát přijde nepřehledný, zkuste použít syntaxi
df -h Filesystem Size Used Avail Use% Mounted on /dev/hda6 9.5G 5.4G 3.6G 61% / tmpfs 252M 0 252M 0% /dev/shm /dev/hda7 1.9G 600M 1.3G 33% /home /dev/hda8 27G 4.2G 22G 17% /opt /dev/hda1 4.9G 3.1G 1.9G 62% /media/windows_c
která vypíše volné místo v kB/MB/GB.
Práce se soubory
Každý soubor a adresář 4) má svého vlastníka. Standardně je vlastníkem souboru uživatel, který ho vytvořil. Soubory pak lze vytvářet pouze v adresářích, kde k tomu má uživatel oprávnění. Toto pravidlo neplatí pouze pro tzv. superuživatele 5) - ten může přistupovat ke všem souborům a adresářům bez omezení. Více o přístupových právech viz. kapitola Definování přístupových práv.
cd
cd
slouží ke změně pracovního adresáře. Pracovním adresářem se rozumí adresář, ve kterém se uživatel momentálně nachází a k jehož souborům hodlá primárně přistupovat.
Následujícím příkazem nastavníme adresář /opt/games
jako pracovní.
cd /opt/games
Příkaz
cd sauerbraten
nás přesune do podadresáře sauerbraten
, který se nachází v aktuální pracovním adresáři.
V první zápise uvádíme tzv. absolutní cestu k adresáři, v druhém pak cestu relativní. Absolutní cesta vždy začíná lomítkem /
, což je adresář na samém vrchodu adresářového stromu - tzv. kořenový adresář. Naproti tomu relativní cesta lomítkem nezačíná - zadaný adresář je hledán pouze v pracovním adresáři. Absolutní cesta adresáře sauerbraten
je tedy /opt/games/sauerbraten
.
pwd
pwd
slouží k zjištění aktuálního pracovního adresáře.
pwd /opt/games/sauerbraten
ls
Pomocí ls
lze získat obsah adresáře. Maximální dostupnou informaci získáme pomocí přepínačů -la
.
ls -la /opt drwxr-xr-x 8 root root 4096 Aug 13 18:35 . drwxr-xr-x 24 root root 4096 Aug 27 17:04 .. drwx------ 2 root root 16384 Jun 24 13:50 lost+found drwxrwxrwx 5 root root 4096 Aug 17 20:38 macky
du
du
vypíše množství diskového prostoru alokovaného pro zvolený soubor či adresář.
Příkaz
du /home/macky ... 4128 /home/macky/Desktop ... 51900 /home/macky/.mozilla ...
vypíše seznam souborů a adresářů obsažených v adresáři /opt
spolu s údajem o velikosti v jednotkách 1kB diskového prostoru, který zabírají. Příkaz je také možné použít s přepínačem -h
, který velikost souborů a adresářů vyjádří v jednotkách kB/MB/GB.
du -h /home/macky
... 4.1M /home/macky/Desktop ... 51M /home/macky/.mozilla ...
Příkaz
du -s /home/macky
naproti tomu vypíše pouze jedno číslo odpovídající velikosti diskového prostoru, který zabírá adresář /opt
včetně podadresářů a souborů. Opět je možné použít přepínač -h
.
du -sh /home/macky 566M /home/macky
file
file
slouží k zjištění typu (datového formátu) souboru.
file /opt/text.txt text.txt: ASCII text
rm
Příkaz rm
se používá pro odstranění souborů, souborových linků a celé adresářové struktury.
rm -ri /opt/games
Při specifikaci souborů je možné použít zástupné znaky.
rm -ri /opt/games/*.txt rm -ri /opt/games/[A,B,C]*?
rmdir
rmdir
je příkaz, kterým se mažou adresáře.
rmdir /opt/games
Stejně jako rm
podporuje rmdir
zástupné znaky.
touch
Příkaz touch
slouží k vytvoření souboru.
touch text.txt
Poznámka: Soubor je ale možné vytvořit i pomocí textového editoru nebo přesměrováním výstupu jiného souboru. Klasickým případem je uložení výstupu manuálových stránek do souboru.
man rmdir > manualove_stranky_mrdir.txt
mkdir
mkdir
slouží k vytvoření nových adresářů.
mkdir /opt/games
cp
cp
slouží ke kopírování souborů.
cp zdrojove_soubory cilovy_soubor_nebo_adresar
Pomocí výše uvedené syntaxe překopírujeme všechny soubory do cílového adresáře. Příkaz cp
podporuje také zástupné znaky.
mv
mv
slouží k přesunu / přejmenování souborů (včetně adresářů 6) ). Příkaz mv
podporuje zástupné znaky.
mv -f zdrojovy_soubor cilovy_soubor mv -f zdrojovy_adresar cilovy_adresar mv -f seznam_zdrojovych_souboru cilovy_adresar
Poznámka: Přepínač -f
přepíše případné existující soubory.
find
Pomocí find
je možné nalézt umístění zvoleného souboru či adresáře. Tento příkaz podporuje zástupné znaky.
find adresar_k_prohledani -name "jmeno_hledaneho_souboru_nebo_adresare"
Následující příkaz vyhledá všechny textové soubory začínající velkým písmenem v celém systému 7).
find / -name "[A-Z]*.txt"
ln
ln
vytváří tzv. linky na soubory. Podstata linků spočívá v tom, že odkazují na soubory. Rozlišujeme dva typy linků - pevné a symbolické.
Symblický link je soubor, který odkazuje na jiný soubor. Pokud provádíme např. editaci symbolického linku, provádíme v skutečnosti editaci souboru, na který tento link odkazuje.
Pevný link je naproti tomu odkazem přímým - není tvořen samostatným souborem ale pouze odkazem v adresáři. Navíc platí omezení, že soubor, na který se pevný link odkazuje, musí být umístěn na stejném diskovém oddílu.
Symbolický link vytvoříme pomocí
ln -s zdrojovy_soubor nazev_linku
pevný link pak pomocí
ln zdrojovy_soubor nazev_linku
Poznámka: Výhoda linků je zřejmá - umožnují elegantně obcházet potřebu kopírování souborů, jestliže je potřebujeme na „dvou“ místech. To přispívá k úspoře místa na disku a konzistentnosti systému.
mc
mc
je zkratka pro Midnight Commander. Nejedná se ani tako o klasický příkaz jako spíše o aplikaci - klon známého Northon Commander z dob nadvlády MS-DOS. Tato aplikace umožňuje vytváření, přesun, přejmenování a mazání souborů a adresářů. mc
má také vestavěný editor pro modifikaci souborů, a obsahuje jednoduchého FTP klienta.
mc
Poznámka: Jestliže mc
není nainstalován, lze ho snadno přídat jako superuživatel pomocí
yum -y install mc
Výpis obsahu souborů
cat
cat
slouží k výpisu obsahu souboru.
cat text.txt
Výpis obsahu souboru je možné přesměrovat do nového souboru.
cat text.txt > novy_textovy_soubor.txt
more
more
slouží podobně jako cat
k výpisu obsahu souborů. Narozdíl od cat
však more
obsah souboru „rozobrazovkuje“. To znamená, že obsah souboru nevypíše najednou, ale rozdělí jej. Na obrazovku vypíše vždy část textu a výpis pokračuje až po stisku klávesy. Tento příkaz se používá zejména při prohlížení dlouhých textových souborů.
more text.txt
less
Ačkoliv je název možná trochu matoucí, umí toho příkaz less
více než příkaz more
. Příkaz less
stejně jako more
provede „rozobrazovkování“ výpisu obsahu souboru, avšak tento výpis je možné volně procházet pomocí kláves Page Up a Page Down.
less text.txt
grep
grep
slouží k vyhledávání textových řetězců v souborech. Velice často se pojí s výše uvedenými příkazy. Následují příkaz nám vypíše všechny řádky souboru text.txt
, které obsahují sekvenci znaků inux.
cat text.txt | grep inux
Tento příkaz by vypsal všechny řádky souboru text.txt
, kde figuruje slovo Linux nebo linux.
Definování přístupových práv
Jak již bylo zmíměno v kapitole Práce se soubory, každý soubor a adresář má svého vlastníka. Ten pak určuje, jaké operace mohou s těmito soubory / adresáři provádět ostatní uživatelé. Standardně se jedná v případě souborů o právo čtění (read), zápisu (write) a spouštění (execute); v případě adresáře pak o právo prohlížení obsahu (ekvivalent práva čtení), manipulace se soubory (ekvivalent práva zápisu) a právo zobrazovat informace o souborech (ekvivalent práva spouštění)8). Při přidělování práv pak rozlišujeme následující tři skupiny uživatelů: (1) vlastníka souboru / adresáře, (2) tzv. skupinu uživatele a (3) ostatní uživatele. Práva může jednotlivým skupinám přidělit vlastník 9). Přehled práv, která se váží k vybranému souboru / adresáři lze získat pomocí příkazu ls
.
Předpokládejme, že příkaz
ls -la /home/macky/text.txt
zobrazil výpis
´-rwxr-xr-x 1 macky skupina 23056 čec 26 23:10 Derivates.tex
První znak pomlčka (-) značí, že se jedná o soubor 10). Následující trojice znaků značí práva vlastníka souboru - jedná se o právo čtení (read), zápisu (write) a spouštění (execute). Další trojice definuje práva skupiny a to jmenovitě právo čtení a spouštění. Ostatním uživatelům byla opět přidělena práva čtení a spouštění. Dále nám výpis říká, že vlastníkem souboru je uživatel macky, který náleží do skupiny skupina.
chgrp
Příkaz chgrp
slouží ke změně vlastníků specifikovaných souborů / adresářů. Změnu skupiny může provést pouze vlastník popř. superuživatel. Tento příkaz podporuje zástupné znaky.
chgrp nova_skupina jmeno_souboru_nebo_adresar
chown
Příkaz chown
je podobný výše uvedenému příkazu chgrp
s tím rozdílem, že slouží ke změně vlastníka souboru / adresáře.
chown novy_vlastnik jmeno_souboru_nebo_adresare
chmod
Pomocí příkazu chmod
lze měnit měnit práva přiřazená jednotlivým skupinám. Je možné použít dva způsoby zápisu.
V prvním případě nejprve specifikujeme skupinu uživatelů, kterou následuje znak plus (+) popř. mínus (-) doprovázený výčtem práv, která mají být přidána popř. odebrána. Co se skupin uživatelů týče, používají se písmena u (user) pro označení vlastníka, g (group) pro označení skupiny a o (other) pro označení ostatních uživatelů. Práva pak označujeme písmeny r (read) pro čtení, w (write) pro zápis a x (execute) pro spuštění.
Následující příkaz přidá vlastníkovi a jeho skupině práva čtení a zápisu pro soubor soubor
, který se nachází v pracovním adresáři.
chmod ug+rw soubor
Druhá varianta zápisu využívá čísel.
čtení | zápis | spouštění | |
---|---|---|---|
vlastník | 400 | 200 | 100 |
skupina | 40 | 20 | 10 |
ostatní | 4 | 2 | 1 |
Výsledná práva jsou dána součtem čísel uvedených v tabulce. Například příkaz
chmod 750 soubor
nastaví vlastníkovi všechna práva, skupině vlastníka právo čtení a spouštění. Ostatním uživatelům nebyla přidělena žádná práva. Výsledné číslo 750 je tedy součtem čísel 400, 200, 100, 40 a 10.
umask
Pomocí příkazu umask
se nastavují implicitní práva pro nově vytvořené soubory. Syntaxe tohoto příkazu je podobná jako v případě chmod
s číselnou notací. Zásadní rozdíl je v tom, že čísla neurčují práva, která se mají přidat ale naopak práva, která mají odebrána. Například
umask 027
ponechává vlastníkovi všechna práva, skupině vlastníka pak práva čtení a spouštění a ostatním uživatelům jsou odebrána všechna práva.
Standardně jsou tato implicitní práva specifikována v souboru /etc/bashrc
, nicméně každý uživatel si toto nastavení může změnit zápisem do souboru .bashrc
, který se nachází v jeho domovském adresáři 11).
Řízení procesů
Procesem budeme pro účely této kapitoly rozumnět jakýkoliv spuštěný program. Každému procesu jsou pak jádrem přiřazovány systémové zdroje (tj. procesor a paměť).
ps
Pomocí příkazu ps aux
získáte seznam všech spuštěných procesů
ps aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.1 1992 676 ? Ss 20:24 0:00 init [5] root 2 0.0 0.0 0 0 ? SN 20:24 0:00 [ksoftirqd/0] root 3 0.0 0.0 0 0 ? S 20:24 0:00 [watchdog/0] root 4 0.0 0.0 0 0 ? S< 20:24 0:00 [events/0] root 5 0.0 0.0 0 0 ? S< 20:24 0:00 [khelper] root 6 0.0 0.0 0 0 ? S< 20:24 0:00 [kthread] root 2045 0.0 0.8 11480 4636 ? S 20:24 0:00 python ./hpssd.py root 2057 0.0 0.5 9272 2908 ? Ss 20:24 0:00 cupsd postgres 2143 0.0 0.6 20232 3108 ? S 20:25 0:00 /usr/bin/postmaster -p 5432 -D /var/lib/pgsql/data postgres 2145 0.0 0.1 10020 560 ? S 20:25 0:00 postgres: logger process postgres 2147 0.0 0.1 20232 852 ? S 20:25 0:00 postgres: writer process postgres 2148 0.0 0.1 11020 548 ? S 20:25 0:00 postgres: stats buffer process postgres 2149 0.0 0.1 10252 728 ? S 20:25 0:00 postgres: stats collector process macky 2956 0.0 2.1 52884 11104 ? Sl 20:36 0:00 xmms -e macky 3202 0.4 2.7 88864 14324 ? S 21:16 0:00 gaim ...
Z výše uvedeného výpisu lze pro každý proces zjistit uživatele, který jej spustil (položka USER) a identifikační číslo procesu (položka PID). Vzhledem k tomu, že tento výpis můžeme být vcelku dlouhý, je vhodné použít také příkaz less
popř. grep
. Například seznam všech procesů spuštěných uživatelem macky bychom získali pomocí příkazu
ps aux | grep macky
kill
Příkaz kill slouží k ukončení procesů 12). Jeho syntaxe je následující
kill pid_procesu
PID daného procesu lze získat pomocí příkazu
ps aux
Každý uživatel může „zabít“ svoje procesy; superuživatel pak může zabít jakýkoliv proces 13).
Vypnutí / restart počítače
- Přečtěte si kapitolu Obecné poznámky.
Počítač lze vypnout pomocí příkazu
/sbin/shutdown -h now
a restartovat pomocí
/sbin/shutdown -r now
Další informace
Bližší informace o výše uváděných příkazech můžete získat pomocí
man prikaz
Např. manuálovou stránku příkazu ls
vyvoláme pomocí
man ls LS(1) User Commands LS(1) NAME ls - list directory contents SYNOPSIS ls [OPTION]... [FILE]... DESCRIPTION List information about the FILEs (the current directory by default). Sort entries alphabetically if none of -cftuSUX nor --sort. ...
Informace uvedené v sekci NAME jsou využívány příkazem apropos
. Tento příkaz vypisuje seznam manuálových stránek, které se váží k určitému klíčovému slovu. Pokud toto klíčové slovo figuruje v sekci NAME, je daná manuálová stránka vypsána na seznam.
Například seznam všech manuálových stránek, které se váží ke slovu file, získáme pomocí
apropos file
text_a.txt
a text_A.txt
tak nejsou jeden a tentýž soubor ale dva rozdílné soubory./
je tzv. kořenovým adresářem. Všechny adresáře jsou podadresáři tohoto adresáře. Proto, dáme-li prohledat kořenový adresář, prohledáváme všechny připojené systémové soubory počítače./home/jmeno_uzivatele
.