Orientace na příkazovém řádku
Modul 1: Váš první server · Doba čtení: 11 min.
Cíl lekce: Po této lekci se dokážete orientovat na linuxovém serveru: procházet adresáře, číst a upravovat soubory, zjistit, kolik místa na disku a paměti je volné, a sami vyhledat nápovědu k příkazu.
Klíčové pojmy: shell, prompt, adresář a cesta, absolutní a relativní cesta, /etc, /var/log, /home, ls -l, cd, cat, less, nano, man, --help, doplňování klávesou Tab, uname, df, free, uptime, pipe (roura), grep
Shell a prompt
Po přihlášení komunikujete se shellem: programem, který čte a provádí Vaše příkazy. Na Debianu a Ubuntu je to obvykle bash. Vlevo od kurzoru je prompt:
anna@web1:~$
root@web1:~#Ten Vám říká tři věci: kdo jste (anna nebo root), na kterém serveru (web1) a v jakém adresáři se nacházíte (~ je Váš domovský adresář). Důležitý je poslední znak: $ znamená běžného uživatele, # znamená root. Pokud vidíte #, každý příkaz běží se všemi oprávněními. Pište tam proto v klidu a pozorně.
Adresáře a cesty
Vše v Linuxu visí na jednom stromu, který začíná v / (kořenový adresář, nezaměňujte s uživatelem root). S několika adresáři se v tomto kurzu budete setkávat neustále:
| Adresář | Co obsahuje |
|---|---|
/etc | Konfigurace: SSH (/etc/ssh), webový server (/etc/nginx), uživatelé (/etc/passwd) |
/var/log | Soubory logů (vedle journalu, lekce 6.2) |
/var/lib | Data programů, například databáze a Docker |
/home | Domovské adresáře běžných uživatelů, například /home/anna |
/root | Domovský adresář uživatele root |
/usr | Nainstalované programy a knihovny |
/tmp | Dočasné soubory, průběžně se mažou |
/srv nebo /var/www | Obvyklé místo pro weby a služby |
Absolutní cesta začíná v /, například /etc/ssh/sshd_config. Relativní cesta začíná tam, kde se právě nacházíte: jste-li v /etc, pak ssh/sshd_config je tentýž soubor. .. je nadřazený adresář, . aktuální adresář.
anna@web1:~$ pwd
/home/anna
anna@web1:~$ cd /etc/ssh
anna@web1:/etc/ssh$ ls
moduli ssh_config ssh_config.d sshd_config sshd_config.d ssh_host_ed25519_key ssh_host_ed25519_key.pub ...
anna@web1:/etc/ssh$ cd ..
anna@web1:/etc$ cd
anna@web1:~$cd bez dalšího parametru Vás vrátí do domovského adresáře.
Prohlížení souborů
ls -l ukáže víc než jen názvy:
anna@web1:/etc/ssh$ ls -l sshd_config ssh_host_ed25519_key ssh_host_ed25519_key.pub
-rw-r--r-- 1 root root 3248 Aug 12 10:01 sshd_config
-rw------- 1 root root 399 Nov 2 14:20 ssh_host_ed25519_key
-rw-r--r-- 1 root root 91 Nov 2 14:20 ssh_host_ed25519_key.pubZleva doprava: oprávnění, počet odkazů, vlastník, skupina, velikost v bajtech, datum a název. Všimněte si rozdílu: tajný host key (-rw-------) smí číst jen root, veřejný (-rw-r--r--) kdokoli. V lekci 3.1 se tato oprávnění naučíte přesně číst. ls -la zobrazí i skryté soubory: názvy začínající tečkou, například .ssh.
Ke čtení obsahu slouží:
cat bestand: celý soubor najednou, vhodné pro krátké soubory;less bestand: listování šipkami a mezerníkem, hledání pomocí/woord, ukončení pomocíq;head -n 20 bestandatail -n 20 bestand: první nebo poslední řádky;tail -fsleduje soubor dál, když přibývají nové řádky.
Úprava souboru v editoru nano
Konfiguraci upravujete v textovém editoru. Nejjednodušší je nano:
root@web1:~# nano /etc/hostsDole jsou klávesové zkratky; ^ znamená Ctrl. Uložení je Ctrl+O a Enter, ukončení Ctrl+X, hledání Ctrl+W. Pokud už pracujete s vim, klidně ho používejte; vim ale na minimální instalaci nemusí být k dispozici v plné podobě.
Tři návyky, které Vám později ušetří spoustu potíží:
- Nejdřív si udělejte kopii:
cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak. - Otestujte konfiguraci dříve, než službu restartujete. Mnoho programů na to má vlastní příkaz:
sshd -t,nginx -t(lekce 2.2 a 7.2). - Měňte vždy jen jednu věc, abyste věděli, co chybu způsobilo.
V jakém stavu je Váš server?
Několik příkazů, které využijete v každé situaci:
anna@web1:~$ uname -a
Linux web1 6.12.0-... #1 SMP ... x86_64 GNU/Linux
anna@web1:~$ uptime
10:12:44 up 3 days, 2:10, 1 user, load average: 0.08, 0.05, 0.01
anna@web1:~$ df -h /
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 40G 3.1G 35G 9% /
anna@web1:~$ free -h
total used free shared buff/cache available
Mem: 3.8Gi 412Mi 2.9Gi 1.0Mi 720Mi 3.4Gi
Swap: 0B 0B 0Buname -a: který kernel běží.uptime: jak dlouho server běží a load average za 1, 5 a 15 minut. Zhruba řečeno: load, který dlouhodobě převyšuje počet jader procesoru, znamená, že se na něco čeká.df -h: volné místo na disku (-hznamená "human readable", tedy s G a M). Plný disk je jednou z nejčastějších příčin, proč server "jen tak" přestane fungovat.free -h: paměť. Dívejte se na sloupecavailable, nefree: Linux využívá volnou paměť jako cache (buff/cache) a uvolní ji, jakmile ji nějaký program potřebuje.
A Vaše síť, z lekce 1.2: ip -brief address.
Kde najít nápovědu
Nemusíte si pamatovat všechny volby. Měli byste ale vědět, kde je najdete:
man sshotevře manuál (manual page) k příkazu. Listuje se stejně jako vless, hledá se pomocí/.man sshd_configpopisuje každou nastavitelnou položku v tomto souboru.ls --helpu většiny příkazů vypíše krátký seznam voleb.- Klávesa Tab doplňuje názvy příkazů a souborů. Dvojí stisk Tab zobrazí možnosti. To Vám ušetří překlepy v dlouhých cestách.
- Šipka nahoru vrací předchozí příkazy;
historyje zobrazí všechny.
Na minimální instalaci manuály někdy chybí. Na Debianu a Ubuntu je nainstalujete pomocí apt install man-db (modul 4).
Pipe a grep
Příkazy můžete spojovat pomocí pipe (|): výstup jednoho je vstupem dalšího. grep vyfiltruje řádky, které obsahují dané slovo:
anna@web1:~$ grep PasswordAuthentication /etc/ssh/sshd_config
#PasswordAuthentication yes
anna@web1:~$ ls -l /etc | lessŘádky začínající znakem # jsou komentáře: nic nedělají a často ukazují výchozí hodnotu. V lekci 2.2 uvidíte, proč to může být u SSH matoucí.
Na co si dát pozor
- Vkládání bez čtení. Příkazy z internetu udělají přesně to, co v nich stojí, i když je to něco jiného, než slibuje název článku. Každý příkaz si před spuštěním přečtěte, a to zvlášť tehdy, když jste root.
rmnemá koš. Co je smazané, je pryč. Buďte obzvlášť opatrní srm -r(adresář se vším, co obsahuje) a se zástupnými znaky jako*.- Na velikosti písmen záleží.
/etc/SSHneexistuje;/etc/sshano. - Mezery v cestách musí být v uvozovkách:
cat "/srv/mijn site/index.html". Lepší je na serveru mezery v názvech vůbec nepoužívat.
Shrnutí
- Prompt říká, kdo jste, na kterém serveru a kde se nacházíte;
#znamená root. - Konfigurace je v
/etc, logy v/var/log, data programů v/var/lib, domovské adresáře v/home. - Čtěte pomocí
cat,less,headatail; upravujte pomocínano, po vytvoření kopie, a konfiguraci před restartem otestujte. df -h,free -h,uptimeaip -brief addressukazují, v jakém stavu je Váš server.- Nápovědu najdete v
mana--help; Tab doplňuje; pomocí|agrepfiltrujete výstup.
Kvíz
Úkol
Úkol O1.4: Seznámení se serverem. Spusťte příkazy z lekce na svém serveru a vyplňte: distribuci a verzi, kernel, volné místo na disku, dostupnou paměť, load, IPv4 a IPv6 a které soubory v /etc/ssh smí číst pouze root. Poté odpovězte na dvě otázky o tom, co jste viděli.
Úkol O1.4: Seznámení se serverem
Tento úkol provádíte sami; nikdo ho nekontroluje. Odškrtněte, co jste udělali, a označte úkol jako splněný.
available započítává i paměť cache, kterou Linux uvolní. Soubor .pub je veřejná část, kterou vidí každý klient; soubor bez .pub je tajný (600, root), protože kdo ho má, může se vydávat za Váš server.
Vaše zaškrtnutí a poznámky zůstávají pouze v tomto prohlížeči; nikam je neposíláme. Pokud jste přihlášeni, ukládáme v sekci Moje kurzy pouze to, že jste úkol splnili.
Doporučujeme k přečtení
- Zvětšení místa na disku vašeho VPS
- Přístup přes SSH a Terminál v DirectAdmin: u kterých balíčků jsou dostupné a jak se do nich přihlásit
- Debian Reference, kapitola 1 (průvodce příkazovým řádkem, anglicky): https://www.debian.org/doc/manuals/debian-reference/ch01.en.html
- Filesystem Hierarchy Standard 3.0: https://refspecs.linuxfoundation.org/FHS_3.0/fhs/index.html
