Abschnitt 6 als pdf-File

Transcription

Abschnitt 6 als pdf-File
UNIX System, Netz und Kommunikation
1 von 21
http://physik.kfunigraz.ac.at/~cbl/Unix/admin/mk_combined_file.php
UNIX System, Netz und Kommunikation, version dated 2007-06-29 09:30:53
6. Systemadministration
Selbst wenn du nur dein eigenes Linux auf deinem Privat-PC installiert hast: Du musst das System "am Leben erhalten". Da
gehören regelmäßige Wartungsaufgaben wie das Löschen mancher temporärer Datenfiles aber auch die Einstellun
Systemparametern und das Einrichten von Benutzeraccounts.
Nach der Erstinstallation des Systems gehören zu den regelmäßigen Aufgaben der SysAdmin unter anderem
Einrichtung neuer User-Accounts
Beratung der Benutzer (auch in Security Angelegenheiten)
Überwachung des Betriebes und der Ressourcen:
Filessysteme
Hilfestellung für die Benutzer (falls zum Schutz anderer Benutzer notwendig auch Ei ngriffe mittels nice und
renice!)
Backups
Cron-Jobs
Überwachung der Log-files
Regelmäßige Löschaktionen: /tmp, vielleicht auch /usr/tmp
Entfernen unnötiger core-Dumps
Einrichtung und Überwachung der Drucker
Mail und Sendmail
Software
Update des Basis-Systems
Installation neuer Software
Netzwerk Management
Überwachung der Security
Einige dieser Aufgaben wollen wir hier besprechen. Allem voran gestellt ist aber ein äußerst wichtiger und nützlicher Rat:
Lege ein System-Log an!
In diesen File - am besten im root-Home /root - vermerkst du alle Arbeiten am System, jeweils mit Datum und kurzer Notiz. Welche
Links du angelegt hast, welche Scripts du verändert oder hinzugefügt hast, welche Software hinzugefügt wurde, welche Probleme
dir auffallen. Diese Dokumentation mag manchmal umständlich scheinen, aber nach einiger Zeit wirst du sehen, wie nützlich sie dir
ist. Im Idealfall kannst du daraus später lernen, wie du ohne Umwege ein vollständiges, funktionsfähiges System rekonstruier
kannst.
6.1 Konfiguration
6.2 User Management
6.3 Mail Administration
6.4 WWW Administration
6.5 Dateisysteme
6.6 Printer
6.7 Software und Admin Tools
Das Internet wird in einem gesonderten Abschnitt
TCP/IP und Internet besprochen, ebenso das wichtige Problem
Security .
Hier noch ein Literaturhinweis:
AEleen Frisch: UNIX System Administration (deutsche Übersetzung; O'Reilly, Bonn: 1996)
und ein Link
http://linux.nbs.at/HOWTO/Config-HOWTO.html
aus der Liste der Linux-Howtos:
http://linux.nbs.at/HOWTO/
Druckversion: Abschnitt 6 als pdf-File (152 Kb)
29.06.2007 10:14
UNIX System, Netz und Kommunikation
2 von 21
http://physik.kfunigraz.ac.at/~cbl/Unix/admin/mk_combined_file.php
6.1 Konfiguration des Systems
Wenn der Computer eingeschaltet wird (früher wurde dieser Vorgang "bootstrap" genannt, nach dem Freiherrn von Münchhause
der sich an seinen Schnürsenkeln - den "bootstraps" - aus dem Sumpf gezogen hat), dann wird durch eine kleines fest installiertes
Programm zunächst der UNIX-Kernel geladen. Dieser stellt die wichtigsten Funktionen (Datei-Zugriffe und ähnliches) zur
Verfügung und startet selbst viele weitere Programme. Nach der Vorbereitungsphase befindet sich das System in folgendem
Zustand: Neben dem Kernel sind mehrere System-Programme aktiv, die allerdings meist nur "in Wartestellung" sind, und
bestimmte "Zurufe" des Kernels oder der Benutzer warten. Solch ein Programm ist ein sogenannter "Daemon". Gesteuert werde
viele der Funktionen des jeweiligen Daemons durch Konfigurationsfiles.
Je nach UNIX-Distribution werden die Konfigurationsfiles durch Installationshilfen (wie etwa yast oder yast2 bei SuSE) interaktiv
vorbereitet. Allerdings sollte man sich später vergewissern, dass nicht zuviele unnötige Skripts gestartet werden und im
Hintergrund System-Ressourcen abziehen. Auch die Sicherheit des Systems gegen Einbrüche ist oft nicht sehr gut gegeben un
man sollte "aufräumen" (siehe auch 7. Security ).
Am besten sieh dir einmal beim Starten des Systems an, welche Prozesse da ablaufen. Jeder gute Daemon meldet sich
Kurzmeldung. Wenn dir einer nicht geheuer ist: nachsehen und notfalls abschalten.
6.1.1 Boot-Vorgang
6.1.2 Daemon(s|en)
6.1.3 Konfigurationsfiles
http://sitar.berlios.de/ )
Ein sehr nützliches Programm habe ich küzlich entdeckt: "SITAR - System InformaTion At Runtime" (
liefert nicht nur vollständige Informationen über das installierte System und die Konfigurationsfiles sondern unter anderem eine
Liste aller installierten Pakete. Das ist wichtig, wenn man gerne ein System mit möglichst den gleichen Softwarepaketem
installieren will.
6.1.1 Boot-Vorgang
Der Vorgang des "booten" soll natürlich möglichst allgemein sein und durch die oder den SysAdmin leicht steuerbar. Daher haben
die verschiedenen UNIX-Distributionen jeweils ein durchdachtes System von Konfigurationsfiles vorgesehen, mit denen man
Aktionen beeinflussen kann. Leider sind diese Konfigurationsfiles nicht wirklich standardisiert. In vielem ähneln sich die Strukture
und die Übereinstimmung hat im Lauf der vergangenen Jahre zugenommen.
Ein im Read-Only-Memory (beim PC: das BIOS) untergebrachtes kleines Programm veruscht zuerst, ein Bootprogramm zu fi
Dieses ist zum Beispiel bei PCs im sogenannten Master Boot Record (MBR, der Sektor 0 der Boot-Disk) untergebrach
Bootprogramm lädt dann den UNIX-Kernel und dieses startet Unterprozesse. Der als erstes gestartete Prozess (die Mutter
Prozesse) ist init (das ist /sbin/init in Linux, /etc/init für das SysV System SGI- IRIX). Dieser Prozess hat die niedrigste
Process ID (PID 1) und ist ein "general process spawner" und wird durch die Angaben im File /etc/inittab gesteuert. Insbesondere
wird hier das geplante "Runlevel" festgelegt.
Ich will hier als Beispiel die Linux-Distribution von SuSE wählen. Unter IRIX (SGI) sind die Strukturen ähnlich.
Die Bedeutung der Runlevels ist von der Version und Art des UNIX-Systems abhängig. Ich werde mich ab jetzt auf des Linux
System beschränken.
Es gibt (unter Linux) folgende Runlevels:
0
Auf diesem Runlevel wird das System angehalten.
1
Hier wird auf das Single-User Mode umgeschaltet; das ist der Administrator Modus, wenn
man noch kein Netzwerk und keine Graphik-Oberfläche verwenden will.
2
Das System arbeitet hier ohne Netzwerk; auf manchen System ist das der Single-User
Modus.
3
Das Netzwerk ist aktiviert, falls verfügbar werden nun auch Filesysteme anderer Hosts (über
das Network File System NFS) "angeschlossen" (mount).
4
Derzeit nicht verwendet
5
Netzwerk ist aktiviert und der X-Display Manager xdm ist gestartet. Das X Window System
muss korrrekt "aufgesetzt" sein, damit man in diesem Runlevel arbeiten kann.
29.06.2007 10:14
UNIX System, Netz und Kommunikation
3 von 21
http://physik.kfunigraz.ac.at/~cbl/Unix/admin/mk_combined_file.php
6
In diesem Level wird das System neu gestartet (reboot).
S
Hier kann beim Boot-Vorgang in den Singe-User Modus geschaltet werden. Es ist nur eine
Konsole verfügbar.
Von init werden dann mit Hilfe eines weiteren "run level master scripts" /etc/init.d/rc weitere Scripts in /etc/init.d
ausgeführt. Um die Reihenfolge der dort abgelegten Scripts (die zum Beispiel das Netz-Interface oder den Webserver st
festzulegen, werden Links zu diesen Scripts in die Directories /etc/init.d/rcX.d angelegt (X ist dabei eines der Zeichen
0,1,2,3,4,5,6,S und bezeichnet das Run-Level). Die Linknamen sind Zahlen mit Buchstaben, welche angeben ob das Script mit
dem Parameter "start" oder "stop" aufgerufen werden soll.
In diesen Directories finden sich Links mit Namen wie zum Beispiel folgende:
bash-2.04# ls /etc/init.d/rc2.d
K01wpmd
K18pcmcia
K02personal-firewall
K18zebra
K02squid
K19network
K03apache
K22dhclient
K04gpm
K22i4l
K12cron
K23alsasound
K13ircd
K23apmd
K13lpd
K23dummy
K13smbfs
K23i4l_hardware
K13xntpd
K23idedma
K14at
K23kerneld
K14identd
K23personal-firewall.initial
K14named
K23random
K14nwe
S01alsasound
K14rcyiff
S01apmd
K14rstatd
S01dummy
K15usbmgr
S01i4l_hardware
K16proftpd
S01idedma
K16snmpd
S01kerneld
K16syslog
S01personal-firewall.initial
K17bgpd
S01random
K17ospf6d
S02dhclient
K17ospfd
S02i4l
K17ripd
S05network
K17ripngd
S06pcmcia
K17route
S06zebra
K17vtysh
S07bgpd
S07ospf6d
S07ospfd
S07ripd
S07ripngd
S07route
S07vtysh
S08proftpd
S08snmpd
S08syslog
S09usbmgr
S10at
S10identd
S10kbd
S10named
S10nwe
S10rcyiff
S10rstatd
S11ircd
S11lpd
S11smbfs
S11xntpd
S12cron
S20gpm
S21apache
S22personal-firewall.final
S22squid
S23wpmd
Diese Folder werden beim Starten der Reihe nach (dem "runlevel"= 0, 1, ..bis zum höchsten vorgesehen Runlevel) analysiert.
Dabei wird eine Liste der Links mit "S" (für "Start") durchgeggangen und der Reihe nach die Skripts ausgeführt, auf welche die
Links zeigen. Das (alphabetisch) elfte S-Link ist S05network (zeigt auf /etc/init.d/network) und aktiviert dann die Anbindung ans
Netz.
Die Links mit einem "K" ("Kill") an erster Stelle im Namen werden beim "herunterfahren", also dem geregelten Abschalten d
Systems analog mit dem Parameter "stop" aufgerufen.
Die einzelnen Skript erkennen an Environment Variablen , welche Aktionen sie setzen sollen, ob es also zum Beispiel überhaupt
erwünscht ist, eine Ethernet-Karte zu aktivieren. Diese Variablen werden unter Linux durch die Files in /etc/sysconfig/ definiert.
Manche der Scripts haben auch weiter Konfigurationsfiles (wie etwa der Webserver httpd den File /etc/httpd/httpd.conf einliest).
Wenn du also neue Aktionen in diesen Startup-Prozess einbauen willst, so musst du ein entsprechendes Skript schreiben und
besten in /etc/init.d ablegen. Dieses Skript (zum Beispiel namens myscript) sollte mit den folgenden Parametern aufrufbar sein:
myscript [start|stop|restart]
Die Option" restart" dient dazu, so ein Script auch während des normalen Betrieb (zum beispiel zum Testen
Script-Konfigurationsfiles) stoppen und erneut starten zu können.
Wenn du dann ein Link im geeigneten rcX.d (vermutlich in rc2.d) anlegst, solltest du den Namen so wählen, dass das Skript zum
richtigen Zeitpunkt aufgerufen wird. So wird zum Beispiel S21apache (der httpd-Server) erst nach S05network aktiviert, da es
anderherum sinnlos wäre. Das Skript wird dann vom System beim hochfahren mit dem Parameter "start" aufgerufen.
Diese Scripts starten Prozesse, die dann meist weiterhin im Hintergund aktiv sind, sogenannte "Daemons".
Aufgabe 6.1.1.A.1
29.06.2007 10:14
UNIX System, Netz und Kommunikation
4 von 21
http://physik.kfunigraz.ac.at/~cbl/Unix/admin/mk_combined_file.php
6.1.2 Daemon(s|en)
Ein UNIX-Daemon (Disk and execution monitor) ist ein Programm, das im Hintergrund wartet und bei Bedarf bestimmte Aufgab
(etwa die Mail zu empfangen oder weiterzuleiten) übernimmt. (Die alten Griechen verstanden unter einem "daimõn" ein zwisc
Göttern und Menschen vermittelndes Wesen: recht zutreffend.)
(Zum Titel des Kapitels: Im Englischen Daemons, im Deutschen Dämonen, diese im Englischen aber eigentlich dem
Sprachverwirrung ist komplett. Hast du schlaue Kommentare?)
Boot-Vorgang gesehen: Im Folder /etc/init.d gibt es Unterdirectories mit den Namen rc0.d, rc1.d, ... bis rc6.d,
Wir haben im
welchen die beim Start und Stop des Systeme durchzuführenden Vorgänge regeln und in Script verschiedene Prozesse aktivieren.
Das sind oft eben Daemons, die dann weiter im Hintergund auf Arbeit warten.
Sieh dir doch einige der Skripts an. Die meisten sind #!/bin/sh - Skripts, damit sie möglichst allgemein einsetzbar sind.
Hier eine kurzer Liste einiger Skripts und der entsprechenden Daemons, die du vielleicht manchmal auch per Hand "schalten"
willst:
apache
dein lokaler Webserver Daemon httpd
cron
der für die Abarbeitung der Auftragsliste (crontab) von Jobs zuständige Daemon.In der
crontab kannst du angeben, welche Programme zu bestimmten Zeiten automatisch gestartet
werden sollen. Das ist eine Art Superdaemon.
firewall
aktiviert eine Firewall, die nur bestimmte Verbindungen von/nach außen zulässt
inetd
startet den inetd ("Internet Superserver" Daemon), der mit Hilfe der Konfigurationstabelle
/etc/inted.conf diverse Internetservices (ftp, telnet, loign, ...) aktiviert
lpd
line printer Daemon; mit Hilfe des Steuerungsfiles /etc/printcap werden vom lpd die
Druckaufträge abgearbeitet.
network
aktiviert (mit Hilfe weitere commands wie etwa ifconfig) die Netzverbindung(en)
aktiviert das Network File System (mit Hilfe von /etc/fstab); der nfs-Daemon (nfsd) stellt
nfs
gesteuert durch /etc/exports lokale Folder über Netz anderen Computern zum nfs-Mount zur
nfsserver
Verfügung: der automount-Daemon erlaubt es, Directories "im Fluge" bei Bedarf per NFS zu
automount
mounten.
portmap
verknüpft die internen Programmadressen mit den (vom Remote Procedure Call -Server) zur
Verfügung gestellten Internet-Port-Adresses; mit Hilfe von /etc/hosts.allow und
/etc/hosts.deny kann der Zugriff auf bestimmte Hosts beschränkt werden. Damit verbundene
Daemons sind rpc.statd und rpc.lockd.
sendmail
startet den sendmail-Daemon (SMTP-Server)
wvdial.dod Dial-On-Demand: wenn du eine Modemverbindung nur bei Bedarf aufbauen willst
xdm
X Window Display Manager
Aufgabe 6.1.2.A.1
6.1.3 Konfigurationsfiles
Die
wichtigsten
Konfigurationsfiles
sind
in
/etc
beheimatet. Einige davon wollen wir - nach ihrer Bedeutung geordnet - kurz besprechen. Für die meisten gibt es auch
entsprechende man-Seite.
/etc/inittab
/etc/X11/XF86Config
/etc/inetd.conf
Konfigurationsfile von /sbin/init; konfiguriert das System beim Start und
steuert das gewünsche Runlevel; aktiviert die Device-Manager
(meist ein Link auf xorg.conf) konfiguriert Display, Keyboard, Maus und
Monitor für das X11-System. Bitte unbedingt eine Sicherungskopie
dieses Files anlegen!
Konfigurationsfile für den Internet Superserver, der die Internetkontakte
auf den verschiedenen Sockets den Programmen zuordnet.(SysAdmin:
wenn du diesen File änderst, solltest du den inetd neu starten,
beziehungsweise mit "/etc/killall -HUP inetd" ein neues Einlesen des
Konfigurationsfiles erzwingen!)
29.06.2007 10:14
UNIX System, Netz und Kommunikation
5 von 21
http://physik.kfunigraz.ac.at/~cbl/Unix/admin/mk_combined_file.php
Beim Starten des Systems werden einige Devices "gemountet"; der Befehl
mount -t type device dir
verbindet ein Filedevice "device" (zum Beispiel /dev/hda3) vom Typ "type" (auto, nfs, ext2, ...) mit dem Directorynamen "dir".
Datei Systeme ). Wenn
Dieses Directory sollte zum Zeitpunkt des mount-Befehls schon (als leeres) angelegt sein (siehe auch
man einfach nur mount ohne Parameter eingibt, so erhält man eine Liste der aktuell gemounteten Fileysteme.
/etc/fstab
enthält die Liste der zu bei Systemstart zu mountenden Filesysteme; man
kann auf die in dieser Liste angegegeben "Mountpoints" auch bei aktivem
System zugreifen und zum Beispiel mittels "mount /floppy" oder "umount
/myzip" die enstprechenden filesystem aktivieren oder deaktivieren.
enthält die Liste der tatsächlich im Moment gemounteten Filesysteme
enthält die Liste der über NFS freizugebenden lokalen Filesysteme;
mittels exportfs wird die NFS-Konfiguration aktualisiert oder angezeigt
(siehe man exportfs)
/etc/mtab
/etc/exports
Die in fstab angegebenen Directorynamen (z.B."/mydisk") kann man mit den Kurzbefehlen
mount /mydisk
umount /mydisk
aktivieren oder deaktivieren.
Symbolische Hostnamen (host.domain) und Interner-Adressen werden durch die Nameserver verknüpft. Im Normalfall wirst
KEINEN Nameserver auf deinem Computer aktivieren. Wenn du eine symbolische Internetadresse (zum Beispiel bei ein
WWW-URL) kntaktieren willst, so sieht das System zunächst im File /etc/hosts nach, ob dort eine Zuordnung angegeben ist. Wenn
dort nichts zu finden ist, so wird versucht, mit einem der in /etc/resolv.conf angegebeben Nameserver direkt Kontakt aufzunehmen.
/etc/hosts
/etc/resolv.conf
/etc/hostname
/etc/hosts.lpd
/etc/printcap
/etc/hosts.equiv
/etc/TIMEZONE
Liste einiger bekannter Hosts; in dieser Liste muss der Eintrag für den "localhost"
(127.0.0.1) stehen. Auch die symbolische und numerische Internetadresse des
Computers muss dort zu finden sein.
Liste der bekannten Nameserver in Reihenfolge (Achtung: Manche
Linux-Konfigurationspogramme überschreiben dieen File immer nach einem
Update der Konfiguration)
Der Name des lokalen Computers; meist wird aus diesem Namen und der Tabelle
in /etc/hosts die Internetadresse des lokalen Computers ermittelt.
Liste der Hosts, von denen aus Druckaufträge für lokal verfügbare Drucker
angenommen werden
Information über Art der verfügbaren Drucker
Liste der "befreundeten" Hosts, von denen User gleichen Usernamens auf dem
lokalen Computer ohne Passwort-Angabe einloggen.
Information die Zeitzone, in der sich der Rechner befindet; diese Angabe wird zum
Umrechnen der Greenwich Mean Time (GMT) auf die lokale Zeit verwendet. Bei
Computern in einem Netzverbund kann dazu auch ein eigener Daemon timed
verwednet werden.
Für die Benutzer notwendig oder nützlich sind folgende Files:
/etc/passwd
/etc/shadow
/etc/group
/etc/motd
/etc/csh.cshrc
/etc/csh.login
Die Liste der legalen Benutzer - das können auch Daemons und andere
Programme sein!
Falls "shadowing" aktiviert ist: die Liste der Passwords
Die Gruppenamen und unter Umständen die dazugehörenden Benutzer
"message of the day", wird beim Einloggen jedem Benutzer mitgeteilt
Systemweiter .cshrc-File, der bei jedem Öffnen einer csh (also zum
Beispiel beim Einloggen des Benutzers) ausgeführt wird, bevor der
Benutzer-eigene .cshrc ausgeführt wird.
Systemweiter .login-File, der bei jedem Öffnen einer csh (also zum
Beispiel beim Einloggen des Benutzers) ausgeführt wird, bevor der
Benutzer-eigene .login ausgeführt wird.
29.06.2007 10:14
UNIX System, Netz und Kommunikation
6 von 21
http://physik.kfunigraz.ac.at/~cbl/Unix/admin/mk_combined_file.php
Weitere Konfigurationsfile zu einzelnen Daemons (wie etwa httpd) besprechen wir im Zusammenhang mit diesen.
Aufgabe 6.1.3.A.1
Aufgabe 6.1.3.A.2
6.2 User Management
Die Zugriffe zu Files und Directories werden über die Usernamen und Gruppenzugehörigkeit geregelt. Du solltest dir al
Neueinrichtung von Benutzerberechtigungen überlegen, welche Gruppen (zusätzlich zu den vom System vorgesehenen) d
einrichten willst und welche Benutzer zu welchen Gruppen gehören. Beachte dabei, dass normale Benutzer n
Systembenutzer-Gruppen wie etwa "root" sein sollten.
Gruppen in /ect/group
Am besten richtest du eine eigene Gruppe "users" mit einer Gruppennummer ein, die höher als die der Systemprogramm
(Daemons) und Applikationen (wie z.b.wwwrun oder dbmaker) ist.Wenn du mehrere Arbeitsgruppen zu betreuen hast, dann sollten
das auch verschiedene Gruppen sein, da man die Zugriffsberechtigung dann entsprechend regeln kann.
Benutzer in /etc/passwd
Halte die Benutzernamen kurz aber verständlich. Auch die Usernummern sollten höher als die der Systemuser sein. Wenn d
System über NFS mit anderen Computern verbunden ist, sollten die Usernamen und Usernummern gleicher Benutz
übereinstimmen, das erleichtert manches.
Es ist sinnvoll, die Arbeiten als SysAdmin von denen als normaler Benutzer auch log isch zu trennen. Verwende daher den
root-Account NICHT für die alltägliche Arbeit. Auch empfiehlt es sich, das Home von root nicht dort einzurichten, wo die normalen
Benutzer ihr Home haben. An der Physik legen wir das root-Home immer auf /root, die normalen Benutzer sind in /home/username
zuhause.
Hier noch ein Tipp: Richte einen zweiten User mit Root-Berechtigung ein, und verstecke das Passwort vor dir selbst (zum Beispiel
in einem verschlossenen Kuvert). Diesen Zugang kannst du dann im Notfall zu SysAdmin Arbeiten verwenden, falls dir dein echtes
root-Password einmal abhanden kommt (oder du es vergisst)!.
Shadowing
Da /etc/passwd für alle Benutzer lesbar (schreibbar nur für root) sein muss, können diese auch die dort abgelegten
verschlüsselten Password einsehen. Nun sind diese unter UNIX zwar one-way-verschlüsselt, aber gute Crack-Program
durchsuchen Password-Bibliotheken und können manchmals (vor allem schlecht gewählte) Passwords "knacken". Ein besse
Schutz ist "shadowing" (siehe auch man pwconv). In diesem Fall werden die verschlüsselten Passwords in einem File
/etc/shadow abgelegt, für den nur root Leseberechtigung hat. In /etc/passwd findet man statt eines Passwords das Zeichen "x".
Leider ist diese Methode nicht möglich, wenn man die Passwords zentral (mittels NIS - Network Information System) verwaltet.
Neue User kannst du auf verschiedene Art einrichten. Auf jeden Fall sollst du zuerst die Gruppennummer und Usern
klären.Praktisch alle UNIX-Distributionen haben ein graphisches Interface, um die Einrichtung neuer Benutzer zu erleichtern. Ich
will hier also nur eine Einrichtung "per Hand" besprechen.
Eintragung "per Hand":
Im File /etc/passwd hat jeder User eine Zeile der Form
uid:encrypted-password:gid:Vollständiger Name:homedirectory:shell
die ihn (Usernummer uid, Gruppenumer gid, Name), sein Home und seine Login-Shell festlegt.Zu Beginn solltest du also folge
Daten vorbereiten:
Username:
gug
Gruppennummer:
345
(Gruppenname: otherusers)
Usernummer:
10012
Homedirectory:
/home/gug
Anfangspassword: DimwgAP
Login-Shell:
/bin/tcsh
Editiere /etc/passwd und füge eine Zeile der folgende Form bei:
gug::10012:345:Gustav Gans:/home/gug:/bin/tcsh
Beachte: Du hast kein Password angegeben und daher ist der Account im Moment offen zugänglich. Das wird sich bald ändern.
Als nächstes richtest du dem neuen Benutzer ein Home ein und kopierst vorbereitete Standard .login und .cshrc Files (in die
Beispiel im Directory /usr/local/src abgelegt) in sein Home.
mkdir /home/gug
cp /usr/local/src/std.cshrc /home/gug/.cshrc
29.06.2007 10:14
UNIX System, Netz und Kommunikation
7 von 21
http://physik.kfunigraz.ac.at/~cbl/Unix/admin/mk_combined_file.php
cp /usr/local/src/std.login /home/gug/.login
chown -R gug.otherusers /home/gug
passwd gug
Schließlich setzt du sein Password auf den neuen Wert.
# passwd gug
New password: DimwgAP
Password changed
Wenn du nun die entsprechende Zeile im File /etc/passwd ansiehst, findest du zum Beispiel folgenden Eintrag:
gug:tvWhJqhBDIgZo:10012:345:Gustav Gans:/home/gug:/bin/tcsh
Das Password wurde also in verschlüsselter Form eingetragen. Dabei weerden auch zufällige Bits eingefügt, damit gleich
Passwords verschieden verschlüsselt sind. Selbst Root kann dein Password nicht entschlüsseln (siehe jedoch 7. Security .)
Wenn du shadowing verwendest, kannst du (zumindest auf manchen Systemen, wie etwa IRIX) nun noch
pwconv
eintippen. Damit werden die Einträge in /etc/passwd und /etc/shadow auf aktuellen Stand gebracht.
Unter Linux gib es auch das Kommando useradd. So habe ich auf dem Kursrechner die Accounts eingerichtet:
thph229:~ # useradd -D
thph229:~ # useradd -m
thph229:~ # useradd -m
thph229:~ # passwd gug
New password: DimwgAP
Re-enter new password:
Password changed
thph229:~ #....
-g 100 -s /bin/tcsh -b /home
-u 577 -c 'Gustav Gans' gug
-u 578 -c 'Donald Duck' dod
DimwgAP
Die erste Zeile legt dabei die Default-Werte für Gruppe, Shell und Home-Directory fest, die anderen legen die beiden Benutzer
(und ihre Homes) an. Die eingegebenen Passwords werden nicht angezeigt. Dabei kopiert Linux alle Files in einem
"Skelett-Folder"
namens
/etc/skel
in da Home des neuen Benutzers. Damit kann die oder der SysAdmin praktisch Standard Files (wie .cshrc) vorbereiten.
Dann habe ich zur Kontrolle nachgesehn, ob die User wohl aktiviert wurden, zum Beispiel:
thph229:~ # finger gug
Login: gug
Directory: /home/gug
Never logged in.
No Mail.
No Plan.
Name: Gustav Gans
Shell: /bin/tcsh
Da Gustav noch nie eingeloggt hat, keine Mail bekam und in seinem Home auch keineen File ".plan" angelegt hat (dieser würd
sonst statt "No Plan" ausgeschrieben werden) kam obige Meldung. Da ich aber weder Donald noch Gustav als tatsächliche
Benutzer auf dem Kursrechner finden will, entfernte ich sie (und ihre Home-Directories) gleich wieder mit:
thph229:~ # userdel -r gug
thph229:~ # userdel -r dod
Aufgabe 6.2.A.1
6.3 Mail Administration
Wir haben schon einige Male über Mail gesprochen:
Kommunikation von Benutzer zu Benutzer
Mail
- allerdings mit Betonung auf der Benutzerseite.
Wenn man mit einem UNIX-Mail Client wie Mail eine E-Mail abschickt, so wird ein "Transport-Agent" namens sendmail
gestartet, der die eigentliche Übermittlung im Hintergrund durchführt. (Das kann au ch ein anderes Tool, wie etwa smail sein; ich
beschränke mich hier auf sendmail, das noch immer die weiteste Verbreitung hat.) Das Programm sendmail sorgt mit Hilfe
seiner Konfigurationsdatei /etc/sendmail.cf für
29.06.2007 10:14
UNIX System, Netz und Kommunikation
8 von 21
http://physik.kfunigraz.ac.at/~cbl/Unix/admin/mk_combined_file.php
1. entweder die Übermittlung an den lokalen Host (falls die Adresse dorthin verweist)
2. oder die direkte Übermittlung an den Mailserver Daemon (Mailhost) der Zieladresse
3. oder die Übermittlung an einen Mail Relay Host, der für die weitere Übertragung sorgt.
Diese Aktionen werden alle von der Konfigurationsdatei gesteuert. Ihr Inhalt ist leider eher umständlich (und vielleich
unverständlich) und besteht aus zahlreichen Parameter und Mail-Makros, die die entsprechenden Namenbestimmungen
Umleitungen definieren. Da die Geschichte der E-Mail Adressen eine sehr wechselhafte war, sind im Prinzip z
Adressierungvarianten möglich (obwohl fast nie verwendet) und daher in diesem Konfigurationsfile vorgesehen.
Die
Erstellung
des
/etc/sendmail.cf
war eine der Schwachstellen und es gibt inzwischen verschiedene Tools (zum Beispiel das m4-Makropaket), um dieses Problem
zu entschärfen. Fast alle Distributoren von UNIX-Systemen liefern vorgefertigte Konfigurationsfiles, in die die lokalen Par
(Hostname, Domainname, Name des nächsten Relay Hosts etc.) halb-automatisch (zum Beispiel mittels YAST-Anfrage) eingebaut
sind. Im Normalfall kannst du damit leben. Wenn du allerdings einen Relay-Host konfigurieren willst, solltest du die w
Dokumentation zu Rate ziehen. (Es wird behauptet, dass man kein echter UNIX-Systemadministrator ist, solange man noch kein
sendmail.cf editiert hat. Es wird auch behauptet, dass man verrückt sei, wenn man es ein zweites Mal tut.)
Nun kommt ein wichtiger Punkt: Für das Versenden einer Mail ist es nicht notwendig, einen sendmail-Daemon permanent (im
Hintergrund) lauern zu haben, das der Mail-client diesen Prozess startet, der sich danach wieder verabschiedet. Für das Lesen
einer Mail braucht der Cleint auch keinen Daemon, da die Mail entweder von einem zentralen Mailhost abgeholt wird (oder auf
einem lokalen Directory /var/spool/mail oder /var/mail bereitliegt.) Um allerdings die Mail von einem anderen sendmail-Programm
zu übernehmen und entweder für den zugeordnetetn Benutzer zwischzuspeichern oder auch (in Relay-Faunktion) an einen
anderen Mailhost weiterzuleiten: dazu muss ein Daemon aktiv sein.
Die Aktionskette ist zum Beispiel an der Uni Graz folgende:
Kursrechner
Benutzer grazer (offizielle Mailadresse: [email protected]) sendet Mail an [email protected]; am Kursrechner wird
vom Mail-Programm das Programm sendmail gestartet, dieses nimmt Kontakt mit
email.uni-graz.at
auf; das ist der lokale (zentrale) Mailserver und er arbeitet sowohl als Relay als auch als Empfänger/Sender von
Mail. Der sendmail-Daemon auf email.uni-graz.at ist immer aktiv und übernimmt die Mail. Dann nimmt er Kontakt
mit dem sendmail-Daemon der Uni Linz,
email.uni-linz.at
auf. Dort wird kontrolliert, ob es einen Benutzer mit der Adresse [email protected] gibt; wenn ja, wird die
entgegengenommen und lokal gespeichert. Wenn der Empfänger in Linz seinen Mail-Client (zum Beispiel Netsca
Messenger) aktiviert und dieser beim Mailserver email.uni-linz.at anfägt, bekommt er seine neu eingetroffene Mail.
Die Funktion der Hosts mit aktivem sendmail-Daemon ist eine sehr sensible, da der Host möglichst immer am Netz verfügbar
sein sollte, genügend Speicherplatz für die ein- und auslaufende Mail haben muss, eine vorsichtige Politik bei seine
Relay-Funktione beachten muss (kein Spamming! kein Weiterleiten von Mail aus gesperrten Bereichen). Leide war der
sendmail.Daemon in den letzten Jahren das von Hackern vermutlich meist attackierte UNIX-Programm; er stellt ein
permanentes Sicherheitsrisiko dar. Viele Gauner verwenden nicht ausreichend abgesicherte sendmail-Hosts dazu, auf Kosten
des Betreibers viele Tausende von Mails (meist Reklame) zu versenden. Das Programm sendmail hat daher viele
Verbesserungen hinter sich und ist zur Zeit bei Versionsnummern über 8.12.
Du solltest dir also sehr genau überlegen, ob du sendmail tatsächlich als Daemon laufen lassen willst. Im Bereich der Physik
haben wir uns dazu entschieden, im Normalbetrieb keinen sendmail-Daemon zu aktivieren. Damit landet alle Mail beim
Uni-Mailhost email.uni-graz.at und die Betreiber (das ZID) sind für die diversen Probleme zuständig. Der Endverbraucher muss nur
seinen Client geeignet einstellen. (Je nach System Typ wird der sendmail-Daemon mittels /etc/inetd.conf oder /etc/rc.config
durch das SMTP-Flag aktiviert oder deaktiviert.)
Eine weitere Datei ist lokale interessant: /etc/aliases. Dort können Aliasnamen, zum Beispiel für Adressaten-Gruppen vergeb
werden. So bewirkt etwa der Alias
postmaster: root, gustav
Dass Mail für den Namen "postmaster" statt dessen an den User "root" geleitet wird. Der Alias
students: einstein, curie, planck
bewirkt, dass Mail an "students" and alle drei aufgelisteten User weitergeleitet wird. Nach Modifikation des Files /etc/aliases muss
der Befehel
newaliases
ausgeführt werden, um die entsprechenden Binärdateien zu aktualisieren. (Die Aliases Datei gilt natürlich nur für den loka
sendmail.)
Literatur:
C. Hunt: TCP/IP Netzwerkadministration (O'Reilly: 1998)
B. Costales, E. Allman: Sendmail - kurz und gut(O'Reilly: 1997)
29.06.2007 10:14
UNIX System, Netz und Kommunikation
9 von 21
http://physik.kfunigraz.ac.at/~cbl/Unix/admin/mk_combined_file.php
B. Costales, E. Allman: Sendmail (2nd Ed. O'Reilly: 1997)
Sendmail Home Page (http://www.sendmail.org/)
Eine neue Alternative zum sendmail-Daemon ist postfix: "What is Postfix? It is Wietse Venema's mailer that started life as an
alternative to the widely-used Sendmail program". Mehr darüber findest du unter
http://www.postfix.org
Eine dritte Alternative ist qmail, mehr findest du unter
http://www.qmail.org/
(es gibt sogar einen Preis für erfolgreiches Entdecken eines Security Holes!).
Aufgabe 6.3.A.1
6.4 WWW Administration
Zahlreiche Computer haben eigene Webserver aktiviert. Der Grund ist wohl einerseits die Selbstdarstellung des Benutze
andrerseits aber ein praktischer: Viele lokale Informationssysteme und auch Datenbanken arbeiten inzwischen mit Hilfe
dynamische html-Dokumenten, die also am einfachsten über einen lokalen Server bereitgestellt werden können. (Statisc
Dokumente kann der Web-Client selbst lesen und darstellen.) Wir haben das WWW bereits an anderer Stelle besprochen: 4.6.1
WWW
Der verbreitetste und anscheinend auch stabilste Web-Server ist Apache. Er ist in den meisten Linux-Distributionen eingebaut,
und in anderen UNIX-Systemen wird er meist vom SysAdmin nachinstalliert.
Verfügbar ist Apache zum Beipiel über die Homepage
eines der Administrationstools (siehe webmin in
http://www.apache.org . Zur Verwaltung von Apache kann man entweder
Administrationstools oder das spezielle Apache-Admin-Tool
http://www.comanche.org
) verwenden, oder den Konfigurationsfile bearbeiten. Die letzere Möglichkeit bietet sich für kleinere Änderungen un
Erstkonfiguration an.
Apache wird durch ein Script /etc/init.d/apache gestartet. Der Webserver ("http-Daemon": httpd) sollte unter einem eigenen User
(meist: wwwrun) laufen, der keine Root-Rechte hat. Je geringere Rechte dieser fiktive User hat, desto besser ist es für die
Sicherheit des System. Allerdings muss der Websever die zu veröffentlichenden Dokumente zumindest lesen und etwaige
ausführen dürfen. Mit den Parametern [stop|start|restart] kannst du als SysAdmin nach einer Änderung des Konfigurationsfiles
einen geordneten restart sorgen.
Der Webserver lauschst auf das TCP/IP Port 80 (Der Secure-Teil unter Port 81). Du kannst per telnet versuchen, dieses Port eines
Webservers direkt anzusprechen; du brauchst dazu allerdings die richtige Synatx. Mit dem textstring
GET whatever.html
bekommst du zum Beispiel den HTML-Codes des Files whatever.html im Documenthome des Webservers zurück. Genauso macht
das dein Web-Client-Programm.
Der Konfigurationsfile heisst httpd.conf und liegt, je nach Distribution, an verschiedenen Stellen, meist entweder irgendwo unter
/usr/local/lib/ oder in /etc/httpd. Im Konfigurationsfile sind vor allem folgende Angaben wichtig, da sie dem System angepasst
werden müssen:
Das Document-Home des Webservers: Dort liegen die Dokumente, die der eigentlcihen Serveradresse zugeordnet werden.
Wenn also der Server die Hostadresse www.webhome.at haben sollte, so liegt das Dokument mit dem URL
http://www.webhome.at/file.html eben unter dem Namen file.html im Documenthome des Webservers. Meist wird man dieses
Home in /usr/local/httpd/htdocs/ legen.
Die Document-Homes der Benutzer: Wo sucht der Webserver Web-Files, die zum Beispiel der Benutzer mit Namen xyz
abgelegt hat? Meist wählt man dafür einen bestimmten Foldernamen; die Benutzer müssen dann eine Golder dieses Namens in
ihr jeweiliges Home legen. Gebräuchlich ist der Name public_html (bei uns auch: WWW); ein Dokument namens
~xyz/public_html/mylife.html könnte dann mit dem URL http://www.webhome.at/~xyz/mylife.html abgerufen werden.Der Folder
~xyz/public_html
und die auf diese Art öffentlich zugänglich gemachten Dokumente (und Unterfolder) darin müssen für den Eigentümer des httpd
(meist: "wwwrun") lesbar sein.
Weitere Angaben über Defaults und unerlaubte Zugriffe: Man sollte etwa festlegen, welches Dokument geliefert werden soll,
wenn nur ein Foldername im URL angegeben ist. Per Default ist das index.html; wenn kein solche File existiert, wird ein
Verzeichnis des Folders geliefert. Das ist ein Sicherheitsproblem für manche Systeme, in denen so unbefugte Zugriffe geplan
werden können. Man sollte dieses Feature daher im Konfigurationsfile ausschalten. Auch könnte man andere Default-Namen
(etwa: Welcome.html) wählen.
Erlaubte Scriptsprachen: Hier kann man weitere Funktionen zulassen, zum Beispiel die Verwendung von CGI-Scripts
(ausführbare Shell-Scripts, die bei Aufruf html-Seiten produzieren) oder anderen Features wie etwa php-Scripts (ebenfalls
dynamische
html-Erzeugung
geeignet).
Wichtig:
Der von Server an den anfragenden Web-Client gelieferte html-Code wird vom Client interpretiert (samt etwaig darin
29.06.2007 10:14
UNIX System, Netz und Kommunikation
10 von 21
http://physik.kfunigraz.ac.at/~cbl/Unix/admin/mk_combined_file.php
enthaltenenen Java-Script Teilen). Die CGI- oder php-Scripts werden vom Webserver ausgeführt und stellen daher pr
Sicherheitrisiko dar. Solche Skripts sollten daher sorgfältig überdacht und eingesetzt werden. Keinesfalls dürfen sie
Root-Berechtigung laufen, da so ein Missbrauch geradezu herausgefordert würde.
PHP wird meist als Modul des Webservers eingebaut. Bei Problemen sollte man sich vergewissern, dass die aktuelle Distribution
mit den richtigen (für den geplanten Einsatz ausreichenden) Optionen erstellt wurde. Notfalls muss man ein rpm-Update
durchführen oder das Modul mittels einer tgz-Version selbst neu bauen.
Hier folgen Beispiele für einige der gerade besprochene Einträge in /etc/httpd/httpd.conf :
...
#
# User/Group: The name (or #number) of the
# user/group to run httpd as.
#
User wwwrun
Group nogroup
#
# Server Name
#
ServerName myserver.uni-graz.at
#
# DocumentRoot: The directory out of which you will serve your
# documents. By default, all requests are taken from this directory, but
# symbolic links and aliases may be used to point to other locations.
#
DocumentRoot "/srv/www/htdocs"
...
#
# This should be changed to whatever you set DocumentRoot to.
#
<Directory "/srv/www/htdocs">
...
#
# UserDir: The name of the directory which is appended
# onto a user's home directory if a ~user request
# is received.
#
<IfModule mod_userdir.c>
UserDir public_html
</IfModule>
...
<Directory /home/*/public_html >
AllowOverride FileInfo AuthConfig Limit
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
<Limit GET POST OPTIONS PROPFIND>
Order allow,deny
Allow from all
</Limit>
<Limit PUT DELETE PATCH PROPPATCH MKCOL COPY MOVE LOCK UNLOCK>
Order deny,allow
Deny from all
</Limit>
</Directory>
...
#
# DirectoryIndex: Name of the file or files to use as a pre-written HTML
# directory index. Separate multiple entries with spaces.
#
<IfModule mod_dir.c>
DirectoryIndex index.html index.php
</IfModule>
...
Ich habe hier nur einige der besprochenen Features herausgefischt und wiedergegeben. Die Punkte zeigen ausgelassene Teile
an. Alle Einstellungen im httpd.conf sind aber in Kommentaren dokumentiert.
Im Logfile des Webservers (soferne Logging aktiviert ist) kannst du jeden Zugriff nachlesen. Die Files können sehr lang werden
und sollten regelmäßig gelöscht (oder archiviert) werden. Es gibt public-domain-Tools zur Analyse der Zugiffe auf deinen
Webserver.
Eines
davon
ist
Analog
" The most popular logfile analyser in the world ". Neuerdings (seit 2007) gibt es auch von Google eine "Analyse", siehe
http://www.google.com/analytics/home/ .
29.06.2007 10:14
UNIX System, Netz und Kommunikation
11 von 21
http://physik.kfunigraz.ac.at/~cbl/Unix/admin/mk_combined_file.php
6.5 Dateisysteme
Das kann kein Kurs über SysAdmin Aufgaben sein. Ein paar Details sollten dir aber bekannt sein. Daher kommt hier eine
Übersicht, was man bei Dateisystemen beachten sollte.
Aufbau
Auf einem physikalischen Speichermedium wie einer Disk sind die Daten in Dateisystemen (=Filesystemen) organisiert. E
Filesystem kann sich über mehrere physikalische Teile (Platten) erstrecken oder es können auf einem Medium auch me
Filesysteme liegen.
Ein UNIX-Filesystem hat folgenden Aufbau:
Datenblock
...
Datenblock
Datenblock
Inode-Liste (Liste der Identifikationsnummern und Informationen zu allen
Files im Datenbereich)
Superblock (Info zum Filesystem, Zahl der Inodes, Datenblöcke usw.)
Bootblock (notwendig zum booten, aber dennoch immer vorhanden)
Die Größe der Datenblöcke ist einheitlich und wird bei der Einrichtung des Filessystems (z.B. mit mkfs) vorgegeben (512, 1024,
2948, 4096). Datenblöcke werden immer als Ganzes eingelsen und sind daher die kleinste Speichereinheit. Auch ein File, der nur
1 Byte lang ist, belegt daher zumindest die Größe eine Blockes. Hier sind also Geschwindigkeit des Zugriffs (größere Blö
Sparsamkeit im Falle kleiner Files (kleinere Blöcke) im Wetstreit.
Ein Speichervorgang wird also oft mehrere physikalische Zugriffe auf Datenblöcke bedeuten. Wenn dazwischen der Strom ausfällt,
gibt es Konsistenzprobleme, das der Schreibvorgang noch nicht abgeschlossen wurde. Bei Neustart erkennt UNIX das und
versucht,
das
System
mit
Hilfe
von
fsck
zu reparieren. Das kann bei langen Platten lange dauern.Natürlich gehen dabei Daten verloren.
In neueren "journaled" Filesystemen (wie das ReiserFS) wird der Schreibvorgang protokolliert und bei einem Absturz das Protokoll
nicht abgeschlossen. Damit erkennt das System sofort, wo was repariert werden muss.
6.5.1 Anmelden von Dateisystemen
6.5.2 Dateien finden und identifizieren
6.5.3 Dateien kopieren und verschieben
6.5.4 Andere Systemaufgaben
6.5.5 Backup
6.5.1 Anmelden von Dateisystemen
Das Anmelden eines Dateisystems passiert durch den Befehl mount, man spricht "eingedeutscht" von "mounten". Im Lauf der
Jahre wurde die Darstellung und Verwaltung der Dateien immer wieder verändert und damit neue"Dateitypen" geschaffen.So gibt
es Typen wie ISO9960 (meist für CDs verwendet), vfat (FAT32 im Windows-PC-Bereich), ext2 (Linux Norm), s
Zwischerspeicherdatei), efs und xfs (zum Beispiel für SGI IRIX), das neuere ReiserFS (ein Filesystem, das mehr Date
gewährleistet) und andere mehr. Ein typischer Mount-Befehl lautet also
mount -t vfat /dev/hda3 /winc
und würde die Partition Nummer 3 auf der ersten Master IDE-Disk (hda) als lokales Directory namens /winc mounten. Das
Directory /winc muss dabei vorher existieren, allerdings als leerer Folder. Nach dem erfolgreichen mount kann man die Dateien
von
/dev/hda3
wie
solche
in
/winc
ansprechen. Damit wird also dieses Device (hier eine Partition einer Hardisk) in den lokalen Root-Tree eingefügt. Mit
umount /winc
29.06.2007 10:14
UNIX System, Netz und Kommunikation
12 von 21
http://physik.kfunigraz.ac.at/~cbl/Unix/admin/mk_combined_file.php
kann das Dateisystem wieder "abgehängt" werden. Die Protection-Einstellungen des Folder /winc und werschiedene weitere
Optionen des mount Befehls (siehe man mount) steuern die Zugriffsberechtigungen für Benutzer und Root.
Da manche der Dateien (insbesondere die Root-Partition / , die Swap-Partion /swap und die Partiotion für den Boot-Vorgang /boot
schon bei Systemstart gemountet werden müssen, kann man die Daten für die Default-Mount in den File /etc/fstab eintragen. Dort
können auch mount-Daten für weitere Mounts vorgesehen werden, die man dann mit einem abgekürzten Befehl wie zum Beispiel
mount /winc
aktivieren kann. Wenn das Programm mount so einen Befehl ausführen soll, so versucht es die Daten zum mount von /winc in
/etc/fstab zu finden.
(Apropos: Wenn du mehr als eine Harddisk verwendest, ist es ein gute Idee, die swap-Partition auf eine andere Disk als
hautsächlich verwendete zu legen. Damit wird der Zugriff etwas schneller, da die Diskhead nicht immer wieder hin-und-he
positioniert werden muss.)
Die im Moment aktuell gemounteten Devices sind im File /etc/mtab ersichtlich. Mit dem Befehl
df
werden der verfügbare Speicherplatz auf den im Moment gemounteten Filesystemen ausgeschrieben, zum Beispiel:
104 [thph229] %df
Filesystem
1k-blocks
Used Available Use% Mounted on
/dev/hda3
6071616
4621048
1142120 81% /
/dev/hda1
23300
3286
18811 15% /boot
105 [thph229] %cat /etc/mtab
/dev/hda3 / ext2 rw 0 0
proc /proc proc rw 0 0
devpts /dev/pts devpts rw,mode=0620,gid=5 0 0
/dev/hda1 /boot ext2 rw 0 0
/proc/bus/usb /proc/bus/usb usbdevfs rw 0 0
106 [thph229] %
Die Swap-Partition wird dabei verschwiegen.
Wenn ein Filesystem eines anderen Computers lokal gemountet werden soll, so gibt man als Filetyp "nfs" an. Darüber mehr findest
du im Abschnitt Network File System: Verwaltung .
Neuerdings gibt es auch unter Linux "hotplugging", also das automatische Erkennen neuer Devices. Wenn du zum Be
USB-Flashdisk ansteckst, erkennt der "hotplugger"-Daemon dies.Das neue Geräte (die Flashdisk) wird dann vermutlich
Devicenamen /dev/sda1 ansprechbar sein und vielleicht in /media/sda1 gemountet.Du kannst es dann wie eine normale Disk
ansprechen.
Je nach Entwicklungsstadium des von dir verwendeten hopluggers kannst du entweder d as Device einfach abhängen oder du
musst einen umount Befehl, zum Beispiel
umount /media/sda1
eingeben, damit das Filesyetm darauf ordnungsgemäß abgeschlossen wird.Wenn due nicht sicher bist, mit welchen Devicename
das neue Gerät erkannt wurde, so gib einfach
dmesg
an (siehe auch man dmesg). Dann kannst du an den letzten Einträge die entsprechene Aktivität und Zuordnung ablesen.
6.5.2 Dateien finden und identifizieren
Neben dem üblichen Kommando ls ist ein besonders nützliches Kommando der Befehl find. Damit kann man gut Files und
Folder finden, die irgendwo im angegebenen Suchbaum liegen und die bestimmte Eigenschaften haben.Das Kommando hat di
Form
find [Ausgangspunkt] [Bedingungen] [Auszuführender Befehl]
wobei der Ausgangspunkt angibt, welchen Folder sowie alle seine Unterfolder (rekursiv) das Kommando durchsuchen s
Bedingungen geben an, welche Files oder Folder gesucht werden und der Befehl wird jedesmal ausgeführt, wenn so ein Fiel o
Folder gefunden wird. Ein typischer Bfehel ist
find /usr/local -name "join*" -print
der in /usr/local (und dessen Unterdirectories) nach Files oder Foldern sucht, deren Name mit "join" beginnt und bei Erfol
vollständige Filenamen ausschreibt. Nützliche Bedingungen sind
29.06.2007 10:14
UNIX System, Netz und Kommunikation
13 von 21
-newer file
-name "namestring"
-user xxx
-size nnn
-perm mode
http://physik.kfunigraz.ac.at/~cbl/Unix/admin/mk_combined_file.php
Files, die jünger als der angegebene File sind
"namestring kann ein legaler String mit Wilds Cards (vgl. Parameterexpansion
(Wild Cards) )sind, also zum Beispiel "*.c"
Files, die dem User xxx gehören
Files bestimmter Größe nnn (in Bytes angegeben)
Files mit bestimmte Zugriffsrechten "mode", angegeben in oktaler Codierung,
also zum Beispiel
755 für die gestzten Rechte rwxr-xr-x
-4000 es ist zumindest das SUID-Bit gesetzt.
Das Vorzeichen wird gesetzt, wenn nach Files gefragt wird, bei denen
zumindest die angegebenen Rechte gesetzt sind.
Besonders wichtig für die oder den SysAdmin sind Files mit SUID oder SGID Bits. Sind diese für einen ausführbaren File ges
(mittels "chmod u+s file" oder "chmod g+s file", siehe auch man chmod) so wird dieses Programm mit den Rechten des
Besitzers (SUID) oder der Besitzer-Gruppe (SGID) ausgeführt. Das erlaubt es, Files (die root gehören) mit Root-Rechte
auszuführen, obwohl man selbst nicht root ist. Für einige Systemkommandos ist das wichtig (zum Beispiel für das passwd
7.
Kommando). Im Normalfall sollte man das aber vermeiden, da solche Einstellungen ein Sicherheitrisiko darstellen (siehe
Security ).
Die bei erfolgreicher Suche auszuführenden Kommandos können zum Beispiel sein
-print
-ls
-exec cmd
Der Filename wird ausgeschrieben
Ein Verzeichnis der gefundenen Datei wird ausgegeben
Das Kommando "cmd" wird ausgeführt. Dabei kann der gerade gefundene File
mittels "{}" angesprochen werden. Das Kommando sollte mit ";" abgeschlossen
werden. Man muss allerdings beachten, dass man für dieses und manche
andere etwa vorkommende Zeichen Escapezeichen verwenden muss, damit
der Kommandostring richtig erkannt wird. Der exec-Befehl
-exec rm -f {} ;
würde alle gefundenen Files ohne Rückfrage löschen.
Nun
benötigt
find
recht lange, da ja aktuell alle Files in Foldern und Unterfoldern durchsucht werden.Von GNU gibt es daher auch das Kommando
locate, sofern es dein SysAdmin installiert hat. Dieses durchsucht nur eine Tabelle (z.B. /var/lib/locatedb), die vom System in
regelmäßigen Abständen (mit dem Kommando updatedb) aktualisiert wird und ist daher viel schneller als find. So gibt der
Befehl
locate /etc/*.conf
alle Files an, in denen der String /etc/*.conf vorkommt, also zum Beispiel "/etc/nscd.conf", aber auch "/etc/modules.conf.-" und
"/lib/scpm/status/etc/resolv.conf". Genauere Informationen über die EVrwednung bekommst du mittels man oder auch "locate
--help". Es gibt auch eine "secure" Varianten namens slocate, bei der die SysAdmin einstellen kann, welche Filebäume
berücksichtigt werden sollen.
Einen Nachteil hat locate: Nur die Files können gefunden werden, die bei der Erstellung der Datenbank vorhanden waren. Wenn
diese also zu selten aufgefrischt wird, erlebt man eine Enttäuschung.
Einige weitere nützliche Kommandos zur Identifikation von Files sind
file filename
strings filename
Es wird versucht, anhand verschiedener Informationen herauszufinden, um
was für einen File es sich handelt.
Es werden die im File enthaltenen ASCII-Strings herausgeschrieben.
Beide Befehle helfen dabei, mehr über den File herauszufinden, sind aber nicht "exakt". Beim strings-Befehl zu Beispiel hält sich
das Programm an eine Definition, die eine Kette von Druckzeichen, die von nicht druckbaren Zeichen (wie "ESC", "BEL" et
umgeben ist. Der Befehl dient vor allem dazu, Informationen über schon übersetzte Programmfiles zu gewinnen. Beide Befehl
haben noch Optionen, die du mittels man findest.
6.5.3 Dateien kopieren und verschieben
29.06.2007 10:14
UNIX System, Netz und Kommunikation
14 von 21
http://physik.kfunigraz.ac.at/~cbl/Unix/admin/mk_combined_file.php
Einzelne Files kopieren kann man mit dem in 2.4.2 File-bezogene Kommandos und
"cp". Umbenennen kann man sowohl Files als auch Folder mittel "mv".
2.4.6 Optionen schon besprochenen Befehl
Um ein ganzes Directory rekursiv mit den darin enthaltenen Directories und Files zu kopieren, kann man natürlich den Befehl
cp -r alt neu
verwenden. Mit einer weiteren Option "-p" kann man die Fileattribute nach Möglichkeit mit kopieren. Dieser hat allerd
Schönheitfehler. Zum einen werden die Fileattribute nicht in jedem Fall erhalten bleiben, sondern durch die jeweiligen
Einstellungen des Benutzer modifiziert. Zum anderen werden die Datumseinträge der neu angelegten Files auf den
Kopiervorganges gesetzt. Und schließlich ist die Behandlung von Links nichttrivial und kann nur durch weitere Optionen ges
werden. Auch kann "cp" natürlich nur auf die lokal gemountetn Filesysteme angewandt werden.
Eine meiner Meinung nach elegantere Lösung bietet "tar". Damit kann man Directories nahezu identisch kopieren, wobei alle
Datumseinträge, Links und Permissions erhalten bleiben. Auch das Kopieren auf andere Maschinen, für die man e
UserID/Password hat, ist möglich.Wir wollen den Folder /whatever/mydir mit allen Inhalten auf den Folder /whereever/mydir
kopieren.
cd whatever; tar cBf - mydir|\
( cd whereever && tar xvBf - )
Man kann, und das ist einer der Vorzüge, aber auch von einer Maschine zu einer anderen übertragen:
cd whatever; tar cBf - mydir|\
rsh remote "(cd whereever && tar xBf -)"
wobei "remote" der Name der anderen Maschine ist. Wenn man dort (über den /etc/rhosts oder .rhosts Mechanismus) ein "trusted
host" ist, wird nicht einmal nach einem Password gefragt. Nachteil: über ssh geht das anscheinend nicht.
Oft will man ein tar-Archiv von einem Tape (DAT-Tape oder Ähnliches) einlesen. Das Tape wird default als /dev/tape gemountet
and kann so auch angesprochen werden:
tar xf /dev/tape .
Damit
wird
alles
von
/dev/tape
ins lokale Directory kopiert. Wenn das Bandgerät auf einer anderen Maschine "remote" liegt, auf der du als "xyz" einen Account
hast, kann es zum Beispiel über xyz@remote:/dev/tape angesprochen werden.
6.5.4 Andere Systemaufgaben
Je nach UNIX-Typ und Spezialvariante des Herstellers gibt es verschiedene Tools, um die Dateien zu überprüfen un
gegebebenfalls zu reparieren. Unter IRIX gibt es einerseits den graphischen DateiManager mit entsprechenden Einträgen
andrerseits Befehl wie hinv (oder gxinfo), die alle System-Komponenten (und die Graphikeigenschaften) ausschreiben.
Unter Linux gibt es für die scsi-Komponenten den Befehs scsiinfo, also zum Beispiel liefert
scsiinfo -f -g /dev/sda
Daten für das angegebene SCSI-Device; für die IDE-Devices gibt es den Befehl hdparm, so gibt also etwa
hdparm -i /dev/hda
Informationen über die primäre (Master) Disk aus. Mit
hdparm -tT /dev/hda
erhält man Angaben über die Zugriffsgeschwindigkiet. Man kann mit dem hdparm-Befehl auch einzelne Einstellungen der
Harddisks optimieren und so erhebliche Geschwindigkeitsverbesserungen erzielen.
Die interne Konsitstenz eines Dateisystems (also Angabe der Datenstrukturen im Superblock, Inode-Tabelle
Partitionenverzeichnisse etc.) überprüft das System mittels fsck, das je nach Systemeinstellungen mehr oder weniger
regelmäßig- sicher aber nach einem Systemabsturz - ausgeführt wird. Das kann der oder die SysAdmin auch von Hand a
erzwingen, muss es in machen Problemfällen auch. Der normale Benutzer sollte die Hände davon lassen und auch der Superu
sollte sich vor Verwendung genau informieren.
In den Bereich Hardware fällt auch der Begriff des Disk Striping: Mehrere Festplatten werden zu einer gemeinsamen Partition
zusammengefügt. Das kann sowohl sequentiell als auch parallel (also scheibenweise) passieren. Damit kann die Partition g
gemacht, aber (beim parallelen Striping) oft auch schneller gemacht werden. Allerdings: wenn eine der Disks ausfällt, fällt d
gesamte Partition aus. Man sollte dies aber nicht für die Root-Partition (auf der also das System gemountet ist) machen.
29.06.2007 10:14
UNIX System, Netz und Kommunikation
15 von 21
http://physik.kfunigraz.ac.at/~cbl/Unix/admin/mk_combined_file.php
6.5.5 Backup
Es kann immer wieder was schiefgehen. Die Disk kann einen Crash haben. Du kannst irrtümlich deine Dateien gelöscht haben
(siehe auch weiter unten). Ein Benutzer in deinem Verantwortungsbereich kann seine Dateien zerstört haben.Was auch imm
Backups sind notwendig.(Zum Trost: Ich kenne SysAdmins, deren Dateien durch eine Disk-Crash kaputt gingen, und die kein
Backup hatten...)
Bei einem vollständigen Backup werden alle Dateien auf das Backupmedium kopiert, bei einem inkrementellen Backup nur die seit
dem letzten Backup geänderten Dateien (mittels "find -newer" herauszufinden). Du musst einen Kompromiss finden zwischen
dem Aufwand des Backups und der Notewendigkeit und Sicherheit, Daten wiederherstellen zu können oder müssen. In
übersehbaren Bereich wie zum Beispiel in unserem Physik-Institut werden einmal wöchentlich alle User-Daten auf d
Backup-Medium kopiert. Am ZID passiert das jeden Tag.
Die verschiedenen professionellen Backup-Strategien können wir hier nicht besprechen und du kannst sie bei Bedarf in Bücher
über System Administration nachlesen. An Backup-Medien bietet sich folgendes an:
Magnetbänder
(zum Beispiel 8mm Bänder). Vorteil: mehrere GByte Platz. Nachteil: linearer, langsamer Zugriff, manchmal nicht zuverlässig
(zumindest hatten wir mehrmals Probleme damit), teuer (das ändert sich mit der Zeit).
ZIP-Drives, veraltet, gab es zu 100MB oder 250MB.
USB-Sticks (Flashrom), praktisch zum Transport von Daten; gibt es bis zu einigen GB.
CD, 640MB oder DVD
(bis zu ca. 8 GB). Vorteil: die Rohlinge sind recht preiswert und soweit bekannt zu verlässig, schneller Zugriff, gute
Archivierungmöglichkeit. Nachteil: kleiner Speicherplatz. Gut für private Backups g eeignet.
Harddisks, viele GByte. Vorteil: Einfache Handhabbarkeit, schneller Zugriff. Nachteil: Preis (wird aber täglich günstiger).
Parasitärer Backup. Das ist nur in Einzelfällen möglich und wird von der oder dem SysAdmin der so genutzten Maschine
nicht gern gesehen, aber: wenn du deine Daten auf eine andere Maschine kopierst (au f der im Idealfall ein Backup
gefahren wird), bietet das auch Datensicherheit. Aber, wie gesagt, das sollte nicht die Regel sein!!!
Man muss übrigens zwischen Backup und Datenspiegelung
unterscheiden. Da Harddisks preiswert geworden sind, kann man sogenannte Datenspieg elung vornehmen, also zum Beispiel alle
Datenspeicherungen gleichzeitig auf zwei Harddisks (also Zwillinge, siehe "RAID-1") vornehmen. Diese Spiegelung hilft vor allem
bei dem Hardwareausfall einer Disk, da ja die zweite Disk eine identische Kopie ist . Wenn du allerdings deine Daten selbst
irrtümlich gelöscht hast, hilft diese Spiegelung nichts: die Daten wurden auf beide n Disks gelöscht.
Eine fortgeschrittenere Variante sind RAID-Devices
"Redundant Array of Independent (Inexpensive?) Disks". Es gibt verschiedene Arten ( "Levels") von RAID. An sich ist es ein
Methode, um mehrere Disk zu kombinieren, entweder zu einem großen Filebereich oder um Ausfallsicherheit zu erreichen. Mit
einer Kombination von 5 Disks kann man zum Beispiel eine Disk zur Sicherheitprüfung abstellen und durch geeignete Codierung
(Stichwort: Hamming-Code) auch bei Totalausfall einer Disk alle Daten von 4 Disks r ekonstruieren.
RAID-0
Hier werden einfach mehrere Disks aneinander "gehängt"; das wird auch "striping" genannt. Wenn eine Disk ausfällt hat
man Pech gehabt.
RAID-1
In dieser Version werden Disken "gespiegelt". Wenn eine Partnerdisk ausfällt, gibt es dennoch keinen Datenverlust.
RAID-2
Es werden Prüfbits (Hamming Code) zur Fehler-Erkennung und -Korrektur eingesetzt; bei SCSI-Disks passiert das
automatisch.
RAID-3 und RAID-4
Hier werden mehrere Disks aneinander gehängt und die Prüfbits auf einer separaten Disk gespeichert. Wenn eine der
Datendisken ausfällt, kann die Information rekonstruiert werden.
RAID-5
RAID Level 5 Level 4 ähnlich, verteilt aber die Prüfbits auf alle Disks. Wenn eine Disk ausfällt, ist dennoch noch die ganze
Information rekonstruiertbar. Man verwendet zumindest 3, typisch aber 5 Disks in ei ner Gruppe.
RAID-0 ist am schnellsten aber nicht sicher. RAID-5 ist die beste Lösung in einer Multi-User Umgebung, solan
Schreibgeschwindigkeit nicht allzu wichtig ist.
Näheres findet ihr zum Beispiel hier:
http://www.uni-mainz.de/~neuffer/scsi/what_is_raid.html .
Das eigentliche Problem beim Backup ist Manpower. Bei den meisten der genannten Medien muss sich jemand darum kümmer
also Bänder oder CDs einlegen, das Backup starten, überwachen und so weiter. Wenn die oder der Zuständige darauf vergisst
(oder krank wird, oder auf Urlaub geht), gibt es Probleme. Das war in unserem Institut die Motivation, ein automatischen Backup
auf Harddisks einzuführen.
Für den privaten Gebrauch musst du selbst die Entscheidung treffen. Oft ist da ein mehrstufiges Vorgehen nützlich. Du könntes
etwa regelmäßig eine Gesamtkopie auf CDs brennen und dazwischen inkrementelle Backup-Kopien auf einer eigenen
29.06.2007 10:14
UNIX System, Netz und Kommunikation
16 von 21
http://physik.kfunigraz.ac.at/~cbl/Unix/admin/mk_combined_file.php
Backup-Disk anlegen.
Weitere hierher passende Themen sind Modelle, um verschiedene Entwicklungsgenerationen von Programmen zu archivieren.
Das Revision Control System (RCS) bietet diese Möglichkeit (mehr mit man rcs). Dabei werden ausgehend von Urversionen
jeweils alle Änderungen zu Zwischenversionen eines Programms oder einer ganzen Gruppe von Programmen gespeichert. Da
kann jeder Entwicklungsschritt rekonstruiert werden.
Aufgabe 6.5.5.A.1
Wenn du irrtümlich wichtige Files gelöscht haben solltest, für die es kein Backup g ibt, so ist UNIX nicht nett zu dir. Es gibt kein
"undelete". (Du könntest dir sowas allerdings selbst basteln, also das rm Kommando durch eines ersetzen, das die zu löschenden
Files in ein Mistkübeldirectory $HOME/.mist
kopiert, dass erst später- zum Beispiel bei logout - gelöscht wird). Wenn doch pass iert ist, der File ist gelöscht und du bist gleich
danach draufgekommen:
Von 10 bis 1 rückwärtszählen und "Dont't panic" sagen.
Den Filebereich sofort unmounten oder mit read-only mounten (wenn es die Root-Partition ist, geht das nur mit einem
Neustart von einer CD und mounten der Rootpartiontion unter anderem Namen.
Den Filebereich mit fsdb untersuchen, oder mit Spezialtools wie zum Beispiel dem Coroner's Toolkit von
http://www.fish.com/tct/ .
Bei mir hat es beim letzten Mal nicht geklappt. Alles Gute!
6.5.6 Network File System: Verwaltung
Wir
haben
in
Network
File
System
schon kurz in dieses Dateisystem eingeführt. Damit können Filesysteme (oder Teile davon) von anderen Computern im Netz au
dem lokalen Rechner wie andere lokale Dateien angesprochen werden.
Die SysAdmin muss den Export der so veröffentlichten Folder freigeben. Die von einem Computer "exportierten" Files s
Zugriffsrechte
sind
in
/etc/exports
angegeben. Die genaue Syntax der Fileeinträge hängt von der UNIX-Variante ab und sollte mittels man überprüft werden. Zwe
Zeilen könnten zum Beispiel lauten:
/usr/local/software adam.kfunigraz.ac.at(r) eva.kfunigraz.ac.at(r)
/home caesar.kfunigraz.ac.at(rw) adam.kfunigraz.ac.at(rw) eva.kfunigraz.ac.at(rw)
Damit wird dem nfs-Daemon mitgeteilt, dass der angegeben File-Baum (also zum Beispiel /home/...) für den NFS-Export an
bestimmte Computer freigegeben wird.Es wird der Folder /usr/local/software mit Leseberechtigung für die Rechner adam und eva
freigegeben, der Folder /home mit Lese- und Schreibrechten für caesar, adam und eva .
Mit dem Kommando
exportfs
(wenn die $PATH Variable nicht geeignet gesetzt wird, sollte man den vollen Pathnamen /usr/sbin/exportfs verwenden)
kann man die Liste der aktuell exportierten Files bekommen. Mit
exportfs -u
(unexport) werden die Exporte storniert, mit
exportfs -a
werden alle im File /etc/exports angegebenen Dateisysteme exportiert.
Wenn ein Rechner eine NFS-System eines Remotehosts auf seinem eigenen Rechner verwenden will, muss er es "mounten", also
einen geeigneten mount-Befehl mit Filetype "nfs" eingeben oder in /etc/fstab eintragen (dann wird der Filebereich bei Boot
automatisch gemountet). Der lokale Folder, auf dem der nfs-Folder aufgespannt werden soll, muss als leerer Folder existieren u
kann an beliebiger Stelle im lokalen Filebereich sein.
Ein solcher Eintrag in /etc/fstab könnte lauten
meitner:/home /localhome nfs defaults 0 0
womit der von meitner exportierte Folder /home auf der lokalen Maschine unter dem Namen /localhome verfügbar ist. Der
Benutzer merkt nicht, dass localhome kein lokaler Folder ist.
Wenn ein automount-Daemon gestartet wurde, passiert das gleichsam unsichtbar, wenn der Benutzer zum Beispiel d
gewünschten File /home/xxx/myfile, der auf dem Computer remotehost liegt, als
/hosts/remotehost/home/xxx/myfile
anspricht. Es wird dann der entsprechende Filebaum des remotehost auf einem lokalen Folder /hosts/remotehost/... gemountet.
29.06.2007 10:14
UNIX System, Netz und Kommunikation
17 von 21
http://physik.kfunigraz.ac.at/~cbl/Unix/admin/mk_combined_file.php
Auf diese Art kann man in einem Netz zum Beispiel alle Userhomes auf einem zentral Fileserver anlegen, der eben /home a
anderen Computer exportiert.Man muss dabei darauf achten, dass die jeweiligen Homefolder (im jeweiligen /etc/passwd oder üb
NIS bekanntgegeben) auf den anderen Maschinen auch richtig gefunden werden können.Eine Version wäre es, /home auf
Fileserver auch unter dem Namen /home auf allen beteiligten Computern zu "mounten".
Wir haben in unserem Bereich ein reges hin-und-her Mounten von Foldern auf verschiedenen Maschinen. Es hat sich als s
erwiesen , auf den beteiligten Rechnen einen Folder /hosts einzurichten, darunter Folder mit den Maschinennamen (e
/hosts/meitner, /hostsphysik, ...) und darin die entsprechenden nfs-Mounts unterzubringen.
Wichtig: Alle beteiligten Rechner sollten dieselben Gruppen- und User-Bezeichnungen haben (angegeben in /etc/group und
/etc/passwd
oder mitgeteilt über NIS). Wenn du selbst Dateisysteme deines Computer auf diese Art exportieren willst, solltest du das nur tu
wenn du dir über die Verlässlichkeit (des oder der SysAdmin und der Benutzer) des anderen Computers sicher bist. Auch sollte
der Computer zumindest im gleichen Subnetz stehen, um das Vortäuschen eines anderen Namens möglichst zu verhinde
feindseliger SysAdmin eines anderen Computers kann jederzeit einen Benutzer gleicher ID erzeugen, der sich dann als
rechtmäßigen Besitzer deiner gemounteten Dateien ausgeben kann. Da beim NFS-Mount nicht nach Passwords gefragt wird,
solche Einbruchversuche vergleichbar einfach durchzuführen...
Auf dem Fileserver müssen die Dienste portmap oder rcpbind, mountd oder rpc.mountd, sowie nfsd oder rpc.nfsd
laufen.Auf dem Klienten müssen portmap oder rpcbind, sowie biod oder nfsiod laufen.
Aufgabe 6.5.6.A.1
6.6 Printer
Gerade hier unterscheiden sich die beiden UNIX-Varianten BSD und SysV deutlich. Die BSD-Variante scheint aber weiter
verbreitet zu sein und setzt sich zunehmend durch. Ich werde daher zwar beide Versionen besprechen, die Betonung aber auf d
BSD Version (die auch in Linux verwendet wird) legen.
Wenn mit einem Print-Kommando Files zum Drucker geschickt werden, muss meist noch Arbeit vom System geleistet we
Bestimmte Zeichen am Beginn des Files werden dazu verwendet, automatisch die Art des Files (normaler ASCII-Text
POSTSCRIPT File, GIF- oder JPEG-Files etc.) zu identifizieren, und so die richtige Vorarbeit für den Drucker zu leisten.
ASCII-Texte können meist ohne viel "drumherum" an den Drucker geschickt werden. POSTSCRIPT-fähige Drucker könne
selbständig entsprechende Files analysiseren und drucken. Andere Drucker müssen die Files jedoch in gerasterter Form
übertragen bekommen - das bedeutet mehr Transfer und dauert länger. Bild-Files müssen meist erst in geeignete Form geb
werden. All das erledigen sogenannte Filter, von denen der Endverbraucher tunlichst nichts merken soll.
Die Umwandlung in gerasterte Druckfiles erfolgt übrigens meist mit Hilfe des "Ghostscript"-Pakets von http://www.ghostscript.com/
, das im Public-Domain Bereich verfügbar ist. Unter Linux kann man Ghostscript auch über die Distributionen einspielen od
rpm-Paket von http://www.rpm.org holen.
Das Druck-Kommando kopiert den Printfile in eine lokales "Spool-Directory" und übergibt den Druckauftrag dem loka
Printer-Daemon (Printer-Spooler). Dieser sendet den File entsprechend der Angabe des gewünschten Druckers entweder an
lokalen Drucker oder an einen im Netzwerk verfügbaren Drucker. Den Printer-Daemon kann man über ein Script in /etc/init.d
stoppen und starten. Das ist manchmal bei "Abstüzen" des Printer-Daemons sinnvoll. Soweit ist die Vorgangsweise
UNIX-Systemen gemeinsam. Der Unterschied ligt in den Namen und im Detail.
SysV Print Spooling
Der Printer-daemon ist lpsched. Ein File "printfile" wird mittels
lp -dPrinter printfile
an den Drucker mit dem Namen "Printer" gesendet. Der Printspooler Daemon kann mit dem Script
/etc/init.d/lp [stop|start|restart]
vom SysAdmin neu gestartet werden.
Der oder die SysAdmin sollte wissen, wo sich das Spool-Directory befindet. Meist ist es in in einem Unterdirectory von
/var/spool/lp, das den Namen des Druckers hat.
BSD Print Spooling
Der Printer-Daemon ist lpd. Ein File "printfile" wird mittels
lpr -PPrinter printfile
an den Drucker mit dem Namen "Printer" gesendet (Option "-P"). Mittels "line printer queue"
lpq -PPrinter
29.06.2007 10:14
UNIX System, Netz und Kommunikation
18 von 21
http://physik.kfunigraz.ac.at/~cbl/Unix/admin/mk_combined_file.php
kann nach der aktuellen Queue (Warteschlange) des Drucker gefragt werden. Mit "line printer remove"
lprm -PPrinter id
kann der Druckauftrag mit der Nummer "id" aus der Warteschlange des Druckers "Printer" entfernt werden.
Der Lineprinter Daemon kann durch das Systemscript
/etc/init.d/lpd [stop|start|restart]
gestoppt und gestartet werden
Die Printer werden meist je nach Distribution durch eine Menü (zum Beispiel beim SuSE-Paket unter yast) konfiguriert. Wenn m
nicht weiss, auf welchen der Devices der lokaler Printer angeschlossen ist, hilft es vielleicht, einfach
echo "hello 0" > /dev/lp0
echo "hello 1" > /dev/lp1
einztugeben, und zu kontrollieren, bei welchen der beiden Befehle der Printer reagiert.
Die verschiedenen Printer werden durch das Installationsmenü in dem File /etc/printcap definiert. Manchmal ist aber auch ein
manueller Eintrag praktikabel. Lokale Printer - wie etwa Inkjets, die selbständig kein POSTSCRIPT verstehen - brauchen Filter, um
die nicht-ASCII-Files vorzubereiten. Ein Filterpaket im Public-Domain-Bereich, das meist verwendet wird, ist "apsfilter". Die
entsprechenden Verweise finden sich auch in /etc/printcap. Ebenso findet man dort Einträge über im Netz verfügbare Drucker.
Hier ist ein Beispiel für zwei Einträge in einem /etc/printcap File:
102 [physik] %cat /etc/printcap
#
tp_a|remote printer on xaver.uni-graz.at:\
:sd=/var/spool/lpd/tp_a:\
:rm=xaver.uni-graz.at:\
:rp=tp_a:\
:sh:mx#0:
#
### BEGIN apsfilter: ### bjc800 a4 color 360 ###
# Warning: Configured for apsfilter, do not edit the labels!
# apsfilter setup Thu Mar 29 10:28:20 CEST 2001
#
tp_d|lp|lp2|bjc800-a4-auto-color-360|bjc800 a4 auto color 360:\
:lp=/dev/lp0:\
:sd=/var/spool/lpd/bjc800-a4-auto-color-360:\
:lf=/var/spool/lpd/bjc800-a4-auto-color-360/log:\
:af=/var/spool/lpd/bjc800-a4-auto-color-360/acct:\
:if=/var/lib/apsfilter/bin/bjc800-a4-auto-color-360:\
:la@:mx#0:\
:tr=:cl:sh:sf:
#
### END apsfilter: ### bjc800 a4 color 360 ###
Der erste Eintrag bezieht sich auf einen im Netz verfügbaren Drucker, der durch den Printer-Hosts xaver.uni-graz.at verwaltet wird,
der zweite Eintrag definiert einen lokal verfügbaren Canon BJC800 InkJet.
Im
BSD-UNIX
kann
man
im
File
/etc/hosts.lpd
alle die Computer angeben, von denen aus auf einem der lokalen Drucker gedruckt werden kann. Wenn also im /etc/printcap ein
Netzwerkdrucker angegeben wird, so muss auf dem Printer-Host der eigene Computer in /etc/hosts.lpd eingetragen sein!
Im
File
/etc/printcap
findet man auch den Verweis auf das lokalen Spool-Directory. Wenn der Druckauftrag an einen Netzwerkdrucker geht, wird
Druckfile allerdings rasch daraus verschwinden und kann dann nicht mehr aus der Druckwarteschlange (die ja dann am
Printer-Host liegt) entfernt werden. Die einzige Möglichkeit ist es, sich auch am Printerhost einzuloggen und es dort zu versuchen.
Samba
Das
schon
besprochene
Paket
(
) erlaubt es, verschiedene Drucker im Netz zentral anzusprechen. Vom Samba-Rechner aus müssen dazu alle Drucker (lokale
und Netzwerkdrucker) verfügbar sein (der Sambarechner also auch im /etc/hosts.lpd aller Printer-Hosts eingetragen sein). Die
Benutzer selbst müssen auf dem Samba-Rechner eine Zugangsberechtigung haben.
Aufgabe 6.6.A.1
6.7 Software und Admin-Tools
Hier geht es um folgende Themen:
29.06.2007 10:14
UNIX System, Netz und Kommunikation
19 von 21
http://physik.kfunigraz.ac.at/~cbl/Unix/admin/mk_combined_file.php
6.7.1 Import von Software
6.7.2 Nützliche Software
6.7.3 Administrationstools
6.7.1 Import von Software
Software, die nicht zur originalen UNIX-Installation gehört, die aber allen Benutzern zur Vefügung stehen sollte, wird üblicherweise
im Folder /usr/local untergebracht. Es ist üblich, in diesem Folder eine Directory-Struktur ähnlich wie unter /usr zu anzulegen:
/usr/local/bin
/usr/local/include
/usr/local/lib
/usr/local/man
In diese Foldern finden sich ausführbare Programme (bin), Bibliotheken (lib), Include (header) Files (include), man-Pages (man)
und so weiter. Ich empfehle, zumindest auch Directories wie install (für zu installierende Software), misc (für Miscellanous Verschiedenes) und src (für Source, meist Textfiles) anzulegen:
/usr/local/install
/usr/local/misc
/usr/local/src
Die oder der SysAdmin sollte dann die entsprechende Suchpfade (also die systemweiten Variablen wie $PATH und $MANPATH)
um dieser Folder erweitern.
Beim Import von Software beachte bitte
Software aus fragwürdigen Quellen solltest du nur als Source-Code importieren und zunächst nur als normaler User
installieren. Erst nach einer Beobachtungsphase kannst du sie für alle Benutzer in Systemfolder legen.
Software mit vorkompilierten Programmen ist mit besonderer Vorsicht zu "genießen"; auch bei ansonsten
vertrauenswürdigen Verteilern können sich tronjanische Pferde einschleichen. Ideal wäre eine Installation und Beobachtung
auf einer "Quarantäne-Maschine" - aber die kann sich meist nur ein größerer Betrieb leisten.
Bei tar-files: Lass dir zuerst mit "tar tf ..." ein Listing erstellen, damit du weißt, wohin der File entpackt wird.
Im GNU-Bereich gibt es unzählige Software-Pakete. Meist sind sie als tgz-Files (also Directories mit Files, die in ein
zusammengefasst und dann komprimiert wurden) verfügbar, die sowohl alle notwendigen C-Programme und deren Hilfsfile
enthalten, also auch Makefiles (siehe Die make Utility ) sowie Informationsfiles wie README oder INSTALL enthalten. Nach dem
Herunterladen (Achtung: bei ftp "binary" Mode verwenden!) empfiehlt sich folgende Vorgangsweise:
swpaket.tgz in einen geeigneten Folder (zum Beispiel /usr/local/install) legen
mittels
tar tzf swpaket.tgz
ein Listing der im Pakte enthaltenen File ansehen. Meist wird das Paket in einen ei genen Unterfolder mit geeigneter
Bezeichung, z.B. sw_3.01 entpackt.
Entpacken mittels
tar xvzf swpaket.tgz
In dem Folder mit der neuen Software befinden sich vermutlich Files mit den Namen README, INSTALL, Makefile. Lies
diese Files sorgfältig und befolge die dort angegebeben Instruktionen. Fast immer m uss man lokale Anpassungen (z.B. die
Art des UNIX-Systems oder den Namen von lokalen Directories wie /usr/local/bin) vornehmen. Das kann entweder durch
Editieren eines "Makefile" oder durch ein vielleicht beigefügtes "./configure" Script geschehen. Nach diesem Schritt muss
man meistens
make
(in diesem Schritt wirden die Source Files übersetzt) und
make install
(die ausführbaren Files oder Libraries werden an den Einsatzort kopiert) ausführen. Damit ist die importierte Software dann
einsetzbar.
Hinweis: Lege in diesen Folder auch einen File README.local an, in den du deine Notizen zu den notwendigen
Adaptierungen einträgst. Oft wirst du später neuere Versionen der Software installi eren. Dann ist dieser Kommentar sehr
nützlich
29.06.2007 10:14
UNIX System, Netz und Kommunikation
20 von 21
http://physik.kfunigraz.ac.at/~cbl/Unix/admin/mk_combined_file.php
Alle nicht benötigten Files sollten gelöscht werden; wenn du die Ausgangsdateien au fheben willst und nur die überstzten .o
Files und andere temporäre Files löschen willst, geht das oft mit make clean. Schließlich solltest du noch die Eingetümer
und Rechte der verbeliebenden Software überprüfen. Wenn der Installationsbereich vo rhanden bleiben soll, und du als root
unterwegs bist, empfiehlt sich ein "chown -R root.root foldername" .
Der Nachteil der so selbst installierten Software: Die derart angelegten Files werden vom System selbst in keine Liste vermerk
Damit kann das System kein "uninstall" durchführen, wie es bei Paketen der Original-Distribution meist möglich ist.
In Linux wurde von der Firma Redhat der sogenannte "rpm" (Redhat Package Manager) eingeführt, der inzwischen fast zu
Standard geworden ist. Die mittels rpm importierten Pakete sind an der Erweiterung ".rpm" erkennbar (zum Beisp
webmin_0.85.rpm); sie sind pre-kompiliert und können daher nicht speziell angepasst werden. Sie müssen also den Standards
und der Generationsnummer der einzelnen Distributionen folgen. Das geht manchmal schief und dann muss man eine tgz-Ver
selbst importieren und installieren (am besten in /usr/local).
Zum Abschluss noch ein paar Hinweise für SysAdmins. Wenn du feststellen willst, welche Shared Libraries ein schon über
(vielleicht importiertes) Programm "newprog" benötigt, so geht das mit
ldd newprog
Wenn du neue Bibliotheken ("libraries", zum Beispiel in /usr/X11/lib) eingefügt hast, solltest du
/sbin/ldconfig -v
ausführen, um die entsprechenden Tabellen zu aktualisieren. Viele Konfigrautionstools (wie etwa yast bei SuSE Linux) erledigen
das für dich.
6.7.2 Nützliche Software
Einige Software-Pakete sind recht nützlich und sollten daher installiert werden. Diese Liste ist natürlich unvollständig und
naturgemäß sehr persönliche Ansichten wieder. Meist sind die Pakete auf den Distributionen verfügbar, manchmal muss man
selbst importieren.
htdig
Verfügbar über
http://www.htdig.org/, die ht://Dig Homepage .
Es handelt es sich dabei um ein Programmpaket zur raschen Indizierung vieler Dateien im eigenen Webserver-Bereich.
Indexsuche zu diesem Kurs verwendet dieses Tool.
glimpse und webglimpse
Verfügbar über
http://www.webglimpse.net .
Erfüllt ähnlich Aufgaben wie htDig.
(my)sql und sqladmin
Verfügbar über
http://www.mysql.com
und ein Administrationsprogramm über
phpMyAdmin (http://www.phpwizard.net/projects/phpMyAdmin/) .
Dies ist (zumindest im Linux-Bereich) die vermutlich am weitesten verbreitete Datenbank. Auch die Daten zu deisem Kurs werd
über
sql
verwaltet. Das auf php-Scripts basierende mysqladmin erlaut einfache Bearbeitung und Analyse der Daten über ein
WWW-Interface.
php
Verfügbar über
http://www.php.net .
Eine Script-Sprache, mit der sehr elegant dynamische html-Seiten erstellt werden können. Das sind Seiten, deren Inhalt sic
abhängig von der Art des Aufrufs ändert, die also dem jeweiligen Aufruf angepasst werden könnnen. Dazu muss php in
Web-Server eingebunden werden. Dieser Kurs ist auf Grundlage von php Seiten strukuriert. Der eigentliche Text besteht
html-Seiten, die durch php-Scriptfiles in den allgemeinen Rahmen eingebunden werden.
PGP
Verfügbar über
www.pgpi.org oder auch GNU's
www.gnupg.org .
"Pretty Good privacy" ist ein Encryption-Standard, mit dem man seine Identität mit einen Schlüssel-System mitteilen und
bestätigen lassen kann, und mit dem auch Texte verschlüsselt übertragen werden können.
Literatur: S. Garfinkel: PGP (O'Reilly, 1996)
29.06.2007 10:14
UNIX System, Netz und Kommunikation
21 von 21
http://physik.kfunigraz.ac.at/~cbl/Unix/admin/mk_combined_file.php
6.7.3 Administrationstools
Viele Distributionen haben eigene Installationstools (wie etwa yast oder yast2 bei SuSE, oder der SystemManager
SoftwareManager bei SGI IRIX).Einzelne Tools (etwa Samba) haben eigene Administrations-Interfaces, andere haben zusätzli
Tools (sqladmin für mysql, comanche für apache, etc.). In letzter Zeit ist es üblich geworden, diese Interfaces unter einem
(beliebigen) Web-Client laufen zu lassen und damit eine bessere Verfügbarkeit zu erreichen. Ich will hier nur ein Tool b
hervorheben, da es für mehrere System-Administrationsaufgaben gleichzeitig geeignet ist: webmin.
Viele Einstellungen des Systems lassen sich durch das Tool "webmin" steuern. Es ist dies ein WWW-Interface, das über ein
eigenes TCP/IP Port angesteuert wird. Die Portnummer kann die oder der SysAdmin festlegen, um so zusätzliche Sich
gewährleisten. Insbesondere folgende Systemkomponenten sind mit webmin daher auch übers Netz steuerbar:
httpd (Apache)
nfs
die Harddsiks (Filesystem)
DNS (domain name serving, falls notwendig)
Samba
Sendmail
Das Tool ist verfügbar über http://www.webmin.com
. Im Augenblick der Erstellung dieses Textes liegt es in Version 0.85 vor. (Ich hat te Probleme, es als rpm-Paket zu installieren und
wählte daher die tgz-Version.)
Schon erwähnt habe ich "SITAR - System InformaTion At Runtime" (
über das installierte System und die Konfigurationsfiles liefert.
http://sitar.berlios.de/ ) welches vollständige Informationen
29.06.2007 10:14