Skip to content

Commit c2df6f5

Browse files
author
Vladimir Kotal
committed
remove inetd slides
fixes #13
1 parent bd1fb29 commit c2df6f5

File tree

1 file changed

+0
-109
lines changed

1 file changed

+0
-109
lines changed

other.tex

Lines changed: 0 additions & 109 deletions
Original file line numberDiff line numberDiff line change
@@ -48,113 +48,4 @@
4848

4949
%%%%%
5050

51-
\pdfbookmark[1]{inetd}{inetd}
52-
53-
\begin{slide}
54-
\sltitle{Správa síťových služeb: \texttt{inetd}}
55-
\setlength{\baselineskip}{0.8\baselineskip}
56-
\begin{itemize}
57-
\item servery síťových služeb se spouští buď při startu systému, nebo je
58-
startuje démon \texttt{inetd} při připojení klienta.
59-
\item démon \texttt{inetd} čeká na portech definovaných v
60-
\texttt{/etc/inetd.conf} a když detekuje příchozí spojení/datagram,
61-
spustí příslušný server a přesměruje mu deskriptory.
62-
\item příklad obsahu \texttt{/etc/inetd.conf}:
63-
\end{itemize}
64-
\begin{alltt}
65-
ftp stream tcp nowait root /usr/etc/ftpd ftpd -l
66-
shell stream tcp nowait root /usr/etc/rshd rshd -L
67-
login stream tcp nowait root /usr/etc/rlogind rlogind
68-
exec stream tcp nowait root /usr/etc/rexecd rexecd
69-
finger stream tcp nowait guest /usr/etc/fingerd fingerd
70-
ntalk dgram udp wait root /usr/etc/talkd talkd
71-
tcpmux stream tcp nowait root internal
72-
echo stream tcp nowait root internal
73-
\end{alltt}
74-
\end{slide}
75-
76-
\label{INETD}
77-
78-
\begin{itemize}
79-
\item \texttt{inetd} je v podstatě velký \texttt{poll} cyklus obhospodařující
80-
sadu socketů podle konfigurace.
81-
\item Start přes \texttt{inetd} šetří prostředky, protože příslušný server běží
82-
pouze po čas, kdy jsou jeho služby opravdu potřeba. Nehodí se tedy pro pro
83-
spoustění vytížených služeb (HTTP) nebo služeb kde může být velký overhead při
84-
inicializaci (např. SSH).
85-
\item Typicky se pomocí \texttt{inetd} spouští servery, které se používají málo
86-
nebo jejichž inicializace je relativně nenáročná (\texttt{telnetd},
87-
\texttt{ftpd}). Silně vytížené a dlouho startující servery (\texttt{httpd}) se
88-
obvykle startují ze systémových inicializačních skriptů a běží stále.
89-
\item Často má cenu mít \texttt{inetd} vypnutý úplně. Pokud na vašem stroji běží
90-
např. pouze SSH, tak pro to se \texttt{inetd} ve většině případů nepoužívá,
91-
\texttt{inetd} by byl jen dalším serverem běžícím na stroji a zdroj
92-
potenciálního nebezpečí, pokud by se v něm nebo v jednom z něj spouštěných
93-
programů objevila bezpečnostní chyba. To by ostatně mělo platit pro všechny
94-
instalované programy poskytující síťové služby - buďto by měly implicitně
95-
poslouchat pouze na localhostu (resp. používat unixové sockety) nebo by
96-
implicitně neměly běžet a měly by být spuštěny (ve smyslu permanentně
97-
zapnuty) až tehdy když jsou skutečně třeba (tento přístup se označuje jako
98-
\emph{secure by default}).
99-
100-
101-
\end{itemize}
102-
103-
%%%%%
104-
105-
\begin{slide}
106-
\sltitle{Formát souboru \texttt{/etc/inetd.conf}}
107-
\texttt{služba soket proto čekání uživ server argumenty}
108-
\begin{itemize}
109-
\item \texttt{služba} \dots{} jméno síťové služby podle \texttt{/etc/services}
110-
\item \texttt{soket} \dots{} \texttt{stream} nebo \texttt{dgram}
111-
\item \texttt{proto} \dots{} komunikační protokol (\texttt{tcp}, \texttt{udp})
112-
\item \texttt{čekání} \dots{} \texttt{wait} (\texttt{inetd} čeká na ukončení
113-
serveru před akceptováním dalšího klienta), \texttt{nowait} (\texttt{inetd}
114-
akceptuje dalšího klienta hned)
115-
\item \texttt{uživatel} \dots{} server poběží s identitou tohoto uživatele
116-
\item \texttt{server} \dots{} úplná cesta k programu serveru nebo
117-
\texttt{internal} (službu zajišťuje \texttt{inetd})
118-
\item \texttt{argumenty} \dots{} příkazový řádek pro server, včetně
119-
\texttt{argv[0]}
120-
\end{itemize}
121-
\end{slide}
122-
123-
\begin{itemize}
124-
\item Soket typu \texttt{stream}:
125-
\begin{itemize}
126-
\item \texttt{wait} \dots{} server dostane soket, na který musí aspoň
127-
jednou zavolat \texttt{accept}. Teprve tím získá nový soket, přes který
128-
může komunikovat s klientem. Po skončení serveru přebírá řízení soketu
129-
zpět \texttt{inetd}.
130-
\item \texttt{nowait} \dots{} \texttt{inetd} zavolá \texttt{accept} a
131-
získaný soket předá serveru, server tedy může rovnou komunikovat (může
132-
používat standardní vstup a výstup) a nemusí vědět, že komunikuje po
133-
síti. Mezitím \texttt{inetd} čeká na další klienty a podle potřeby
134-
spouští další instance serveru.
135-
\end{itemize}
136-
\item Jak pro \texttt{wait} tak pro \texttt{nowait} provedl \texttt{inetd}
137-
na soketu volání \texttt{bind} aby mu přiřadil číslo portu podle pole
138-
\texttt{služba}.
139-
\item V případě \texttt{wait} dostane server soket od \texttt{inetd} v podobě
140-
deskriptoru 0 (standarní vstup). \texttt{inetd} před voláním \texttt{fork}
141-
provedl \texttt{dup2(sock, 0)}, kde \texttt{sock} je nabindovaný socket.
142-
Viz příklad \example{inetd/accept-rw.c}.
143-
\item V případě \texttt{nowait} \texttt{inetd} zavolá \texttt{accept} (pro TCP
144-
spojení), přesměruje deskriptory 0, 1, a 2 do síťového socketu a spustí daný
145-
server.
146-
Viz příklad: \example{inetd/echo-server.sh}. Podívejte se do daného skriptu pro
147-
podrobné instrukce, jak ho použít.
148-
\item Pro soket typu \texttt{dgram} má smysl pouze \texttt{wait}. Server musí
149-
přečíst ze soketu aspoň jeden datagram.
150-
\item Jestliže \texttt{inetd} restartuje server (kromě \texttt{stream~nowait})
151-
příliš často (cca jednou za sekundu), usoudí, že nastala chyba a po určitou dobu
152-
(asi 10 minut) službu zablokuje (nespouští server a odmítá spojení). Ostatní
153-
servery spouští normálně dál.
154-
\item Pro zajímavost, ne všechny systémy musí nutně \texttt{inetd.conf} používat
155-
stejným způsobem. Například od Solarisu 10 se tento soubor použije pouze pro
156-
po\-čá\-teč\-ní konverzi do interní databáze pomocí \texttt{inetconv(1M)} a pro
157-
zapínání a vypínání služeb se pak používá příkaz \texttt{inetadm(1M)}.
158-
\end{itemize}
159-
16051
\endinput

0 commit comments

Comments
 (0)