UNIX

Něco z toho, co vím o Linux obzvláště a UNIXu obecně, jakožto i nástrojích a programování pod Linux.

Not for redistribution without permission from Radek Hnilica.

Toto je věčně pracovní verze dokumentu. Její licence by se dala shrnout slovy: „Je volně k dispozici jen pro osobní potřebu.“. Můžete si ji číst, můžete si ji pro svou potřebu i zkopírovat, můžete si ji pro svou potřebu i vytisknout.

Jiné použití než výše uvedené jen s písemným svolením autora. Pokud máte zájem, ozvěte se mi.

Tato licence je prozatimní, v budoucnu ji jistě změním směrem k volnější licenci.

pubdate: 2010-06-15

Přehled revizí
Revize 22009-12-16 03:49 CETrfh
Po delší době jsem dokument opět zavedl do SCM systému. Začínám do něj zahrnovat části ze starších "ztracených" verzí.
Revize Revision: 1.7Date: 2009-03-07 03:52:40rfh
Aktuální pracovní verze.
Revize 02007-07-12rfh
Publikováno

Overview

Tento dokument vznikal postupně jako poznámkový sešit. Psal jsem si sem na co jsem došel. Krátké ukázky použití programů, jejich konfigurace a odkazy na web kde jsou relevantní informace k danému programu. Některé části jsou velmi sporé a obsahují jen odkazy či seznam programů/možností, jiné jsou rozpracovány hlouběji. Jak šel čas, tak jsem několikrát, za odlišných okolností přišel o část práce. Některé části se proto ztratily, či jsou v jiném formátu či kódování v adresáři input. Dokument je stále udržován, podle možností a času. Ale někdy se toho času nedostává a pak se dlouho nic nemění. Mnohokrát jsem si říkal, že musím některá témata přepracovat, či dokonce vůbec napsat v případě že jsem do nich napsal jen odkazy na web.

Doufám, že tento dokument bude někomu ku prospěchu.

Náplní tohoto dokumentu je hlavně Linux, v distribuci Debian. Některé informace jsou ale obecnějšícho charakteru, a tak se dají aplikovat i na jiné distribuce Linuxu, či dokonce na jiné varianty UNIXu obecně. Některé části se dokonce Linuxu či UNIXu nemusí týkat vůbec, či jen vzdáleně. Název dokumentu UNIX tak nemusí být zcela přesný, ale zatím mi postačuje a nikdo k němu neměl připomínky.

Tento dokument je primárně publikován ve dvou formách, jako statické webové stránky, a ve formátu vhodném pro tisk. Jako formát vhodný pro tisk rozumím Postscript nebo PDF. Ve verzi pro tisk dokument čítá 619 stran. Toto číslo je dané valikostí tiskového zrcadla, jakožto i velikostí fontů a dalších nastavení. Toto číslo vyčítám z mnou generovaného postscriptového souboru. Pokud by byl dokument formátován pro tisk za jiných podmínek, počet stran se může lišit.

Příšerně žluťoučký kůň úpěl ďábelské ódy.

Hleď, toť přízračný kůň v mátožné póze šíleně úpí.

Počet stran: 619


Věnování

FIXME:napsat Dedication.

Obsah

Předmluva
1. Foreword
2. Audience
3. Prerequisities
4. Organizace částí knihy
1. Úvod
I. Historie operačních systémů převážně UNIXového typu
2. Historie
2.1. Kořeny
3. Linux
3.1. Debian GNU/Linux
4. Minix
5. BSD Unix
II. Správa UNIXu
6. Instalace a základní konfigurace Debian/GNU Linuxu
6.1. Plánování instalce
6.2. Instalace Debian GNU/Linux 3.x Woody
6.3. Instalace Debian GNU/Linux 3.1 Sarge
6.4. Instalace Debian GNU/Linux 4.0r3 Etch
6.5. Instalace Debian GNU/Linux 5.0 Lenny
6.6. Instalace Debian GNU/Linux 6.0 Squeeze
6.7. FAI (Full Automatic Installer)
6.8. Alternativy
6.9. Záplatování a kompilace jádra
6.10. Zavaděče jádra
7. Disky
7.1. Diskety
7.2. Disky
7.3. Archivování disket (obrazů disket)
7.4. Správa souborového systému
7.5. Souborové systémy
7.6. CryptoFS
7.7. Zálohování
7.8. SW RAID
7.9. LVM
7.10. Automatické připojování svazků
8. Virtuální servery a emulátory
8.1. VirtualBox
8.2. VServer
8.3. User Mode Linux
8.4. Free VPS
8.5. QEMU
8.6. WMvare
9. Uživatelé a skupiny
9.1. Správa uživatelských účtů (kont)
10. sudo
11. Sledování změn v systému
11.1. filetraq
12. Instalační balíčky a jejich systémy a repositáře
12.1. Debianí DEB balíčky
12.2. Standardí repositáře Debianích balíčků
13. Server configuration tools
14. Server monitoring
14.1. mon
14.2. Monitorování serveru pomocí munin a monit
14.3. Monit
15. Zajímavé programy pro administrátory
16. Ukládání a organizace dat
16.1. Adresáře
16.2. Struktura adresářů
17. PAM
17.1. Autentikace přes MySQL
18. Správa energie
18.1. Sekce
19. Dálková správa stroje
19.1. ssh
20. Startování Linuxu
20.1. Startovací seqvence
20.2. Start jádra
20.3. Proces /sbin/init
20.4. sysinit
21. Debian From Scratch (DFS)
21.1. Nezpracované poznámky
22. SGI
22.1. Instalace Indy R5000
23. Počítače Macintosh fy Apple
23.1. Poznámky a návody
23.2. Klávesnice a klávesnicové mapy
III. Sítě
24. TCP/IP
24.1. IP adresy
24.2. Nastavení síťových rozhraní
24.3. Omezování datového toku
24.4. Bridging
24.5. Pokročilé síťování s jádrem 2.2.x (ipchains)
24.6. Síťování s jádrem řady 2.4.x
25. DNS Domain Name System
25.1. Jak DNS funguje a k čemu je?
25.2. Testování konfigurace DNS serverů
25.3. bind
25.4. bind9
25.5. La MaraDNS
25.6. djbdns
25.7. MyDNS
25.8. Registrace domén v .cz
25.9. Testování a vyhledávání chyb v DNS
26. Ladění, sledování a testování sítě
26.1. Nástroje
26.2. Měření průtoku dat
26.3. cricket - komplexní přehled o síti a tocích
26.4. DNS - kontrola a „studium“
26.5. Nagios
26.6. RRD Tool
26.7. Automatické sledování stavu sítě
27. Virtuální privátní sítě (VPN)
27.1. CIPE
27.2. IPsec
27.3. L2TP
27.4. OpenVPN
27.5. Nezapracované materiály
28. MikroTik
28.1. Prvotní nastavení
28.2. Firmware upgrade
28.3. /system default-configuration
28.4. Údržba konfigurace
28.5. Rozesílání konfigurací
28.6. Nezapracované informace přetažené ze Zimu
28.7. Konfigurace maškarády
29. Routery a switche CISCO
30. Ethernet
30.1. Historie a přehled
30.2. DHCP
30.3. BOOTP
30.4. Přepínače 3COM
30.5. VLAN 802.1Q - Virtuální síťe na ethernetu
31. SNMP Simple Network Management Protocol
31.1. Experimenty se SNMP
IV. Služby
32. Certifikáty a certifikační autorita
32.1. Vytvoření CA pomocí skriptů v Lenny
32.2. Vytvoření certifikační autority ručně s pomocí OpenSSL
32.3. Vytvoření certifikátu podepsaného naší certifikační autoritou
32.4. Jednoduché úkony
32.5. Různé poznámky
33. Elektronická pošta (e-mail)
33.1. Poštovní protokoly
33.2. MTA
33.3. MDA WORKING
33.4. MUA WORKING
33.5. courier-imap
33.6. ipop3d
33.7. fetchmail
33.8. WebMail
33.9. POP3 a IMAP servery
33.10. Antivirová kontrola dopisů
33.11. Různé poznámky
33.12. Spam a boj proti němu
33.13. Služby přístupné pomocí elektronické pošty
33.14. Webová rozhraní pro správu pošty
33.15. Komplexní instalace Postfix+Dovecot
33.16. Domain Technologie Control (DTC)
34. NFS (Network File System)
34.1. Sprovoznění jaderného NFS serveru
34.2. Sprovoznění NFS serveru v uživatelském prostoru
34.3. Sprovoznění NFS klienta
34.4. Postupy
35. Samba
35.1. Tisk do „PDF tiskárny“
35.2. Nezpracované texty
36. FTP
36.1. ProFTPd
36.2. WU-FTP
37. Internet Relay Chat
37.1. IRC klienti
37.2. Boti
38. rsync server a klient
38.1. Sprovoznění rsync serveru
38.2. Kopie disku
39. LDAP
39.1. Co je to LDAP
39.2. Instalace
39.3. Replikace LDAP databáze
39.4. Testování
39.5. Správa LDAP databáze
39.6. Udržování záznamů DNS v LDAP databázi
39.7. Schema
39.8. Třídy objektů
39.9. OID Atributy
39.10. Některé třídy a jejich použití
39.11. Nezpracované texty
39.12. Použití LDAPu ke konkrétním účelům
40. Čas
40.1. ntp Network Time Protocol
40.2. Synchronizace času v síti
V. Používání unixu a jeho nástrojů
41. Editory WORKING
42. Záznam sezení
43. WWW Servery
43.1. Apache a čeština
43.2. Apache a ruština
43.3. Další pokus s ruským apache v distribuci woody
43.4. Analýza deníků Apache
43.5. Konfigurace Appache
43.6. Moduly k Apache
43.7. Apache
43.8. Apache-SSL
43.9. PHP
43.10. Apache 2
43.11. Řízení přístupu ke stránkám
44. Apache2
44.1. Instalace a konfigurace
44.2. Základní konfigurace
44.3. Virtuální weby
44.4. Virtuální weby založené na jménu
44.5. SSL
44.6. Virtuální web hosting a SSL
44.7. Řízení přístupu k stránkám prostředky Apache
45. SQL server
45.1. MySQL
45.2. PostgreSQL
45.3. Firebird
46. Jednoduché zpracování textu
47. Postscript
47.1. Drobné úlohy
48. Zpracování zvuku
48.1. Jednoduché úkony
VI. Síťové služby orientované na uživatele
49. Systémy sledování dotazů, hotline
49.1. Request Tracker
49.2. phpGroupWare
49.3. Double Choco Latte
VII. X Window
50. Uvedení do problematiky, aneb jak to všechno funguje
51. Xorg
52. Instalace nvidia kernel modulu
53. Ovladače grafických karet
53.1. Instalace kernelového modulu pro karty NVidia
54. Základní nástroje a programy
55. Programy pro grafická prostředí
56. Xfce
56.1. Instalace a aktualizace programů
56.2. Vypínání počítače
56.3. Menu přidat/ubrat programy
56.4. Další balíčky
57. Gnome
57.1. Zajímavé applety
VIII. Programování pod UNIXem, a Linuxem obzvláště.
58. Jak psát dobrý kód
58.1. Defensivní programování
59. Příkazová řádka
60. bash
60.1. Podmíněné příkazy
60.2. Funkce
60.3. Parametry skriptu a jejich analýza
60.4. Čtení vstupu
60.5. Čtení souborů
60.6. Parsování textu
60.7. Práce s SQL databázemi
60.8. Datum a čas
60.9. Logické hodnoty (boolean)
60.10. Pole proměnných
60.11. Omezení programů
60.12. Ukončení programu včetně všech jeho potomků
60.13. Zabezpečení skriptu před vícenásobným spuštěním
60.14. Extrémní programování v shellu
60.15. Obrana před vlastními chybami
60.16. Řešení
60.17. Různé nezapracované texty a poznámky
60.18. Úvahy a náměty
60.19. Staré texty
61. awk
61.1. Zajímavé funkce
62. m4
63. Perl
63.1. CPAN
63.2. Práce s daty a časem
63.3. Síťové programování
64. Zpracování textů
65. make
65.1. Vestavěné proměnné
65.2. Obecná pravidla
65.3. Funkce
65.4. Poznámky
66. Autotools
66.1. autoconf
66.2. automake
66.3. libtool
67. Správa zdrojového kódu (SCM)
67.1. SCCS - Source Code Control System
67.2. RCS - Revision Control System
67.3. CVS - Concurent Version System
67.4. Subversion
67.5. SVK
67.6. arch
67.7. Git
67.8. Mercurial
67.9. Další systémy správy verzí
68. X Window System
69. Xlib
69.1. Konvence jmen
69.2. Překlad programu
69.3. Kostra programu
69.4. Získání informací o zobrazovacím zařízení
69.5. Grafický kontext
69.6. Kreslení
69.7. Kreslení
69.8. Okna
69.9. Obrazy a bitové mapy
69.10. Přehled vybraných funkcí
70. X Toolkit
71. Tcl
71.1. Základní prvky jazyka
71.2. Rozšíření
71.3. Tk (Tcl/Tk)
71.4. Knihovny
71.5. Extrémní programování v Tcl/Tk
71.6. tclkit
72. SQLite
72.1. Spouštěče / Triggers
72.2. Práce v příkazové řádce
73. Programování webových aplikací v KLone
73.1. Předmluva
73.2. Instalace
73.3. Vytvoření jednoduché aplikace s použitím dev-kitu
73.4. Vlákna / Thrading
73.5. Komponenty
73.6. Šablony / Templates
73.7. Ladění
73.8. Řešené problémy
73.9. Poznámky k funkcím
73.10. Klone 2.1.1rc9
74. Java
74.1.
74.2. Tutoriály a výukové materiály
74.3. Eclipse
74.4. Prostředí
74.5. Jazyk Java
74.6. Prostředí
74.7. Javadoc
74.8. Krátké statě
74.9. Nezpracované informace
75. Programování v assembleru
75.1. Jednoduchý příklad
75.2. AMD64
75.3. LP64
75.4. Různé poznámky
76. Ladění programu
77. Různé
77.1. Pojmenované roury / named pipes
IX. C
78. Volání jádra operačního systému
79. libc
79.1. Ošetření chyb
79.2. Práce se soubory
79.3. Síťová komunikace
80. glib
80.1. Práce s řetězci
81. Šifrování a hesla
81.1. Hesla
82. Knihovna funkcí
82.1. sleep
83. Knihovny funkcí
83.1. String
84. getopt
85. Meziprocesová komunikace / Interprocess Communiaction
85.1. Pojmenované roury
86. Objektově orientované programování v C
87. Extrémní programování v C
87.1. Knihovny pro testování
X. Nástroje
88. Editory, programy pro editaci textu
88.1. ed
88.2. vi
88.3. emacs
XI. Práce s textem a zpracování dokumentace
89. DocBook
89.1. Emacs nXML
89.2. DocBook Wiki
90. CMS
90.1. Geeklog
XII. Různé
91. HTML
91.1. Seznamy
92. CSS
92.1. Menu ze seznamu
93. Základy UNIXu
93.1. Přihlášení a odhlášení
93.2. Soubory a adresáře
93.3. Maska, divoké znaky
93.4. Vstup a výstup (I/O)
94. Připojení z počítačů Apple
94.1. Appleshare
94.2. Appletalk
94.3. netatalk
95. Bluetooth
95.1. Sprovoznění BlueTooth na IBM TP T30+ s jádrem 2.4.24
95.2. Nezpracované texty
96. Kalendář
96.1. Kalendář
96.2. gcal
96.3. remind
97. Příprava a vypalování CD
97.1. Získání dat z audio CD, grabování
97.2. cdrecord
97.3. cdrdao
97.4. Nezpracováno
98. Udržování konfigurace
98.1. Primitivní způsoby
98.2. Využití RCS
98.3. Systém skriptů HBIDS
98.4. Databáze konfigurací s historií a detekcí změn
99. Palm Pilot
99.1. Balíček programů pilot-link
99.2. Nezařazené texty
100. Sazba
100.1. groff/troff/nroff
100.2. TeX
101. Přehled distribucí Linuxu
101.1. Malé distribuce
101.2. Záchranné CD
102. LEAF
102.1. Instalace
102.2. Úpravy na obrazu diskety
102.3. Poznámky ke konfiguraci
103. Wiki Wiki
103.1. MiniWiki
103.2. TWiki
103.3. Nezapracované poznámky
104. Groupware WORKING
104.1. Kolab Groupware
104.2. Groupware a MS Windows
105. Vytváření statických webů
105.1. nanoc
106. Specifický software
106.1. SAS
XIII. Různá HW zařízení
DNS-323
1. Informace a odkazy:
2. Environment
3. How to organize your data
4. Using fun_plug software
5. Some tasks
6. How the device works and what's in it
A. Seznam osobností z UNIX scény
Index
Literatura
I. Moje Reference
as — the assembler
Example Glossary

Seznam obrázků

6.1. Ověření výběru souborových systémů
27.1. Konfigurace Linux Host — Linux Host
27.2. Konfigurace Linux Host — Linux Host
27.3. Konfigurace Linux RoadWarior — Linux AccessRouter
27.4. Experimentální konfigurace pro IPsec
27.5. Testovací konfigurace pro IPsec
27.6. Obrázek konfigurace Linux server — Mac OS-X roadwarrior
27.7. Obrázek konfigurace Linux server — WinXP roadwarrior
27.8. Obrázek konfigurace Linux server — WinXP roadwarrior
33.1. Život emailu
33.2. Graf toku dopisů postfixem
33.3. Graf příjmu dopisů
33.4. Graf doručování dopisů
60.1. Pole ve zkratce
67.1. Nový projekt

Seznam tabulek

6.1. FAI_FLAGS
16.1. Podadresáře kořenového adresáře
19.1. Důležité soubory
24.1. Sťování v Linuxu
24.2. Přidávání a odebírání pravidel s pomocí iptables
24.3. Akce
25.1. Nameservery NIC CZ
33.1. Kódy odpovědí SMTP
39.1. Seznam RFC dokumentujících LDAPv2
39.2. Seznam RFC dokumentujících LDAPv3
39.3. Příklad hierarchie OID
39.4. Podporované syntaxe
39.5. Podporovaná srovnávací pravidla
39.6. OID
39.7. Komentovaná ukázka
40.1. Časové servery
63.1.
65.1. Rychlý přehled proměnných v Makefile
74.1. Primitivní typy v Javě
74.2.
75.1. Tabulka vybraných systémových volání jádra
75.2.
88.1. Přehled adresních příkazů
88.2. Přehled příkazů
88.3. Navigace po souboru
88.4. Emacs Version Control
88.5. Emacs server
88.6. příkazy
88.7. Pohyb po textu
88.8. Stříhání a kopírování
88.9. Práce se soubory
88.10. Práce s buffery a okny
88.11. SGML
88.12. Různé
89.1. Přehled klávesových zkratek
89.2. Doporučené funkce
98.1. Doporučené způsoby úpravy některých konfiguračních souborů
100.1. Knihovna maker pro groff

Seznam příkladů

6.1. Příprava instalačních disket Debian Potato
6.2. Ukázkové nastavení tohoto souboru
6.3. Ukázka /etc/apt/sources.list pro distribuci Woody
6.4. Ukázka /etc/apt/sources.list pro stabilní distribuci a české archívy
6.5. Ukázka /etc/apt/sources.list pro lokální „cache“ balíčků
6.6.
7.1. Skript hdtest
12.1. conf/distributions
12.2. conf/incoming
14.1. Ukázka částí konfiguračního souboru /etc/mon/mon.cf
14.2. Příklad užití monitoru fping.monitor
24.1. Ukázka omzení rychlosti na eth1
26.1. Ukázkový soubor pro ipac
26.2. /etc/default/nagios3
26.3. Ukázky vytřžené z konfigurací (jyxo)
26.4. Definice služby
27.1. pikara:/etc/cipe/peers/morfu
27.2. pikara:/etc/cipe/ip-up
27.3. morfu:/etc/cipe/peers/pikara
27.4. morfu:/etc/cipe/ip-up
27.5. pikachu:ipsec1.conf
27.6. yoghurt:ipsec1.conf
27.7. yoghurt:ipsec2.conf
27.8. Příklad nastavení ipip tunelu
32.1. ca_req
32.2. ca_sign
32.3. ca_export_outlook
39.1. Skript pro obnovení slave LDAP serveru
43.1. Příklad konfigurace virtuálního web serveru
44.1. Soubor /etc/apache2/sites-available/exmple
44.2. Soubor /etc/apache2/sites-available/myothercompany
44.3. Ukázka konfigurace virtuánlího webu rt
44.4.
45.1. Příklady z dokumentace MySQL
60.1. Kopírování souborů
60.2. Konfigurace Apache
60.3. Jednoduchý CGI skript
60.4. Proměnné prostředí
60.5. Jednoduchý formulář
61.1. Funkce pro ořezání zbytečných mezer okolo řetězce trim
63.1. Jednořádkové ukázky
63.2. .
63.3. noname
63.4. time.pl
67.1. Jednoduchý skript pro zašifrování hesel
71.1. Příklad použití příkazu if
71.2. Příklad užití příkazu switch
71.3. Příkaz použití příkazu for
71.4. Příkaz použití příkazu for
73.1. Soubor auth_hooks.c z ukázkové aplikace klapp-auth-simple-1.1.0
75.1. Použití 64-bit systémových volání
75.2. Použití 32-bit systémových volání
75.3. Použítí 32-bitového volání write
79.1.
87.1. run-tests.c
92.1. HTML kód menu ze seznamu
92.2. CSS kód pro menu ze seznamu
98.1. rcsvi
98.2. rvi
98.3. collector.pl
98.4. cvschecker.pl
99.1. Záloha dat z Palma na WS
99.2. Instalace programu do Palma
99.3. Instlace poznámek do Palma
99.4. Čtení „poznámek“ z projektu RISC8