Yet Another Linux Tutorial

Die Shell Dateien Editoren Backups Archive Laufwerke Prozesse
Administration Netzwerk Userverwaltung Rechte Links Suchen

Administration


Der Paketmanager apt
Der Paketmanager dpkg
Benötigte Libraries anzeigen mit ldd
Standards setzen mit update-alternatives
Wichtige Dateien in /etc/
Datum anzeigen/setzen mit date

[top] Der Paketmanager apt


Mit apt kann man nach Paketen suchen oder installieren. Es lässt sich auch das ganze System upgraden oder einzelne Pakete entfernen. Dazu braucht man allerdings eine Internetanbindung oder zumindest einen erreichbaren Server mit den Paketen. Einstellen kann man die Server unter /etc/apt/sources.list. Praktisch dabei ist vor allem das es die Abhängigkeiten überprüft und gleich mit installiert oder zumindest eine Meldung ausgibt.

apt-get zeigt eine Liste der verfügbaren Optionen. Hier ein paar wichtige daraus
update aktualisiert die Paketliste mit den Servern in /etc/apt/sources.list
upgrade installiert neuere Versionen von allen gefundenen Paketen
install Paketname installiert ein bestimmtes Paket
source lädt nur Quelldateien runter (/usr/src)
remove Paketname entfernt ein Paket vom System
dist-upgrade Installiert alle Pakete deren Status auf install steht
clean löscht alle heruntergeladenen Files im cache (/var/cache/apt)
autoclean löscht die Pakete aus dem cache die über die sources.list nicht mehr verfügbar sind damit z.B. keine veralteten Pakete im cache bleiben
-d nur downloaden nicht installieren
-y bei Fragen immer mit ja antworten. Gilt nur für die Installation von zusätzlichen Abhängigkeiten oder so, nicht jedoch die Konfigurationsfragen der eben installierten Pakete
apt-cache zeigt eine Liste der verfügbaren Optionen. Hier ein paar wichtige daraus
search Paket sucht nach zu installierenden Paketen mit dem angegebenen Namen
show Paket zeigt jede Menge Informationen zu einem Paket
depends Paket listet die Abhängigkeiten eines Paketes auf
Wichtige Dateien zu apt
/etc/apt/sources hier trägt man die Server ein von denen man Pakete holen will. z.B.

deb http://security.debian.org/ stable/updates main contrib
deb ftp://ftp.at.debian.org/debian stable main contrib

Eine große Auswahl an Servern findet man unter : http://www.apt-get.org/
/etc/apt/preferences in dieser Datei kann man das "apt pinning" einstellen. Damit kann man bestimmen welche Paketversionen installiert werden sollen. So kann man recht einfach ein stable System fahren und trotzdem Pakete aus z.B. unstable benutzen ohne sein System zu verhauen. Die Datei ist wie folgt aufgebaut:


Package: Paketname * für alle
Pin: release oder version
Pin-Priority: Priorität


Package: Das kann jedes Paket sein oder einfach * für alle (z.B. apache*)
Pin: version (z.B. version 2.*) oder release. release kennt noch zusätzliche Argumente wie a für stable/testing/unstable (z.B. release a=stable) v für die Debianversion (z.B. release v=3.0r1) c für main/contrib/non-free (z.B. release c=main)
Pin-Priority: besagt wie mit dem Paket umgegangen werden soll. Das können 3 Zahlenbereiche sein:
0-99 - Paket wird nicht installiert
100-999 - Pakte werden normal aktualisiert, keine Downgrades
<1000 - Pakete werden auch normal aktualisiert und falls nötig downgegradet
Beispiel:


Package: *
Pin: release a=stable
Pin-Priority: 1001


Package: apache*
Pin: version 1.3.29.0.1*
Pin-Priority: 1002



Dies bedeutet das mein System auf jeden Fall stable bleiben soll nur Apache darf in einer neueren Version rennen
/etc/apt/apt.conf APT::Default-Release "stable"

Mit einem solchen Eintrag kann man in seiner sources.list auch "unstable" oder "testing" Einträge haben, und es werden trotzdem nur "stable" Pakete geladen. Will man doch mal ein Packet aus einem anderen Zweig (z.B. unstable) installieren, geht man wie folgt vor:


apt-get -t unstable install Paketname
oder
apt-get install Paketname/unstable

Beispiele
apt-get update aktualisiert die Paketliste mit denen auf den Servern
apt-get install -y xserver-xfree86 installiert den xserver und falls zusätzlich Pakete benötigt werden, werden diese ohne Nachfragen mit installiert
apt-cache search php4 zeigt eine Liste mit Kurzinfos über Pakete die mit php4 zu tun haben

[top] Der Paketmanager dpkg


mit dpkg kann man ebenfalls Pakete installieren oder entfernen. Allerdings müssen die Pakete lokal vorliegen zum installieren. Man kann damit aber auch seine Pakete verwalten, z.B. den Status von Paketen prüfen, deren Abhängigkeiten, was alles installiert ist, usw.

dpkg zeigt eine Liste der verfügbaren Optionen. Hier ein paar wichtige daraus
-l "*" listet alle installierten Pakete auf mit Status, Version und Kurzbeschreibung. man kann auch eine bestimmtes Paket angeben mit "Paketname" oder auch nur einen teil des Namens mit "*Teilbegriff*"
-L Paket listet alle files auf die zu einem Paket gehören.
-p Paket zeigt genauere Informationen über ein Paket
-i Paket.deb installiert das angegebene Paket
--remove Paket deinstalliert das angegebene Paket
--purge Paket deinstalliert das angegebene Paket und löscht auch dessen Konfiguration
--pending --configure Konfiguriert noch nicht konfigurierte Pakete
--get-selections zeigt alle Pakete im System mit Status
--set-selections setzt den Status der Pakete im System, (Paketname Status, CTRL+D zum beenden)
dpkg-reconfigure Paket konfiguriert das angegeben Paket neu
Beispiele
COLUMNS=180 dpkg -l Zeigt uns alle Pakete (l) im System in schönerer Form (mit COLUMNS haben wir es nur zurecht geschoben)
dpkg --get-selections > Paket.liste schreibt in die Datei "Paket.liste" alle Pakete im System mit Status, das ist praktisch wenn man einem anderen Rechner identisch ausstatten will.
cat Paket.liste | dpkg --set-selections cat listet uns die Datei auf und durch --set-selections werden die Pakete eingetragen. Beim nächsten dselect-upgrade werden sie dann installiert.

[top] Programme installieren mit ./configure && make && make install


Mit diesem 3 Zeiler lassen sich die meisten Pakete aus ihren Quelldateien installieren. Mit dem ./configure -Script werden Anpassungen für das Makefile vorgenommen, danach wird das Ganze mit make compiliert und anschließend installiert. Der Nachteil an dieser Methode ist das der Paketmanager davon nichts mitbekommt


Wenn man ein Paket als Quelldatei vorliegen hat ist eigentlich immer eine README oder INSTALL Datei vorhanden in der genauere Anweisungen drinnen stehen.


[top] Benötigte Libraries anzeigen mit ldd


In manchen Fällen ist es nötig zu wissen von welchen libraries ein vorhandenes Programm abhängt. Um dies herauszufinden nimmt man ldd her

ldd Programm zeigt die erforderlichen Libraries für ein Programm an.

[top] Standards setzen mit update-alternatives


Mit update-alternatives kann man alle Standardprogramme setzen z.B. seinen Lieblingseditor oder den Desktopmanager

update-alternatives zeigt eine Liste der verfügbaren Optionen
--config name listet eine Auswahl verfügbarer Alternativen zu einer Kategorie, aus welcher man wählen kann
--list name listet eine Auswahl verfügbarer Alternativen zu einer Kategorie
--all listet eine Auswahl verfügbarer Alternativen aller Kategorien, aus welcher man wählen kann
--set name Pfad setzt eine alternative
Beispiele
update-alternatives --config x-window-manager zeigt eine Auswahl der Window-manager aus welcher man direkt setzen kann
update-alternatives --set editor /usr/bin/nano setzt nano als den Standard-Editor

[top] Wichtige Dateien in /etc/


In /etc kann man fast alles konfigurieren. Die meisten Programme haben hier ein Verzeichnis mit deren Konfig. Ein paar wichtige Dateien aus diesem Verzeichnis sind:

/etc/adduser.conf enthält die Standardeinstellungen für neu erstellte User mittels adduser
/etc/crontab Enthält Programme die Regelmäßig laufen sollen. Der Aufbau ist recht einfach:
Minute Stunde Monatstag Monat Wochentag User Kommando,
Das Zeitformat ist 24h * steht für immer (Bei Tag z.B. jeden Tag)
bei Debian stehen noch die Verzeichnisse cron.daily cron.hourly cron.monthly und cron.weekly zur Verfügung in die man nur noch seine Scripte rein kopieren muss.
/etc/fstab hier stehen alle mountpunkte drinnen die das System beim starten einhängen soll. Hat man eine Neue Partition kann man hier einen Eintrag machen damit man sie nicht immer händisch mounten muss. Das Format ist
1. Feld   Partition, Datei oder Gerät das gemountet werden soll
2. Feld   das Verzeichnis auf das gemountet wird.
3. Feld   den Typ des Dateisystems
4. Feld   zusätzliche Parameter
/etc/hostname enthält den eigenen Rechnernamen
/etc/hosts diese Datei enthält IP und die Rechnernamen, sodass man im LAN auch ohne Nameserver auskommen kann. Diese Datei wird auch von manchen Programmen benötigt.
/etc/hosts.allow hier kann man bestimmen auf welche Dienste von wo aus der Zugriff gestattet wird. Der Aufbau ist einfach:
Dienst:HOST     optional noch :(Kommando)
Für Dienst können auch mehrere Dienste durch , getrennt angegeben werden. Genauso for den Host
/etc/hosts.deny ist das Gegenteil zu /etc/hosts.allow und hat Nachrang. Wenn in /etc/hosts.allow etwas erlaubt ist und hier verboten wird, wird es dennoch erlaubt.
/etc/inittab in dieser Datei stehen die Parameter für init so z.B. das Standard Runlevel.
Die Zeilen sind so aufgebaut:
ID:Runlevel:Aktion:Prozess
Die ID ist frei wählbar, eindeutig und 2-4 Zeichen lang.
Runlevel können nebeneinander eingetippt werden.
Als Aktion stehen mehrere zur Verfügung z.B.
respawn - init startet den Prozess sobald er beendet wird (getty)
wait - wartet auf die Terminierung des Prozesses
once - der Prozess wird nur einmal gestartet
boot - der Prozess wird während dem boot ausgeführt
initdefault - gibt das default Runlevel an
sysinit - startet den Prozess vor allen anderen
ctrlaltdel - was bei CTRL+ALT+DEL geschehen soll
/etc/inputrc hier kann man Tastatureigenheiten einstellen, z.B. set meta-flag on für Umlaute und Sonderzeichen. Der Aufbau ist gleich mit dem des bind Kommandos
/etc/init.d in diesem Ordner sind alle Dienste drinnen die bei den jeweiligen Runlevels gestartet werden. Man kann auch eigene Startscripte schreiben und hier ablegen, dann muss man nur noch unter /etc/rcX.d einen entsprechenden Link darauf machen wobei das X für das Runlevel steht.
/etc/rcX.d in diesem Ordner stehen alle Dienste als Symlinks (ln) drinnen die bei einem Runlevel gestartet bzw. gestoppt werden. Das X steht für das jeweilige Runlevel. Die Namen bestehen aus 3 Teilen:

An erster Stelle steht ein K für kill oder ein S für start. Die folgende Nummer gibt die Startreihenfolge an nach der die Scripte ausgeführt werden. Und als letztes steht der Dienst/Scriptname zum besseren Verständnis.

Die Runlevels sind:

0 - Herunterfahren
1-4 - Multiuser-mode, normale Konsole
5 - das X-System, die grafische Oberfläche
6 - Neustart
S - singleuser-mode, für administrative Tätigkeiten die es erfordern (z.B. tune2fs)
/etc/lilo in dieser Datei steht die Konfiguration für den Bootloader lilo drinnen. Wenn man was ändert sollte man nicht vergessen nachher lilo auszuführen! Wichtige Zeilen sind:

boot= wohin der Bootloader installiert werden soll
root= die root-Partition /
default= das OS das standardmäßig gestartet werden soll
image= Angaben für zu startende Kernel
other= Angaben für andere Betriebssysteme
/etc/login.defs hier kann man eine Menge festlegen z.B. die Fehlversuche beim login, deren log, Systembegrenzungen für User (RAM, Prozesse, ...)
/etc/issue bevor das login Prompt startet wird dieser Text ausgegeben, so eine Art Startmeldung. Meist stehen hier Informationen über das OS und den Rechner. Mögliche Variablen im Text:


\d   der aktuelle Tag in Kurzform mit Datum
\l   das Terminal an dem man sich befindet
\m   Rechnerarchitektur
\n   Rechnername
\o   Domainname
\r   Betriebssystemversion
\s   Betriebssystemname
\t   Aktuelle Zeit
\u   Anzahl angemeldeter Benutzer
/etc/motd "message of the day" - diesen Text sehen alle User nach einem erfolgreichen login. So kann ein Admin z.B. alle User auf Wartungsarbeiten hinweisen usw.
/etc/network/interfaces hier stehen die Netzwerkkarten Einstellungen drinnen. Jede Karte beginnt mit 2 Zeilen. In der ersten steht immer auto device, und in der 2. Zeile wird bestimmt ob die Adressen per dhcp (dhcp) zu beziehen sind oder fix eingetragen werden (static). Hier mal ein Beispiel:


# loopback interface
auto lo
iface lo inet loopback

# Netzwerkkarte eth0

auto eth0
iface eth0 inet dhcp
# Einstellungen per DHCP beziehen (dhcp)

# Netzwerkkarte eth1

auto eth1
iface eth1 inet static
# Einstellungen selber bestimmen (static)
  address 192.168.0.10
# IP Adresse
  netmask 255.255.255.0
# subnetmask
  network 192.168.0.0
# Netzwerk (optional)
  broadcast 192.168.0.255
# broadcast (optional)

Man kann noch den Gateway angeben, die MAC Adresse mit hwaddress ether MAC festlegen und noch ein paar andere Sachen.
/etc/resolv.conf hier stehen die DNS-Server drinnen z.B.
search isp.at
nameserver 195.34.133.17
nameserver 195.34.133.18
/etc/passwd, /etc/shadow In diesen Dateien stehen die login Informationen. /etc/passwd hat jede Zeile dieses Format:
User:Passwort:UID:GID:gecos:home:shell
user - Benutzername
Passwort - Das verschlüsselte Passwort
UID - eindeutige User ID
GID - eindeutige Gruppen ID
gecos - diverse Infos über den Benutzer
home - das Heimatverzeichnis
shell - die Standardshell
Wenn man shadowpasswörter verwendet stehen in /etc/passwd bei Passwort nur ein * oder ein x und in /etc/shadow die User und Ihre Passwörter
/etc/group, /etc/gshadow In diesen Dateien stehen die Gruppeninformationen. Das Format ist:
Gruppe:Passwort:GID:user
gruppe - Der Gruppenname
Passwort - das Passwort der Gruppe, wenn vorhanden
GID - eindeutige Gruppen ID
user - durch , getrennte Liste der Mitglieder der Gruppe
/etc/gshadow wiederum wenn man shadowpasswörter nutzt
/etc/nologin wenn diese Datei vorhanden ist kann sich nur noch root am System anmelden, alle anderen sehen beim login lediglich den Inhalt dieser Datei
/etc/profile Diese Datei wird beim einloggen aller User gestartet. Darin stehen z.B. einige Umgebungsvariablen, die umask diese besagt welche Rechte neue Dateien haben. Man kann auch mit ulimit Limitierungen von Ressourcen wie Filegröße, CPU-Zeit, usw. einstellen
/etc/securetty hier Stehen die Terminals an denen sich root anmelden darf, so kann man ganz einfach unsichere Terminals vor rootzugriffen schützen
/etc/shells in dieser Datei sind alle zugelassenen Loginshells eingetragen. Diese Datei wird auch von chsh ausgewertet
/etc/skel hier findet man Standardvorlagen für diverse Konfigs, diese werden auch beim erstellen eines neuen Benutzers in sein HOME-Verzeichnis kopiert
/etc/sudoers in dieser Datei kann man einstellen wer mit mit sudo was machen darf. Der Aufbau ist recht simpel. Oben hat man 4 Bereiche in denen man Aliase Definieren kann und unten die Regeln die wie Folgt aufgebaut sind
USER HOSTS=(RUN_AS) NOPASSWD: COMMAND
NOPASSWD: ist optional und bedeutet das man nicht das Passwort des Zielusers wissen muss.
ein Beispiel:
# Benutzer Alias
User_Alias USER=user1,user2
# Zielbenutzer Alias % für Gruppe, + für Netzgruppe
Runas_Alias ZIELUSER=webmaster,%www-data
# Rechner Alias
Host_Alias RECHNER=localhost,192.168.0.1,192.168.0.2
Host_Alias LOKAL=localhost,192.168.0.1
# Kommando Alias
Cmnd_Alias KOMMANDOS=/usr/sbin/apache

root ALL=(ALL) ALL
USER RECHNER=(ZIELUSER) NOPASSWD: KOMMANDOS
camel LOKAL=(ALL) ALL
Hier haben wir 2 User die als webmaster mit apache arbeiten dürfen, aber nur von den angegebenen Hosts, und einen User (camel) der lokal alles als root darf
/etc/syslog.conf Hier steht drinnen was, wie und wohin geloggt werden soll.
Die Zeilen bestehen aus 3 Feldern
1. Quelle - das kann folgendes sein: auth, authpriv, cron, daemon, ftp, kern, lpr, mail, mark, news, security (= auth), sys-log, user, uucp und local0 bis local7
2. Priorität - aufsteigend: debug, info, notice, warning, warn (= warning), err, error (= err), crit, alert, emerg und panic (= emerg)
3. log Datei - Die Datei in die geloggt werden soll
/etc/X11 hat man einen X-Server wie xfree86 installiert befindet sich hier die Konfig. eine wichtige Datei in diesem Verzeichnis ist /etc/X11/XF86Config-4. Hier stehen die ganzen Einstellungen für den X-Server in "Sections". Das sind z.B. die Pfade zu den Fonts (Section "Files"), die Tastatur und Mausbeschreibung (Section "InputDevice"), die Module die geladen werden sollen (Section "Modules") sowie Grafikkarte (Section "Device") und Monitor (Section "Monitor").

[top] Datum anzeigen/setzen mit date


Um sich mal schnell die Zeit anzusehen oder um sie einzustellen benutzt man date. Bei einer bestehenden Internetverbindung kann man auch rdate benutzen wie im letzten Beispiel gezeigt wird.

date Zeigt Datum an (Sat May 15 18:49:17 CEST 2004)
-s setzt Datum oder Uhrzeit
Parameter zum ausgeben
%a %A Tag kurz lang (Sat, Saturday)
%d Tag des Monats
%b %B Monat kurz lang (Aug, August)
%y %Y Jahr kurz lang (04, 2004)
%D Datum 05/15/04
%T Uhrzeit 18:48:56
Beispiele
date -s 15/05/04 setzt das Datum auf 15.05.2004
date -s 18:45:00 setzt die Uhrzeit auf 18:45:00
date +%A-%d-%b-%Y ergibt "Saturday-15-May-2004"
date +%a-%d-%b-%y ergibt "Sat-15-May-04"
rdate -s ntp0.fau.de holt sich die Zeit vom angegebenen Timeserver uns setzt (-s) diese lokal. Ohne dem Schalter -s wird die Zeit nur angezeigt