1719 |
kan erin schrijven (\texttt{writable = no}). De bestanden zelf zitten op onze Unix server |
kan erin schrijven (\texttt{writable = no}). De bestanden zelf zitten op onze Unix server |
1720 |
in de directory \file{/opt/export/software}. |
in de directory \file{/opt/export/software}. |
1721 |
|
|
1722 |
|
Meer informatie: zie \url{http://www.samba.org/} en |
1723 |
|
\url{http://www.riverdale.k12.or.us/linux/netadmin/samba.html}. |
1724 |
|
|
1725 |
\chapter{Firewall/gedeeld internet} |
\chapter{Firewall/gedeeld internet} |
1726 |
\section{Linux als gateway} |
\section{Linux als gateway} |
1727 |
Internet is opgebouwd uit een groot aantal onderling verbonden kleine netwerkjes. |
Internet is opgebouwd uit een groot aantal onderling verbonden kleine netwerkjes. |
2557 |
\label{webminsecretariaat} |
\label{webminsecretariaat} |
2558 |
\end{center} |
\end{center} |
2559 |
\end{figure} |
\end{figure} |
2560 |
|
|
2561 |
|
\chapter{Elementair systeembeheer} |
2562 |
|
Uiteraard kunnen we binnen het bestek van deze cursus onmogelijk een complete |
2563 |
|
cursus systeembeheer aanbieden. Wat volgt dient dan ook eerder als het tipje |
2564 |
|
van de sluier te worden beschouwd. |
2565 |
|
|
2566 |
|
\section{Gebruikers aanmaken en verwijderen} |
2567 |
|
Gebruikers hebben onder Unix een gebruikersnummer (UID, User ID) en groepsnummer |
2568 |
|
(GID, Group ID). Een gebruiker \commando{jan} aanmaken gaat met |
2569 |
|
\begin{center}\commando{adduser jan}\end{center} |
2570 |
|
Standaard maakt \commando{adduser} een extra groep voor deze gebruiker aan. |
2571 |
|
Als we \commando{adduser} laten doen, dan krijgen we uiteindelijk dus een hele hoop |
2572 |
|
groepen die slechts \'e\'en enkele gebruiker bevatten en dat is niet echt het idee dat |
2573 |
|
we van een `groep' hebben. Met de \commando{-g} optie kunnen we een naam of |
2574 |
|
een nummer van een groep opgeven waar de gebruiker moet toe behoren: |
2575 |
|
\begin{center}\commando{adduser -g studenten jan}\end{center} |
2576 |
|
De groep \commando{studenten} met dan wel bestaan (zie verder). |
2577 |
|
Willen we dat alle nieuwe gebruikers standaard in de groep \commando{studenten} |
2578 |
|
terechtkomen, dan kunnen we deze standaardwaarde instellen met |
2579 |
|
\begin{center}\commando{adduser -D -g studenten}\end{center} |
2580 |
|
De \commando{-D} optie stelt standaardwaarden (\commando{D}efault) in. |
2581 |
|
Deze instellingen kunnen de tekstbestandenfanaten ook wijzigen in |
2582 |
|
\file{/etc/default/useradd}. Dit bestand wordt pas aangemaakt als je de eerste keer |
2583 |
|
\commando{adduser} met de \commando{-D} optie aanroept. |
2584 |
|
|
2585 |
|
Elke nieuwe gebruiker krijgt ook een eigen \begrip{home directory}, waar |
2586 |
|
ze haar eigen bestanden in kwijt kan, die \commando{adduser} invult met |
2587 |
|
een kopie van \file{/etc/skel}. Standaard zitten daar enkel wat configuratiebestanden in |
2588 |
|
(ze beginnen allemaal met een punt, dus doe eens \commando{ls -al /etc/skel}); |
2589 |
|
als systeembeheerder kunnen we hier bestanden of directories aan toevoegen. |
2590 |
|
|
2591 |
|
Voor elke gebruiker wordt er een regel in \file{/etc/passwd} aangemaakt, |
2592 |
|
waar onder andere de loginnaam, groep, home directory,~\dots bijgehouden |
2593 |
|
wordt. De wachtwoorden zitten in \file{/etc/shadow} (als we dat tenminste bij |
2594 |
|
de installatie gevraagd hadden; anders zitten ze ook in \file{/etc/passwd}). |
2595 |
|
Groepen zitten in \file{/etc/group}. We kunnen een groep bijmaken door een regel |
2596 |
|
in dat bestand bij te schrijven of door simpelweg iets te typen als |
2597 |
|
\begin{center}\commando{addgroup studenten}\end{center} |
2598 |
|
|
2599 |
|
\section{Belasting van de processor in de gaten houden} |
2600 |
|
Een algemene toestand van het systeem krijgen we met \commando{uptime}: |
2601 |
|
\begin{verbatim} |
2602 |
|
22:23:03 up 3 days, 9:21, 2 users, load average: 0.00, 0.00, 0.00 |
2603 |
|
\end{verbatim} |
2604 |
|
We zien dat de lokale tijd 22:23:03 is en dat onze computer al 3 dagen en 9u21 aan het draaien is. |
2605 |
|
Er zijn twee gebruikers ingelogd. De \index{load average}\Begrip{load averages} staan allemaal |
2606 |
|
op nul. Een load average geeft aan hoeveel programma's er gemiddeld rekentijd nodig hadden; |
2607 |
|
is dit gemiddelde 1, dan was er dus altijd (gemiddeld) \'e\'en programma dat wou rekenen |
2608 |
|
zodat de computer (in de veronderstelling dat we maar \'e\'en processor zitten hebben) |
2609 |
|
volledig belast was. Is de load average bijvoorbeeld 0.25, dan was er maar tijdens een kwart |
2610 |
|
van de tijd een programma aan het rekenen en dus is onze computer relatief weinig belast. |
2611 |
|
Een average van 3 geeft daarentegen aan dat er gemiddeld drie programma's tegelijkertijd |
2612 |
|
iets willen doen; er wordt dus van onze computer drie keer zoveel gevraagd als hij kan leveren. |
2613 |
|
|
2614 |
|
In ons voorbeeld draaien er wel vele programma's maar de load average was toch nul: |
2615 |
|
dit geeft aan dat al die programma's gewoon zaten te \Begrip{slapen}: ze wachten op een |
2616 |
|
bepaalde gebeurtenis (een gebruiker die op een toets drukt, een bepaalde tijd die verstreken is) |
2617 |
|
en het besturingssysteem regelt alles zo dat zulke programma's geen rekentijd verbruiken. |
2618 |
|
|
2619 |
|
Als de load average hoog is, dan willen we natuurlijk wel weten welke programma's er |
2620 |
|
aan het draaien zijn. Met \commando{top} krijgen we een interactief overzicht van |
2621 |
|
alle draaiende programma's (figuur \label{topfiguur}). |
2622 |
|
De programma's die het meeste rekentijd aan het verbruiken zijn staan bovenaan. |
2623 |
|
\begin{figure}[!h] |
2624 |
|
\begin{center} |
2625 |
|
\includegraphics[width=0.8\textwidth]{server/topfiguur.png} |
2626 |
|
\caption{\commando{top} in actie} |
2627 |
|
\label{topfiguur} |
2628 |
|
\end{center} |
2629 |
|
\end{figure} |
2630 |
|
Op de figuur zien we dat het programma dat het meeste rekentijd verbruikt, |
2631 |
|
op dat moment \commando{top} zelf is (het verbruikt 9,5\%van de rekentijd), |
2632 |
|
gevolgd door \commando{sshd} (1,7\%). Alle andere processen verbruiken |
2633 |
|
een verwaarloze rekentijd. We kunnen ook sorteren volgens geheugengebruik door |
2634 |
|
op \textit{M} te drukken. |
2635 |
|
|
2636 |
|
Links zien we de belangrijke kolom \textit{PID} dat het Process ID aangeeft van het |
2637 |
|
programma. Willen we een programma stoppen, dan hebben we dit nummer nodig. |
2638 |
|
Met \commando{kill 2006} (vanop een ander terminalvenster uiteraard) kunnen |
2639 |
|
we het \commando{top} programma stoppen. Wil dat niet lukken, dan kunnen we harder |
2640 |
|
proberen met \commando{kill -9 2006}. De 9 staat voor een nummer van een signaal; |
2641 |
|
\commando{kill} stuurt eigenlijk enkel maar een signaal naar een ander programma |
2642 |
|
(niet noodzakelijk om het te doen stoppen; de naam \commando{kill} is in dat |
2643 |
|
opzicht nogal ongelukkig gekozen). Het signaal dat \commando{kill} standaard geeft, |
2644 |
|
is meer een ``vriendelijk verzoek'' aan het programma in kwestie om te stoppen; |
2645 |
|
signaal~9 kan een programma daarintegen niet negeren. |
2646 |
|
|
2647 |
|
Met \commando{pstree} krijgen we ook een overzicht van de draaiende programma's |
2648 |
|
(figuur~\ref{figpstree}). |
2649 |
|
\begin{figure}[!h] |
2650 |
|
\begin{center} |
2651 |
|
\includegraphics[width=0.8\textwidth]{server/pstree.png} |
2652 |
|
\caption{De uitvoer van \commando{pstree}} |
2653 |
|
\label{figpstree} |
2654 |
|
\end{center} |
2655 |
|
\end{figure} |
2656 |
|
We krijgen een soort boom te zien die aangeeft welk programma door welk |
2657 |
|
programma opgestart geweest is; in het voorbeeld zien we dat \textit{init} een |
2658 |
|
heleboel processen heeft gestart, zoals bijvoorbeeld \textit{master} |
2659 |
|
(dit is het hoofdproces van de email-server Postfix), dat op zijn beurt twee |
2660 |
|
kind-programma's, \textit{pickup} en \textit{qmgr} heeft opgestart. |
2661 |
|
Op die manier kunnen we proberen uit te maken of een of ander proces |
2662 |
|
belangrijk is (bijvoorbeeld omdat het zich misdraagt en we het willen \commando{kill}en). |
2663 |
|
We kunnen ook \commando{pstree -p} typen, waardoor we ook nog de PID's |
2664 |
|
te zien krijgen bij elk proces, of \commando{pstree jan}, dat enkel processen van gebruiker |
2665 |
|
\commando{jan} toont. |
2666 |
|
|
2667 |
|
\section{Belasting van de schijven in de gaten houden} |
2668 |
|
Met \commando{df} krijgen we een overzicht van alle gemounte partities en netwerkschijven: |
2669 |
|
\begin{verbatim} |
2670 |
|
Filesystem 1K-blocks Used Available Use% Mounted on |
2671 |
|
/dev/hda5 1952748 1041576 811976 57% / |
2672 |
|
/dev/hda7 11970256 11058108 790540 94% /var |
2673 |
|
/dev/hdb1 38485540 31726780 4803796 87% /home |
2674 |
|
\end{verbatim} |
2675 |
|
Een iets vriendelijker uitvoer krijgen we met de \commando{-h} (\textit{h}uman, |
2676 |
|
leesbaar-voor-mensen): |
2677 |
|
\begin{verbatim} |
2678 |
|
Filesystem Size Used Avail Use% Mounted on |
2679 |
|
/dev/hda5 1.9G 1018M 793M 57% / |
2680 |
|
/dev/hda7 12G 11G 772M 94% /var |
2681 |
|
/dev/hdb1 37G 31G 4.6G 87% /home |
2682 |
|
\end{verbatim} |
2683 |
|
We zien hier beter het verschil tussen \texttt{G}igabytes en \texttt{M}egabytes. |
2684 |
|
De \texttt{/var} partitie is bijvoorbeeld 12 gigabyte groot, er is 11 gigabyte in gebruik |
2685 |
|
en nog 772 megabyte over; de partitie staat dus voor 94\% vol. |
2686 |
|
|
2687 |
|
Willen we weten hoeveel plaats een directory inneemt, dan gebruiken we |
2688 |
|
\commando{du directorynaam}. Dit geeft een overzicht dat ook alle subdirectories, |
2689 |
|
subsubdirectories,~\dots vermeldt. Willen we dat niet, dan geeft \commando{du -s} |
2690 |
|
enkel informatie over de directory zelf; het getal dat we krijgen geeft aan hoeveel |
2691 |
|
kilobytes de bestanden in deze directory en alle sub(sub\dots)directories ervan innemen. |
2692 |
|
Ook hier is er de \commando{-h} optie. |
2693 |
|
|
2694 |
|
Als er plots een partitie vol staat, is het niet altijd makkelijk de schuldige te vinden. |
2695 |
|
Met \commando{find /home -xdev -size +100k -ctime -7} zoeken we alle |
2696 |
|
bestanden in de \commando{/home} directory of sub(sub\dots)directories daarvan, |
2697 |
|
die groter zijn dan 100 kilobyte (\commando{-size +100k}) en minder dan zeven dagen |
2698 |
|
geleden gemaakt zijn (\commando{-ctime -7}). De \commando{-xdev} zorgt ervoor |
2699 |
|
dat \commando{find} niet naar een andere partitie overspringt; vooral als we |
2700 |
|
\commando{/} zelf doorzoeken kan dit handig zijn (zonder \commando{-xdev} zouden |
2701 |
|
al je (netwerk)schijven mee in de zoekoperatie betrokken worden)! |
2702 |
|
We krijgen dan een lijst van bestandsnamen; door |
2703 |
|
achteraan \commando{-ls} toe te voegen krijgen we direkt grootte, eigenaar,~\dots |
2704 |
|
te zien. |
2705 |
|
|
2706 |
|
We kunnen een directory, bijboorbeeld \commando{/tmp}, leeg houden door |
2707 |
|
handig van \commando{find} gebruik te maken: |
2708 |
|
\begin{center}\commando{find /tmp -ctime +7 -exec rm \{\} \;}\end{center} |
2709 |
|
verwijdert alle bestanden in de \commando{/tmp} directory die ouder zijn dan 7 dagen. |
2710 |
|
Handig om in een cron job te stoppen dus! |
2711 |
|
|
2712 |
|
Met \commando{vmstat} krijgen we informatie over schijven en processor te zien: |
2713 |
|
\begin{verbatim} |
2714 |
|
procs memory swap io system cpu |
2715 |
|
r b w swpd free buff cache si so bi bo in cs us sy id |
2716 |
|
0 0 0 3004 564 408 6140 0 0 0 0 102 3 0 0 100 |
2717 |
|
\end{verbatim} |
2718 |
|
We zien dat er geen enkel proces draait (\texttt{r}unning); ze slapen dus allemaal |
2719 |
|
(ze wachten tot er op een toets gedrukt wordt of iets dergelijks). |
2720 |
|
|
2721 |
|
Verder zien we dat er 3004 kilobyte swap geheugen gebruikt is (\texttt{swpd}), |
2722 |
|
er 1952 kilobyte vrij RAM-geheugen is (\texttt{free}---maar er kan ook nog |
2723 |
|
vrij geheugen zijn in de swappartitie!). |
2724 |
|
|
2725 |
|
Er werd 0 kilobyte per seconde swapgeheugen ingelezen van schijf (\texttt{si}) |
2726 |
|
en 0 kilobyte per seconde geschreven (\texttt{so}). |
2727 |
|
|
2728 |
|
Er werden 0 blokken per seconde (een blok is vaak een kilobyte) gelezen en |
2729 |
|
geschreven naar de schijven (\texttt{bi} en \texttt{bo}). |
2730 |
|
|
2731 |
|
De processor zat 0\% van de tijd programma's te draaien (\texttt{us}er time), |
2732 |
|
0\% van de tijd systeemaanroepen te doen (\texttt{sy}stem time), |
2733 |
|
en was dus 100\% van de tijd niets aan het doen (\texttt{id}le). |
2734 |
|
|
2735 |
|
De gerapporteerde waarden zijn gemiddelden van de systeemtoestand |
2736 |
|
vanaf het moment dat de computer het laatst opgestart werd tot heden, |
2737 |
|
hetgeen soms maanden kan zijn; vandaar dat we met |
2738 |
|
\commando{vmstat 10} om de 10 seconden informatie krijgen over |
2739 |
|
wat het systeem de laatste 10 seconden heeft gedaan. |
2740 |
|
|
2741 |
|
\section{Logbestanden} |
2742 |
|
In \file{/var/log} en subdirectories daarvan zitten logbestanden van een aantal |
2743 |
|
serverprogramma's; het kan de moeite lonen die af en toe in de gaten |
2744 |
|
te houden. Met \commando{less /var/log/messages} wandelen |
2745 |
|
we door het algemene logbestand (met `q' geraak je er weer uit); |
2746 |
|
iets interessanter is \file{/var/log/syslog} waar vaak wat meer in |
2747 |
|
staat (de DHCP daemon bijvoorbeeld schrijft er telkens een regel bij als hij aan |
2748 |
|
een computer netwerkinstellingen heeft uitgedeeld). |
2749 |
|
Met \commando{tail /var/log/messages} krijg je enkel de tien laatste (en dus recentste) |
2750 |
|
regels te zien. |
2751 |
|
Soms is het handig een logbestand constant in de gaten te houden; dat kan |
2752 |
|
je met \commando{tail -f /var/log/messages}: je krijgt ook weer de tien |
2753 |
|
laatste regels te zien, en telkens als er iets wordt bijgeschreven in het |
2754 |
|
bestand in kwestie, zal dat ook op het scherm verschijnen. |
2755 |
|
|