36VPS, přednáší ing. Šimánek
Odkazy[]
Stránky na serveru os
Slajdy z přednášek
Materiály ze cvičení
Proč tato stránka vznikla[]
- Aby poskytla výtah z výukových materiálů, odpovědi na minulé zkouškové otázky a pomohla tak při přípravě na zkoušku.
Kontrolní otázky ze cvičení[]
Týden 1.[]
K čemu slouží soubor /etc/passwd ?
- Je v něm uloženo UID každého uživatele [ANO]
- Jsou tam uložena hesla pro přístup přes WWW a FTP [NE]
- Je to program ke změně hesel uživatelů [NE, tohle je soubor v adresari /etc nikoliv program passwd]
- Je v něm uloženo GID primární skupiny každého uživatele [ANO]
- Jsou v něm uloženy některé atributy uživatelů (název domovského adresáře) [ANO]
- Jsou v něm uložena hesla uživatelů [NE, kdysi v něm bývalo hash hesla, dnes je z bezpečnostních důvodu v /etc/shadow]
- Je v něm uložen seznam uživatelů [ANO]
Který uživatel má v operačních systémech UNIX administrátorská práva? (Jak takového uživatele poznáte?)
- Právě ten, který má GID nulové [NE, GID s tim vůbec nesouvisí]
- Právě ten, který má UID nulové [ANO]
- Právě ten, kterému to dovolil prezident republiky, popř. generální ředitel dané organizace [NE]
- Právě ten, který má buď UID nulové nebo GID nulové [NE, musí mít UID 0 na GID nezáleží]
- Právě ten, který patří do skupiny "root" s GID=0 [NE]
- Právě ten, jehož uživatelské jméno (login name) je "root" [NE, hlavní je UID]
- Právě ten, který má UID nenulové [NE]
Týden 2.[]
K čemu je užitečný runlevel S (singleuser mode)?
- Používají ho běžní uživatelé k zamezení přístupu ze sítě (pokud chce uživatel pracovat jen sám). Lze použít jen z konzole.
- Je automaticky aktivován při výpadku napájení.
- Je obdobou volby "jen systém MSDOS" a znamená, že počítač pracuje naprosto stejně, ale bez grafického prostředí.
- Používá ho administátor k odstanění zvlášť závažnách chyb systému. [Spravne]
Jakým příkazem lze zastavit WWW server?
- killall -HUP httpd
- /etc/rc.d/init.d/www kill
- killall www
- killall httpd
- /etc/init.d/httpd stop
- service www stop
- kill /etc/init.d/httpd
- service httpd stop [Spravne]
- /etc/rc.d/init.d/www stop
Jaké PID má démon init
- vždy 0
- menší než 0
- 42
- 1 [Spravne]
- vetsi nez !
Mohou v jednom okamžiku běžet současně dva procesy init (/sbin/init)?
- Ano [ANO, napriklad pri zmene runlevelu bezi jeden init s PID 1 a nove spusteni s pridelenym PID do doby nez prevezme vladu nad systemem]
- Ne
- Ano, ale jen když byl každý z těchto procesů spuštěn v jiném adresáři
- Ano, ale jen když každy z těchto procesů pustil jiný uživatel
Kterým příkazem lze změnit runlevel?
- setrunlevel
- runlevel
- init [Spravne]
- who -r
- telinit [Spravne]
Jak vzika proces init (demon)
- pri startu systemu ho vytvori jadro [Spravne]
- je prvnim procesem systemu, vytvori sam sebe
- je spusten ze shellu
- jako kazdy jiny proces, volanim systemove funkce fork()
- je spusten pri startu systemu z nektereho rc-scriptu v /etc/rc.d
- je spusten pri prihlaseni uzivatele
Týden 3.[]
Co je to /dev/md1 ?
- Takový soubor neexistuje.
- Speciální soubor reprezentující logický disk, který je vytvořen pomocí volume manageru. [ANO]
- Speciální soubor, reprezentující fyzický disk, konkrétně první partition.
Kolik primary partition lze vytvořit na jediném disku na platformě PC/x86?
- libovolný počet, ale jen pokud existuje extended partition
- 255
- žádnou, promary partitions nelze použít na počítači PC.
- 4 [ANO]
- 2
- 1
- 42
Jakým programem se obvykle mění tabulka rozdělení disku?
- dd
- fdisk [ANO]
- partitionedit
- newfs
- mount
Týden 4.[]
Jakým příkazem odpojíme kořenový systém souborů
- kill /
- Kořenový systém souborů nelze za běhu OS odpojit [ANO]
- rmdir /
- detach /
- umount /
Jakého typu je soubor /dev/null?
- neexistující soubor
- symbolický link, který ukazuje na "nic"
- socket
- znakové zařízení [ANO]
- nepojmenovaná roura
- pojmenovaná roura
Který konfigurační soubor obsahuje seznam systémů souborů, které se mají připojit při startu systému?
- /etc/mtab
- /bin/mount
- /etc/fstab [ANO]
- /proc/mounts
- /etc/fsmount
Kterým programem lze provést kontrolu systému souborů typu ext2?
- fsck [ANO]
- dump
- checkfs
- repairfs
- mke2fs
Týden 5.[]
Které z těchto balíčků jsou nutné pro spuštění nainstalovaného editoru jstar ?
- stdlib
- ncurses
- XFree86-libs
- glibc
- libc
Postup:
whereis jstar rpm -qf /usr/bin/jstar for i in `rpm -q --requires joe`; do echo $i; rpm -q --whatprovides $i; done
Jakému balíčku patří soubor /usr/lib/X11/locale/iso8859-2/Compose
- XFree86-Mesa-libGL
- xorg-x11-libs
- xorg-font-iso8859-2
- xorg-font-utils
- XFree86-ISO8859-2-100dpi-fonts
Postup:
rpm -qf /usr/lib/X11/locale/iso8859-2/Compose
Jaké capabilities nabízí balíček glib ?
- libresolv-2.3.2.so
- libglib-1.2.so.0
- libgmodule-1.2.so.0
- glibc-2.3.2.so
Postup:
rpm -q --provides glib
Jaká informace je uvedena v položce Vendor v informacích o balíčku ntp?
- David L. Mills
- none
- Red Hat, Corp.
- Red Hat
- Red Hat, Inc.
Postup:
rpm -qi ntp
Týden 6.[]
Lze využít program tar pro vytvoření komprimované zálohy domovských adresářů?
- Ne
- Ne, zálohu domovských adresářů nelze komprimovat.
- Ano, ale jen spolu s komprimačním programem gzip
- Ano, ale jen spolu s nějakým (libovolným) komprimačním programem [ANO, např. gzip,bzip2, ...]
Jaké soubory obvykle označují následující přípony?
Poznámky: Příponu .Z používá utilitka compress, zálohování probíhá tak, že nejprve se soubory zabalí do taru (zachovají se cestu, práva, čas, atd.) a výsledný tar se zabalí komprimačním programem. Většina unixových komprimátoru předpokládá, že komprimují pouze jeden soubor (náš *.tar).
- .Z - soubor komprimovaný programem gzip
- .Z - soubor komprimovaný programem bzip
- .tgz - soubory komprimované programem gzip a následně archivované programem tar
- .tar.Z - soubory komprimované programem compress a následně archivované programem tar
- .tar - archiv vytvořený programem tar [ANO]
- .tgz - archiv vytvořený programem tar a následně komprimovaný programem gzip [ANO]
- .Z - soubor komprimovaný programem zip
- .Z - soubor komprimovaný programem compress [ANO]
- .tar.gz - soubory komprimované programem gzip a následně archivované programem tar
- .tar.Z - archiv vytvořený programem tar a následně komprimovaný programem gzip
- .Z - soubor komprimovaný programem zip
- .tar.gz - archiv vytvořený programem tar a následně komprimovaný programem gzip [ANO]
- .tgz - nekomprimovaný archiv vytvořený programem tgz
Mezi hlavní výhody zálohovacího programu dump (oproti tar, nebo cpio) patří zejména:
- Rychlejší zálohování. [ANO]
- Zachování času posledního přístupu k souboru během zálohování. [ANO]
- Podpora inkrementálního zálohování. [ANO] [GNU tar už inkrementální zálohy taky podporuje tak že se jedná o trošku zavádějící otázku]
viz: http://www.gnu.org/software/tar/manual/html_node/Incremental-Dumps.html
- K zálohování nejsou třeba root práva.
Mezi hlavní výhody zálohovacího programu tar (oproti dump) patří zejména:
- Automatická komprese dat.
- Zachování času posledního přístupu k souboru během zálohování.
- Možnost interaktivní obnovy. [NE?] [Viz výše zavádějící]
- Rychlejší zálohování.
Tady jsem nic nezatrhnul, protože pokud to mají oba není to výhoda a z nabízených možností nemá tar nic lepšího než dump.
Týden 7.[]
Jak lze jádru Linuxu předat informace o tom, kde má hledat kořenový systém souborů ?
- Parametrem jádra mount=
- Parametrem jádra /=
- Parametrem jádra root= [ANO]
- Nastavením implicitní hodnoty přímo v jádře ještě před bootem programem rdev [ANO]
- Parametrem jádra mount /
Kde lze v systému Linux nalézt informace o všech PCI zařízeních v počítači?
- V souboru /proc/pci [ANO]
- Podle existence speciálních zařízení v /dev: Přítomnost např. hardware ABC zjistíme podle existence souboru /dev/ABC
- V různých souborech v adresáři /dev
- V souboru /etc/pci
Které volby (konfigurační přepínače) je třeba nastavit při konfiguraci jádra, chceme-li číst (tj. namountovat) běžné CD-ROM disky na SCSI CD-ROM mechanice.
- CONFIG_ROMFS_FS (ROM file system support)
- CONFIG_BLK_DEV_SR (SCSI CDROM support) [ANO]
- CONFIG_CD_NO_IDESCSI (Support non-SCSI/IDE/ATAPI CDROM drives)
- CONFIG_CHR_DEV_SG (SCSI generic support) [NE]
- CONFIG_EXT3_FS (Ext3 journalling file system support)
- CONFIG_ISO9660_FS (ISO 9660 file system support) [ANO]
Týden 8.[]
Jak zakážete použití dodatečných nastavení pro specifický adresář (tj. nastavení běžně definovaná v souborech .htaccess) ?
- Uvedením direktivy AccessFileName .cokoliv, což způsobí přenastavení jména přístupového souboru na jméno začínající tečkou, které je skryté
- Uvedením direktivy NoAccessFile
- Uvedením direktivy AllowOverride None [ANO]
- Uvedením direktivy UserAccessFile None
V čem se liší virtuální server na bázi jmen od virtuálního serveru na bázi IP adres?
- Virtuální servery na bázi IP adres vyžadují minimálně tolik různých IP adres, kolik je virtuálních serverů, zatímco servery na bázi jmen tolik adres nevyžadují. [ANO]
- Virtuální servery na bázi IP adres fungují i bez platného DNS záznamu, zatímco virtuální servery na bázi jmen jsou bez DNS záznamu (případně jiné ekvivalentní služby - NIS, NIS+, LDAP) nedostupné. [ANO]
- Virtuální servery na bázi jmen fungují dobře i s nižšími verzemi protokolu HTTP (ver 1.0 a starší)
- Virtuální servery na bázi jmen musí používat dohromady jen jedinou IP adresu, zatímco servery na bázi IP adres mohou (a mají) adresy navzájem různé.
- Virtuální servery na bázi IP adres musí běžet každý na jiném počítači, neboť používají jiné (různé) IP adresy.
Mějme následující CGI script:
#!/bin/bash echo "Content-type: text/plain" grep root /etc/passwd /etc/blbost
Označte všechny příkazy, které je nutné vložit do tohoto scriptu mezi příkazy echo a grep, aby script zobrazoval v prohlížeči stejné informace, jako to dělá stejný příkaz grep na příkazové řádce.
- umount /usr
- echo "MIME-type: text/plain"
- exec 2>&1 [ANO]
- export TERM=vt100
- exit 0
echo "<HTML>" echo " <HEAD>" echo " <TITLE></TITLE>" echo " </HEAD>" echo " <BODY>"
Navíc by se mělo tělo HTML dokumentu uzavřít i po skončení příkazu grep.
- g) export DISPLAY=:0.0
- h) echo "Document-encoding: ascii"
- i) echo "" [ANO]
Týden 9.[]
Srovnejte spojení pomocí ssh proti spojení pomocí telnet/rsh/rlogin, za předpokladu že nebudu používat (myšleno: předem nevyměním ani nijak neověřím) ani veřejné klíče počítačů, ani veřejné klíče uživatelů. V čem jsou rozdíly?
- Spojení je skoro celé šifrované, ale pokud by útočník odposlechl všechny přenesené pakety (zejména počáteční dohadování klíčů), pak by mohl spojení rozluštit.
- rsh/rlogin umožňuje nastavit přihlašování bez hesla (a autentizovat pomoci souboru .rhosts) narozdíl od ssh, které bez veřejných klíčů takto (autentizaci na zaklade pouhych neoverenych IP adres) nastavit nejde.
- Při spojení ssh lze (i bez použití veřejných klíčů) vytvořit další zabezpečený (šifrovaný) TCP kanál (ssh tunel), který se dá využít pro jiné aplikace. [ANO]
- Spojení ssh je po celou dobu šifrované, nelze ho tedy v odposlechnout pouhým odposlechem paketů. [ANO]
Proč je výhodnější použít ssh místo rsh, nechceme-li používat autentizaci uživatele pomocí hesla?
- Při SSH přístupu nemusí server důvěřovat IP adrese ani klíči počítače ze kterého se hlásí, ale může ověřit uživatele podle veřejného klíče uživatele. [ANO]
- Při SSH má Klient jistotu, že komunikuje se správným serverem (pokud má k dispozici správný klíč). [ANO]
- Protokol SSH může automaticky zprostředkovat spojení s X-serverem. [ANO]
- Celé SSH spojení je šifrované, tj. ani odposlech všech paketů (včetně inicializačních) nepostačí k rozluštění přenášené informace. [ANO]
Jak zabezpečíte protokol pop3 (čtení vzdálené pošty) pomocí ssh tunelu proti odposlechu? Řekněme, že POP3 server se jmenuje sss, lokální počítač se jmenuje ccc a uživatel má přístup na server sss pod USERNAME=uuu. Po vytvoření tunelu bude client používat adresu localhost a port 8888.
- ssh -l uuu -L 110:sss:8888 sss
- ssh -l uuu -L 8888:sss:110 ccc
- ssh -l uuu -L 110:sss:8888 ccc
- ssh -l uuu -L 8888:ccc:110 ccc
- ssh -l uuu -R 8888:sss:110 ccc
- ssh -l uuu -R 8888:sss:110 sss
- ssh -l uuu -L 8888:sss:110 sss [ANO]
- ssh -l uuu -R 110:ccc:8888 sss
- ssh -l uuu -R 110:sss:8888 sss
- ssh -l uuu -R 8888:ccc:110 ccc
- ssh -l uuu -R 110:ccc:8888 ccc
- ssh -l uuu -L 8888:ccc:110 sss
- ssh -l uuu -L 110:ccc:8888 sss
- ssh -l uuu -R 110:sss:8888 ccc
- ssh -l uuu -L 110:ccc:8888 ccc
- ssh -l uuu -R 8888:ccc:110 sss
Týden 10.[]
Co je nutné ke zřízení domény 2. řádu (xxxxxx.cz) na vlastním DNS serveru? (tak, aby byla viditelná ze světa)
- Nakonfigurovat alespoň adresu www.domena.cz
- Vytvořít jeden primární DNS server, sekundární nejsou potřeba.
- Registrovat doménu u Internetové autority NIC-CZ, nebo zprostředkovaně přes jiný subjekt. [ANO]
- DNS server(y) musí být připojeny stálým spojem (24 hodin denně, nikoliv např. dial-up s dynamickou IP). [ANO]
- Vytvořit minimálně dva nezávislé primární (master) DNS servery.
Kdo je vlastníkem domény kytara.cz ?
- Webhosting s.r.o.
- Libor Smékal [ANO]
- Milan Šimánek
- Fidel Castro
- Jan Nedvěd
whois kytara.cz
Který soubor musíte změnit, aby na vašem počítači bylo jméno pokus.felk.cvut.cz překládáno na adresu 192.168.1.1 ?
- /etc/hosts [ANO]
- /var/named/felk.zone
- /bin/ls
- /etc/named.conf
Týden 11.[]
Jakým příkazem je možné vypsat aktuální nastavení směrovacích tabulek jádra linux routeru?
- ifconfig
- ip route [ANO]
- netstat -r [ANO]
- route [ANO]
Které adresy patří do intervalu privátních adres (tedy v Internetu se nesměrují)?
- 10.10.10.10 [ANO]
- 10.11.12.13 [ANO]
- 1.1.1.1
- 168.192.22.11
- 172.17.2.172 [ANO]
Name | IP address range | number of IPs | classful description | largest CIDR block | defined in |
---|---|---|---|---|---|
8-bit block | 10.0.0.0 – 10.255.255.255 | 16,777,216 | single class A | 10.0.0.0/8 | RFC 1597 (obsolete), RFC 1918 |
12-bit block | 172.16.0.0 – 172.31.255.255 | 1,048,576 | 16 contiguous class Bs | 172.16.0.0/12 | |
16-bit block | 192.168.0.0 – 192.168.255.255 | 65,536 | 256 contiguous class Cs | 192.168.0.0/16 | |
16-bit block | 169.254.0.0 – 169.254.255.255 | 65,536 | single class B | 169.254.0.0/16 | RFC 3330, RFC 3927 |
Mějme virtuální počítač FC4 v K310 s běžnou konfigurací sítě a správnou maskou, ale bez směrovací položky default. Tedy počítač s takto nakonfigurovanou sítí:
# ifconfig lo 127.0.0.1 # ifconfig eth0 10.0.6.1 netmask 255.255.255.0 # route del default
Který z následujících příkazů umožní spojení s počítačem sunray2.felk.cvut.cz ?
- route add -net 147.32.80.0 netmask 255.255.255.0 gw 147.32.80.37
- route add default gw 10.0.6.128 [ANO]
- ifconfig eth0 147.32.80.37
- route add -net 147.32.80.0 netmask 255.255.255.0 gw 10.0.6.128 [ANO]
- route add default gw 147.32.80.37
- route add -host 10.0.6.128 gw 147.32.80.37
- route add -host 147.32.80.37 gw 10.0.6.128 [ANO]
- route add -net 147.32.80.36 netmask 255.255.255.252 gw 10.0.6.128 [ANO]
- route add -net 147.32.80.32 netmask 255.255.255.240 gw 10.0.6.128 [ANO]
Týden 12.[]
K čemu slouží protokol ARP?
- K nastavení směrovacích tabulek při propojení dvou (nebo více) sítí.
- K přenosu dat po sériové lince (je to low-level transportní protokol).
- Patří do kategorie směrovacích protokolů (jako je RIP, OSPF, BGP, ...)
- Protokol pro vzdálenou správu pracovních stanic.
- Ke zjištění platformově závislé adresy stanice, které je směrován právě odesílaný IP paket. [ANO]
Který program lze využít k aktivaci protokolu CSLIP na sériové lince? (tj. k přepnutí line discipline)
- pppconfig
- ifconfig
- pppd [ANO]
- arp
- minicom
Který konfigurační soubor je třeba upravit, aby se spouštěl proces getty obsluhující sériovou linku (tj. abychom mohli na sériovou linku připojit klasický znakový terminál, ze kterého je možné se přihlásit do systému)?
- /etc/ttyS0
- /etc/terminal
- /etc/inittab [ANO]
- /etc/termcap
- /etc/services
- /dev/modem
- /etc/minicom.users
- /etc/inetd.conf
- $HOME/.dialdir
Používá se ARP v případě spojení sériovou linkou? (tj. proudí ARP pakety skrz sériovou linku?)
- Ano, protokol ARP po sériové lince běží jen při provozu Proxy-ARP.
- Ano, ARP umožňuje získat IP adresu protější stanice, pokud známe jen její HW adresu.
- Ne, po sériové lince protokol ARP neběží, ani při použití Proxy-ARP. Jde o point to point spojení. [ANO]
- Ano, ARP umožňuje získat HW adresu protější stanice, pokud známe jen její IP adresu.
Hromadná písemka 2006/2007[]
1. Co je obsahem adresáře /etc/init.d? [1]
Kdy se tento adresář používá [2]
2. Co je to i-node? [3]
Jakým datovým typem je implementován (integer, reál, char, struct...)? [1]
3. Je dán disk se systémem UFS. Na disku je v kořenovém adresáři soubor FILE o
velikosti 1 MB a znakové zařízení ABC s major číslem 5 a minor 1. Dále je tam
symbolický link SFILE na soubor FILE a hardlink na HABC na zařízení ABC.
Načrtněte vnitřní dátové struktury UFS. [8]
4. Zhodnoťte principiální rozdíl v zálohování programem tar a ufsdump. [2]
Jmenujte dvě výhody tar [2]
Jmenujte dvě výhody dump [2]
5. Co je to kernel modul? [2]
Čím se liší od knihovny? [2]
Mohla by být stejná věc implementována knihovnou? Proč? [2]
6. Jakou výhodu/kvalitu přináší portmapper (rpc.bind) [2]
Která konkrétní služba portmapper využívá? [1]
7. Co je to proc systém souborů? [2]
K čemu slouží? [1]
8. Uživatele jejichž jméno začíná znakem "a" lze vypsat např. takto:
grep ^a /etc/passwd grep ^a < /etc/passwd
V obou případech uveďte jaká systémová volání provede shell, aby docílil spuštění příkazu grap a zvýrazněte rozdíly. [6]
Kolik parametrů získá příkaz grep? [1]
Zkouškové otázky[]
2006/2007[]
Popište systémová volání kill, write, exec, dup, signal[]
- kill - int kill(pid_t pid, int sig) pošle procesu, nebo skupině signál, pokud signál není uveden pošle signál 15 (TERM)
- write - zápis bloku do souboru
- dup - duplikuje file descriptor a přiřadí mu nejnižší volné číslo
- exec - ...
- signal - void (*signal (int sig, void (*disp)(int)))(int) přiřadí signálu sig handler disp
(stačilo, parametry a návratové hodnoty nepožadoval)
Tunelovani portu pres SSH - k cemu to je, jak to funguje[]
[]
Co se stane s potomkem procesu, skončí-li jeho rodič? Co je "orphan proces" a co "zombie proces"?[]
Je přeřazen pod proces init.
Proces zombie je proces, který byl ukončen, ale nebyl doposud "uklizen". Odklizení provádí nadřízený proces. Program vytvoří nový proces, provade nějaké výpočty a pak na něj zavolá funkci wait(). Když však podřízený proces skončí dříve, než nadřízený proces zavolá funkci wait(), stane se z něj proces zombie. Až nadřízený proces zavolá funkci wait(), získá návratový kód podřízeného procesu, tento proces se zruší a funkce wait() se okamžitě vrátí. Z toho plyne, že je nezbytné zajistit, aby každý proces měl stále určeného rodiče (pokud by totiž rodič skončil dříve než potomek, nikdo by jeho návratový kód nepřebral a proces bu navždy zůstal nečinný v paměti).
Pokud při ukončování procesu zjistíme že má potomky, ustanovíme jejich rodičem proces Init (aby je měl kdo odstranit z paměti) a nazýváme je sirotčí (orphan processes).
[]
Set UID bit je vlastnost souboru uložená v i-node. Pokud je nastaven, program po spuštění získá práva vlastníka souboru (tedy například roota). Příklady nenahraditelnosti: /bin/su, /bin/passwd, /bin/ping (posilani ICMP paketu)
Sticky bit[]
Je vlastnost i-nodu. Nastavení u adresáře znamená, že soubory uvnitř mohou být přejmenovány nebo odstraněny pouze svými vlastníky nebo rootem (SB má dokonce větší prioritu než nastavení práv adresáře). Toto můžete například využít, jestliže chcete mít nějaký společný adresář, kde mohou uživatelé společně sdílet nějaká data. SB se nastavuje pomocí chmod +t.
U souborů a symlinků má jiný význam viz http://www.faqs.org/faqs/hp/hpux-faq/section-70.html
Použití např. /tmp, /var/tmp
Rozdíl a výhody tar a dump/restore[]
dump/restore | tar | cpio | |
---|---|---|---|
inkrementální záloha | ano, 9 úrovní | ne | ne (pomocí find?) |
vyžaduje roota | ano | ne | ne |
zachovává čas posledního přístupu | ano | ne | ne |
rychlejší | ano | ne | ne |
relativní záloha | záloha absolutní, obnova relativní | nastavitelné | nastavitelné |
libovolný FS | ne, UFS | ano | ano |
interaktivní :-) obnova | ano | ne | ne |
zadání souborů | ? | parametrem | ze std vstupu |
2005/2006[]
Co je to CORE, k čemu se používá, jak zabráníme jeho vytvoření?[]
obsahuje stav procesu v době jeho pádu, je to dobré k ladění chyb. Jeho vytvoření zabráníme např. nastavením resource limitu na 0, nebo vytvořením adresáře core
Kde je uloženo jméno souboru ? (možnosti i-node, datový blok, superblok)[]
V datovém bloku adresáře.
V jakém formátu je uložen v jádře čas?[]
Longint sekundy od 1.1.1970 00:00:00 GMT
Jaký je rozdíl mezi knihovní funkcí a funkcí jádra? Uveďte od každé 3 příklady.[]
funkce jádra běží v privilegovaném modu. funkce jádra: open, read, write knihovní funkce: fopen, fread, fwrite,...
Kde je uloženo NICE číslo procesu ? (možnosti v paměťové časti procesu, ve sdílené paměti jádra) Proč tomu tak musí být?[]
Je uloženo v paměti jádra v tabulce procesů. NICE je statická priorita procesu. Musí to tak být protože proces může zapisovat kdekoliv do své paměti a mohl by si tak libovolně měnit prioritu.
Může na jeden soubor ukazovat více filedescriptorů?[]
Ano může.
Jaký formát mají filedescriptory ? (možnosti struct, integer, pointer)[]
Integer
Může nějaký proces číst/zapisovat z/do souboru, aniž by ho předtím otevřel? Proč?[]
Ano, může pokud zdědí filedescriptor od předka
Kolik i-nodů a kolik datových bloků obsahuje : soubor, adresář, symbolický link, blokové zařízení ? Vždy uveďte min a max počet.[]
i-node dat. bloky min max min max soubor 1 1 0 x adresář 1 1 1 x symb. link 1 1 1 1, teoreticky i více blokové zař. 1 1 0 0 symb. link 1 1 0 nekdy se zapise primo do i-nodu viz pozn. 1
pozn. 1: (Ext2FS) je to rychlejsi a nezabira to datovy blok navic :-) viz http://gama.fsv.cvut.cz/~soukup/vyuka/k153pg10/rok2002/semestr/vysledky/ilona_netolicka/index.htm
[]
Jsou to instrukce které se mohou vykovávat pouze v privilegovaném módu procesoru. Privilegované: halt, in, out Neprivilegované: mov, add, sub, div, shl, jmp
Příkazy: a) cat /etc/passwd a b) cat < /etc/passwd - jak je provede shell?[]
a) shell
| + fork()| | exec("/bin/cat", "/etc/passwd") | wait()
b) shell
| + fork()| | | A = open("/etc/passwd",...); | dup2(A,0); #deskriptor 0 (standardní vstup) se pred prepsanim zavre | exec("/bin/cat"); wait()
Když zadá místo /etc/passwd /etc/passwdx, jaká bude chybová hláška. takže u a) něco jako cat: cannot open file, b) shell: cannot open file
Co je to ULIMIT[]
nastavuje omezení na: počet potomků, velikost core, počet file descriptorů prikaz pro nastaveni enviroment pro procesy
Možnosti meziprocesorové komunikace.[]
Sdílená pamět, fronta zpráv, semafor, zprávy, pipe, signály, síťové sockety
Lze zakomponovat funkci sinus do jádra?[]
Lze
Lze vyjmout funkci getuid z jádra a jedná se o privilegovanou funkci?[]
Nejedná, ale potřebuje přistupovat k některým datům, které jsou uvnitř jádra, takže vyjmout ji nelze
Jaké jsou standartní reakce na signály[]
ukončení, ukončení s core, ignorování, zastavení, pokračování ale lze si předdefinovat vlastní handlery pomocí signal
Které signály nelze předefinovat?[]
KILL, STOP
Může zabírat symbolický link více než jeden datový blok?[]
Teoreticky může, ale stačí mu jeden.
Dva procesy (každý na jiném terminálu). Jak můžou komunikovat přes pipe?[]
A: mkfifo("jmeno") … chtěl vedet, ze alokuje i-node ve filesystemu
A: fd1 = open("jmeno", "r") … chtěl vědět ze fd1 je int
B: fd2 = open("jmeno", "w")
A: write( fd1, co, kolik) … musí tam být kolik
B: read( fd2, co, kolik)
Když spustím B dříve => error. Takže se to řeší tak ze A musí B poslat signál.
Ja si myslim, ze jsou prohozene "r" a "w" v open()
Co dělá příkaz NOHUP a která systémová volání použije?[]
NOHUP PRIKAZ - zajistí pokračování PRIKAZu i po mém odhlášení (No HangUp)
Mohl by pouzit kernel call sigaction() ($man 2 sigaction nebo na Solarisu $man -s 2 sigaction).
nebo sigprocmask() -- blokuje signaly -- ty pak cekaji na odblokovani (neztrati se).
Kolik je v Linuxu signálů a) <10 b) <100 c) 2^32 d) záleží na velikosti swap[]
signálů je něco mezi 20 a 30 (asi vice)
Name Value Default Event SIGHUP 1 Exit Hangup (see termio(7I)) SIGINT 2 Exit Interrupt (see termio(7I)) SIGQUIT 3 Core Quit (see termio(7I)) SIGILL 4 Core Illegal Instruction SIGTRAP 5 Core Trace or Breakpoint Trap SIGABRT 6 Core Abort SIGEMT 7 Core Emulation Trap SIGFPE 8 Core Arithmetic Exception SIGKILL 9 Exit Killed SIGBUS 10 Core Bus Error SIGSEGV 11 Core Segmentation Fault SIGSYS 12 Core Bad System Call SIGPIPE 13 Exit Broken Pipe SIGALRM 14 Exit Alarm Clock SIGTERM 15 Exit Terminated SIGUSR1 16 Exit User Signal 1 SIGUSR2 17 Exit User Signal 2 SIGCHLD 18 Ignore Child Status Changed SIGPWR 19 Ignore Power Fail or Restart SIGWINCH 20 Ignore Window Size Change SIGURG 21 Ignore Urgent Socket Condition SIGPOLL 22 Exit Pollable Event (see streamio(7I)) SIGSTOP 23 Stop Stopped (signal) SIGTSTP 24 Stop Stopped (user) (see termio(7I)) SIGCONT 25 Ignore Continued SIGTTIN 26 Stop Stopped (tty input) (see termio(7I)) SIGTTOU 27 Stop Stopped (tty output) (see termio(7I)) SIGVTALRM 28 Exit Virtual Timer Expired SIGPROF 29 Exit Profiling Timer Expired SIGXCPU 30 Core CPU time limit exceeded (see getrlimit(2)) SIGXFSZ 31 Core File size limit exceeded (see getrlimit(2)) SIGWAITING 32 Ignore Reserved SIGLWP 33 Ignore Reserved SIGFREEZE 34 Ignore Check point Freeze SIGTHAW 35 Ignore Check point Thaw SIGCANCEL 36 Ignore Reserved for threading support SIGLOST 37 Exit Resource lost (for example, record-lock lost) SIGXRES 38 Ignore Resource control exceeded (see setrctl(2)) SIGJVM1 39 Ignore Reserved for Java Virtual Machine 1 SIGJVM2 40 Ignore Reserved for Java Virtual Machine 2 SIGRTMIN * Exit First real time signal (SIGRTMIN+1) * Exit Second real time signal ... (SIGRTMAX-1) * Exit Second-to-last real time signal SIGRTMAX * Exit Last real time signal
Co je to ACL?[]
Access Conrol List. Rozšiřuje práva souboru, pomoci těchto listů se může nastavit, který konkrétní uživatel do toho kterého souboru může zapisovat, číst atd..
Co delaji volani kill, exec, dup, fork, ...[]
kill posila signaly kill(signal,pid) exec nahradi stavajici proces novym dup duplikuje zadany file descriptor a priradi mu nejnizsi volny file descriptor fork vytvori noveho potomka
Co je to core a co to obsahuje[]
je to soubor, ktery obsahuje stav procesu pri padu programu
Co je to i-node, kde se nachazi a co obsahuje[]
i-node bude ve filesystému a obsahuje: vlastníka, typ (file|directory|FIFO|block device|character device), čas poslední změny souboru, čas posledního přístupu k souboru, čas poslední změny daného i-node, přístupové práva, počet links na soubor (co hardlink to +1 link), velikost souboru, adresy datových bloků patřících souboru (více o datových blocích v i-node), (neobsahuje název souboru ten je v adresáři)
zdroj: http://www.angelfire.com/myband/binusoman/Unix.html
Jakym prikazem se provadi kontrola filesystemu ufs, ext2, nfs[]
fsck
Sdilena pamet mezi procesy - jak se vytvori, jak se pouziva[]
BSD funkce mmap + obodby System V má IPC někdo doplňte co se o tom řikalo :-D
Signaly - jak predefinovat handlery;co se stane,kdyz nejsou definovane; uvest priklad ctyr signalu a reakci na ne[]
nastudujte tady: http://users.actcom.co.il/~choo/lupg/tutorials/signals/signals-programming.html
Mohl by pouzit kernel call sigaction()
4 signaly -- viz vyse
ARP protokol[]
ARP slouží ke zjištění MAC adresy. Na lokální síti pošle stanice broadcast na IP a z dané IP se vrátí číslo MAC.
jak nastavit quoty, quota[]
http://linux.mikroservis.cz/quota.html (tam něco je :D)
UMASK jak se spousti, kecy okolo[]
UMASK je bitová maska pro nově vytvořené soubory, defaultní práva jsou v bashi pro soubory a adresáře . Nove vytvořený soubor má práva . Např. UMASK = , , .
nastaveni:
umask 002
Nakreslit strukturu inode-datova oblast[]
Zeptal se treba, kde je ulozenej korenovej adresar
Meziproc. kom. : starej znamej priklad: tar | gzip , mel jsem to nakreslit a popsat.[]
Co udela if(exec("/bin/ls")) printf("BLA -1") else printf ("BLA -2")[]
Provede se pouze spuštění /bin/ls. Funkce exec nahradí kód procesu novým kódem, zde /bin/ls a návratová hodnota -1 se vrací jen v případě chyby, pokud by došlo k chybě, vypíše se "BLA -1", protože -1 je vyhodnocena jako true.
if ( exec "/bin/ls" ) then printf "BLA-1\n"; #execuetd if () je zero else printf "BLA-2\n"; fi;
vypise:
bin GNUstep mail net-setup pok signals Desktop Mail mpi PAR public_html Xrootenv.0 BLA-1
vypise seznam souboru a adresaru v aktualnim adresari a BLA-1 mozna, ze v C to provede exec -- nahradi aktualni proces procesem /bin/ls, ten vypise seznam souboru a adresaru v aktualnim adresari a nic vic (ani BLA-1 ani BLA-2).
To je proto, ze ty zavorky okolo exec to pusti v subshellu a v tom se to execne.
Co udela printf("VYPIS %d",fork());[]
Návratová hodnota fork() je v rodiči PID potomka v potomkovy 0. Takže v rodičovy vypíše číslo PID potomka a v potomkovi vypíše nula.
Co udela if (fork()) exit();[]
Návratová hodnota fork() je v rodiči PID potomka v potomkovy 0. Tedy zde se provede exit() pokud je návrat nenulový, takže rodičovský proces zkončí a potomek pokračuje dál.
Jsou nejake specialni file descriptory?[]
Mam adresar root v nem 100mb soubor AA hardlink HH a symbolicky link SS nakreslete jak to bude usporadano (cylinder group, tabulku inodu, pak inode od root, souboru AA a toho symbolickeho linku), datove bloky od (root,AA,SS). To ze soubor ma 100Mb je tam proto, ze jsou pak potreba na data ukazatele 0,1,2 urovne (to ze me vypacil pri zkousce). Co se stane pri rm HH: snizi se o 1 pocet hardlinku v inodu a smaze se HH z root zaznamu o jmenech soubotu
Pipe na urovni jadra, jak to funguje (pak se ptal na pojmenovanou pipe).[]
[]
Signal Value Action Comment ------------------------------------------------------------------------- SIGHUP 1 Term Hangup detected on controlling terminal or death of controlling process SIGINT 2 Term Interrupt from keyboard SIGQUIT 3 Core Quit from keyboard SIGILL 4 Core Illegal Instruction SIGABRT 6 Core Abort signal from abort(3) SIGFPE 8 Core Floating point exception SIGKILL 9 Term Kill signal SIGSEGV 11 Core Invalid memory reference SIGPIPE 13 Term Broken pipe: write to pipe with no readers SIGALRM 14 Term Timer signal from alarm(2) SIGTERM 15 Term Termination signal SIGUSR1 30,10,16 Term User-defined signal 1 SIGUSR2 31,12,17 Term User-defined signal 2 SIGCHLD 20,17,18 Ign Child stopped or terminated SIGCONT 19,18,25 Continue if stopped SIGSTOP 17,19,23 Stop Stop process SIGTSTP 18,20,24 Stop Stop typed at tty SIGTTIN 21,21,26 Stop tty input for background process SIGTTOU 22,22,27 Stop tty output for background process
Proces s PID 1, kdy vznika, co dela, odkud cte konfiguraci.[]
$ ps -p 1 PID TTY TIME CMD 1 ? 00:00:00 init
Init is the parent of all processes. Its primary role is to create processes from a script stored in the file /etc/inittab
identifikace procesu[]
EUID, ...
procfs[]
pseudo file system, nezabira misto na disku
generuje ho jadro, obsahuje informace o bezicich procesech
adresar /proc
ls -l /proc total 262150 dr-xr-xr-x 5 root root 0 2006-12-15 11:31 1 dr-xr-xr-x 5 root root 0 2006-12-15 11:31 10 dr-xr-xr-x 5 root root 0 2006-12-15 11:31 101 dr-xr-xr-x 5 root root 0 2006-12-15 11:31 102 dr-xr-xr-x 5 root root 0 2006-12-15 11:31 103 dr-xr-xr-x 5 root root 0 2006-12-15 11:31 104 dr-xr-xr-x 5 root root 0 2006-12-18 23:58 12341 (...)
ls -l /proc/1 total 0 dr-xr-xr-x 2 root root 0 2006-12-18 23:57 attr -r-------- 1 root root 0 2006-12-18 23:57 auxv -r--r--r-- 1 root root 0 2006-12-18 13:31 cmdline lrwxrwxrwx 1 root root 0 2006-12-18 23:57 cwd -> / -r-------- 1 root root 0 2006-12-18 23:57 environ lrwxrwxrwx 1 root root 0 2006-12-18 23:57 exe -> /sbin/init dr-x------ 2 root root 0 2006-12-18 23:57 fd -r--r--r-- 1 root root 0 2006-12-18 23:57 maps -rw------- 1 root root 0 2006-12-18 23:57 mem -r--r--r-- 1 root root 0 2006-12-18 23:57 mounts -r-------- 1 root root 0 2006-12-18 23:57 mountstats -rw-r--r-- 1 root root 0 2006-12-18 23:57 oom_adj -r--r--r-- 1 root root 0 2006-12-18 23:57 oom_score lrwxrwxrwx 1 root root 0 2006-12-18 23:57 root -> / -rw------- 1 root root 0 2006-12-18 23:57 seccomp -r--r--r-- 1 root root 0 2006-12-18 23:57 smaps -r--r--r-- 1 root root 0 2006-12-18 23:57 stat -r--r--r-- 1 root root 0 2006-12-18 23:57 statm -r--r--r-- 1 root root 0 2006-12-18 13:31 status dr-xr-xr-x 3 root root 0 2006-12-18 23:57 task -r--r--r-- 1 root root 0 2006-12-18 23:57 wchan
jak jdou po sobě: kernel, shell, bootloader, init, shell, getty, login, rc skripty a ls[]
1) bootloader 2) kernel 3) init 4) rc skripty 5) getty 6) login 7) shell 8) ls Zkuste to opravit, jsem to vymyslel jen tak ;)
[]
Exec peepise vykonny kod, takze se premaze ten puvodni. (nahraje do paměti soubor spustitelný a pak hupne na entry point - není z ní žádný návrat pokud proběhne jak má) Pokud se navrátí bude to například protože nenašla soubor a návratový kód bude asi -1 a errno zjistíme co bylo za problém ;)
ls | grep ddd 2>&1 | wc –l[]
$ ls | grep ddd 2>&1 | wc -l 0
Mame 4 sitova spojeni a chceme je obslouzit pak taky chceme cekam na reakci z klavesnice, jak to vsechno udelat.[]
Musi to byt pasivni cteni, tedy ne v cyklu. Zde staci odpoved, select - tim lze udelat uplne vse, jsou i jine moznosti napr pool (nebo neco takovyho)