Neboj se experimentovat. Správným řešením těchto úkolů si systém nerozbiješ a kdyby bylo hodně špatně, virtuální počítač si můžeš vždycky připravit nový.
Na lekci jsme si říkali, že jedna z výhod funkcí v Bashi je to, že se vykoná v procesu Bashe, který ho spouští. To ale není pravda úplně vždycky. Zkus vysvětlit rozdíl mezi těmito příkazy:
Nakresli pro oba příkazy diagramy toho, jak se jednotlivé procesy navzájem spouštějí. (Ukázky diaramů jsou i v materiálech. Stačí je samozřejmě jen načrtnout tužkou.)
(Tohle zadání navazuje na předchozí úkol. A je asi dost složité; klidně přeskoč.)
Existuje jeden známý příkaz, který nespouštěj. Tvým úkolem bude zjistit, co dělá. To můžeš zkusit udělat třemi způsoby:
Příkaz je :(){ :|:& };:
– s tím že znak:
není v Bashi speciální, funguje stejně jako třeba písmeno f
. Nakresli diagram toho, jak se po spuštění tohoto příkazu spouštějí procesy.
Velice podobný program v Pythonu, který taky nespouštěj, je:
Nakresli diagram toho, jak se pouští procesy pro příkaz sudo ps
:
(sudo
ti dává oprávnění, ale i zodpovědnost. Nauč se před každým použitím sudo
přečíst spouštěný příkaz a zamyslet se, jestli ho opravdu chceš spustit. Ale opět, neboj se experimentovat – na virtuálním počítači není co zkazit.)
Co by měl dělat tento příkaz?
Příkaz ale pod běžným uživatelským účtem nefunguje; potřebuješ sudo ll /var/db/sudo/lectured/
. To ale taky nefunguje. Proč? Jak to spravit?
/var/db/sudo/lectured/
? Komu patří? Jak jsou velké?/var/run/sudo/ts
? Komu patří? Jak jsou velké? Kdo k nim má jaká práva?/var/run/sudo/ts
?Když spustíš příkaz sudo
, zeptá se tě na heslo. Když ho spustíš podruhé (ve stejném terminálu), už se neptá – pamatuje si, že jsi heslo před chvilkou zadala.
Vyzkoušej si ale, že tohle nefunguje s příkazem pro smazání „tvého“ souboru v /var/run/sudo/ts
. Když ho pustíš několikrát za sebou, sudo
se vždycky znovu zeptá na heslo.
Proč?
Zadej tyhle příkazy:
/var/db/sudo/lectured/
./var/run/sudo/ts
.sudo echo
.A odpověz:
sudo echo
jinak?/var/db/sudo/lectured/
?Na lekci jsme vytvořili soubor, který patří superuživateli root
:
Do takového souboru jako běžný uživatel nemůžeš nic zapsat:
Řešením problémů s oprávněním bývá dát před příkaz sudo
(samozřejmě po tom, co si příkaz pořádně přečteš a ujistíš se že mu rozumíš a fakt ho chceš provést).
V tomhle případě to ale nefunguje – proč?
Ať máme přehled, zadej prosím do tabulky s papírkama:
Příště má být opakovací hodina. Napadne-li tě nějaká otázka, napiš ji do Etherpadu.