1941510

Grundlegende Befehle für Linux-Server

20.06.2014 | 14:11 Uhr |

Linux ist das ideale Betriebssystem für Server, nicht nur im Intranet und im Internet, sondern auch im eigenen Heimnetzwerk. Diese Grundlagen sollte jeder angehende Admin kennen.

Linux ist von vornherein für Aufgaben im Netzwerk geschaffen, egal ob es sich dabei um ein Intranet oder das Internet handelt. Ein Grund für die herausragende Stellung, die Linux heute unter den Server-Betriebssystemen hat, sind dessen effiziente Techniken zur Administration. Das Wissen darum ist nicht nur im Firmenumfeld von Vorteil, sondern auch beim Aufbau eines Servers im eigenen Netzwerk, auf dem eigenen Miet-Server im Internet oder bei einer doppelten Nutzung von Linux als Desktop und Server auf demselben System. Der Beitrag stellt das Handwerkszeug vor, das jeder Admin kennen sollte. Dabei haben Kommandozeilen-Techniken den Vortritt, da auf einem Server keine grafische Oberfläche vorausgesetzt werden kann. Denn die Administration erfolgt üblicherweise über eine sichere Remote-Shell über SSH.

Nicht alle Linux-Distributionen, die sich gut für den Server-Einsatz eignen, sind im Aufbau und den mitgelieferten Tools identisch. Eine systematische Gegenüberstellung der verschiedenen Administrationstechniken hilft außerdem bei der Auswahl einer Distribution für den eigenen Server. Hier geht es um die aktuellen Versionen der verbreiteten Server-Systeme: Debian 7, Ubuntu 12.04 (LTS), Cent-OS 6.5 als freier Red-Hat-Klon und Open Suse, das sich in Version 13.1 mit langem Supportzeitraum auch für Server eignet.

Dieser Artikel stammt aus der LinuxWelt 3/2014

So klappt der Umstieg von XP zu Linux, Videoüberwachung mit Raspberry Pi einrichten, das beste Linux für jeden PC - das und mehr finden Sie in der neuen LinuxWelt 3/2014 .

Paketmanagement: Programme finden, installieren, entfernen

Das Kompilieren von Quelltext ist heute die Ausnahme, denn Systemkomponenten, Server-Anwendungen und Software liefern Linux-Distributionen aus einem Software-Fundus in Form fertiger Pakete. Als Formate haben sich dabei das von Debian geschaffene DEB (Debian, Ubuntu und Derivate) sowie das von Red Hat entwickelte RPM (Red Hat Enterprise Linux, Cent-OS, Open Suse und andere) die größte Verbreitung gefunden. Der Paketmanager installiert und entfernt ein Paket, überprüft Abhängigkeiten zu anderen Paketen und pflegt die Datenbank installierter Programme. Ein grundsätzliches Problem ist, dass Paketmanager allein Abhängigkeiten zwar erkennen, aber nicht auflösen – sie setzen die Anwesenheit und Angabe aller Pakete voraus.

Es wäre natürlich viel zu umständlich, bei jeder Software-Installation alle Hauptpakete und Abhängigkeiten manuell herunterzuladen und zu installieren. Deshalb betraten erweiterte Paketmanager das Feld, die Pakete und deren Abhängigkeiten online in den Repositories der Distribution suchen und von dort aus komfortabel installieren.

Kleiner NAS selbst gebaut

Suche nach Paketen in Debian und Ubuntu: Mit dem Kommandozeilen-Tool apt-cache durchsucht man die Datenbank verfügbarer Pakete nach Namen oder Beschreibung.
Vergrößern Suche nach Paketen in Debian und Ubuntu: Mit dem Kommandozeilen-Tool apt-cache durchsucht man die Datenbank verfügbarer Pakete nach Namen oder Beschreibung.

Debian und Ubuntu: Der bekannteste Vertreter erweiterter Paketmanager ist das von Debian bekannte APT in der Kommandozeile. Die Liste verfügbarer Pakete wird (mit root-Rechten oder mit vorangestelltem sudo) mittels

apt-get update 

aktualisiert, während

apt-cache search [Paketname/Begriff] 

nach Paketen sucht, die sich schließlich mit

apt-get install [Paketname] 

mitsamt allen Abhängigkeiten installieren lassen. Einzelne Pakete entfernt

apt-get remove [Paketname] 

und das Kommando

apt-get dist-upgrade 

führt ein komplettes Upgrade aller installierten Pakete aus.

Cent-OS: Wie auch Fedora bietet Cent-OS das Kommandozeilen-Tool yum zum einfachen Paketmanagement. Eine separate Aktualisierung der Paketquellen ist nicht nötig, dies erledigt yum bei jedem Aufruf automatisch. Damit ist es bei langsamen Internetverbindungen aber auch nicht ganz so flott wie APT. Ohne root-Rechte sucht man mit

yum search [Paketname/Begriff] 

nach Paketen und installiert diese (mit root-Rechten) über

yum install [Paketname] 

oder entfernt Programme mit

yum remove [Paketname] 

Komplette System-Updates erledigt der Befehl yum update .

Open Suse: Einfaches Paketmanagement war bei Suse/Open Suse lange nur über Yast möglich. Seit Open Suse 10.2 gibt es mit zypper aber ein ausgereiftes Kommandozeilen-Tool, das sich mit den Werkzeugen anderer Distributionen messen kann. Mittels

zypper se -d [Paketname/Begriff] 

sucht man Pakete anhand deren Namen, wobei der Parameter „ -d “ auch die Beschreibungen durchsucht. Mit root-Rechten installiert

zypper in [Paketname] 

ein Paket und entfernt es mit

zypper rm [Paketname] 

wieder. Auch ein Komplett-Update des Systems mit

zypper dup 

ist ganz komfortabel ohne Yast möglich.

Crashkurs: Fernzugriff und Portfreigaben

Privilegien per sudo gewähren

Das Tool sudo vereinfacht die Server-Administration erheblich, da man für Befehle, die root-Rechte benötigen, nicht immer mit su zum root-Account wechseln muss. Die Berechtigungen für sudo sind in der Datei „/etc/sudoers“ definiert und können dort geändert werden. Manuelle Anpassungen dieser Datei sollten mit dem Editor /usr/sbin/visudo erfolgen, da dieser die korrekte Syntax überprüft. Beispiele dafür folgen unten bei Cent-OS und Open Suse.

Debian: Das Tool sudo wird hier zwar installiert, aber noch nicht für die Verwendung vorkonfiguriert. Um sudo zu nutzen, brauchen Sie einen Benutzer aber nur in die vorhandene Gruppe „sudo“ aufzunehmen. Als root geben Sie dazu diese Zeile ein:

usermod -a -G sudo [Benutzername]

Ubuntu: Hier ist sudo schon vorinstalliert und kann bereits nach der Installation von Ubuntu vom ersten abgelegten Benutzer verwendet werden.
Weiteren Benutzern erlauben Sie die Nutzung von sudo wie bei Debian mit dem Befehl

usermod -a -G sudo [Benutzername]

Cent-OS: Bei dieser Distribution ist es zunächst nötig, sudo als root mit

yum install sudo 

zu installieren. Die Standardkonfiguration sieht bereits die vorhandene Gruppe „wheel“ für die Verwendung vor, allerdings muss dies erst noch in der Datei „/etc/sudoers“ aktiviert werden. Dazu startet man vom root-Konto mit dem Kommando visudo den Editor, bei dem es sich um Vi handelt, schaltet mit der Einfügen-Taste in den Bearbeitungsmodus und entfernt das Kommentarzeichen (#) vor der Zeile

# %wheel ALL=(ALL) ALL 

Nach einem Druck auf Escape speichert man mit der Eingabe von :wq die Datei ab und schließt den Editor.
Mit root-Rechten macht man einen Benutzer per

usermod -a -G wheel [Benutzername] 

zum Mitglied der privilegierten Gruppe.

Die sudo-Konfiguration von Open Suse: In der Standardeinstellung nutzt Open Suse für sudo ein gemeinsames Passwort. In der Datei „/etc/sudoers“ kann man stattdessen auch die Gruppe „wheel“ aktivieren.
Vergrößern Die sudo-Konfiguration von Open Suse: In der Standardeinstellung nutzt Open Suse für sudo ein gemeinsames Passwort. In der Datei „/etc/sudoers“ kann man stattdessen auch die Gruppe „wheel“ aktivieren.

Open Suse: Bei der Installation konfiguriert Open Suse den zuerst eingerichteten Benutzer für sudo vor, allerdings auf eine eigenwillige Weise. Wenn es nur einen Admin auf dem Server gibt, brauchen Sie die Konfiguration nicht zu ändern. Für weitere Benutzer ist es nötig, die Datei „/etc/sudoers“ anzupassen. Fügen Sie aber mit root-Rechten zuerst alle Benutzer, die sudo verwenden dürfen, mit

/usr/sbin/usermod -a -G wheel[Benutzername] 

zur Gruppe „wheel“ hinzu, auch den bereits für sudo aktivierten Benutzer. Starten Sie dann den Editor Vi mittels sudo /usr/sbin/visudo , und setzen Sie eine Raute (#) als Kommentar jeweils vor die beiden Zeilen

Defaults targetpw ALL ALL=(ALL) ALL 

indem Sie in Vi zunächst mit der Einfügen-Taste in den Bearbeitungsmodus wechseln. Zudem entfernen Sie das vorhandene Kommentarzeichen in der Zeile

# %wheel ALL=(ALL) ALL 

Zum Speichern und Schließen drücken Sie Escape und geben dann :wq in der Befehlszeile ein. Ab jetzt dürfen alle Mitglieder von „wheel“ – aber nur diese – das Tool sudo verwenden. Generell sind neue Gruppenmitgliedschaften immer erst nach einer erneuten Anmeldung des betreffenden Benutzer-Accounts gültig.

Das kleine 1x1 der Netzwerk-Probleme

SSH: Kommandozeile aus der Ferne

Ein Server soll sich natürlich gut aus der Ferne pflegen lassen. Die Grundlage für eine Server-Administration über das Netzwerk ist Open SSH, das eine Anmeldung an der Shell (Kommandozeile) des Servers über das verschlüsselte Protokoll SSH ermöglicht.

Debian und Ubuntu: SSH wird bei der Standard-Paketauswahl nicht mit installiert und muss dann erst noch mit dem Befehl

sudo apt-get install openssh-server 

installiert werden. SSH läuft daraufhin automatisch als Dienst.

SSH-Server bei Cent-OS: Der Dienst ermöglicht die Anmeldung an der Shell über das verschlüsselte SSH-Protokoll, muss aber zunächst noch gestartet und für den automatischen Start aktiviert werden.
Vergrößern SSH-Server bei Cent-OS: Der Dienst ermöglicht die Anmeldung an der Shell über das verschlüsselte SSH-Protokoll, muss aber zunächst noch gestartet und für den automatischen Start aktiviert werden.

Cent-OS: Open SSH ist installiert, allerdings läuft der Dienst noch nicht. Mit den beiden Befehlen (root-Rechte benötigt) lässt sich der SSH-Server in Gang setzen und als Dienst aktivieren:

service sshd start chkconfig sshd on
Kein Umweg über Yast nötig: Die Paketverwaltung zypper auf der Kommandozeile von Open Suse macht auch hier die Suche und Installation von Software-Paketen ohne grafische Oberfläche möglich.
Vergrößern Kein Umweg über Yast nötig: Die Paketverwaltung zypper auf der Kommandozeile von Open Suse macht auch hier die Suche und Installation von Software-Paketen ohne grafische Oberfläche möglich.

Open Suse: Die Server-Komponente von Open SSH wird in Open Suse mit dem Kommando

sudo zypper in openssh 

installiert. Danach erlauben die beiden Kommandos

sudo /usr/sbin/SuSEfirewall2 open EXT TCP ssh sudo /usr/sbin/SuSEfirewall2 

den Zugang zum System per SSH (Port 22) durch den standardmäßig aktivierten Paketfilter.

Dienste starten, anhalten und deaktivieren

In Linux sind Dienste (Services) vom System zum Startzeitpunkt automatisch ausgeführte Prozesse, die zum Betrieb unerlässlich sind oder Server-Dienste bereitstellen. So wird beispielsweise ein Webserver oder auch Samba als Dienst ausgeführt. Um Dienste kümmert sich der Init-Prozess, der bei den verschiedenen Linux-Distributionen in abweichenden Varianten vorliegt.

Services in Debian auflisten: Das Plus-Zeichen markiert laufende Dienste, ein Minuszeichen gestoppte Dienste, und ein Fragezeichen ist für Systemdienste ohne Status vorgesehen.
Vergrößern Services in Debian auflisten: Das Plus-Zeichen markiert laufende Dienste, ein Minuszeichen gestoppte Dienste, und ein Fragezeichen ist für Systemdienste ohne Status vorgesehen.

Debian: Noch nutzt Debian das alte System-V-Init, das von Unix geerbt wurde. Auch ohne root-Berechtigungen kann man mit

/usr/sbin/service --status-all 

alle Dienste auflisten. Laufende Dienste haben ein Plus-Zeichen und deaktivierte ein Minus-Zeichen. Statuslose Systemdienste sind mit einem Fragezeichen versehen. Für die folgenden Befehle zum Starten, Anhalten und Neuladen sind root-Rechte nötig. So setzt

/usr/sbin/service [Dienstname] start 

einen Dient in Gang, und

/usr/sbin/service [Dienstname] stop 

beendet den Dienst. Zum permanenten Deaktivieren dient das Kommando

/usr/sbin/update-rc.d [Dienstname] disable 

und mit dem Befehl

/usr/sbin/update-rc.d [Dienstname] enable 

aktiviert man einen Dienst für den automatischen Start beim Boot.

Upstart-Dienst deaktivieren: Die Zeile mit „echo“ schaltet den Dienst zum Bootzeitpunkt ab. Ubuntu 12.04 verwendet einen Mix aus neuen Upstart-Script und alten Init-Scripts.
Vergrößern Upstart-Dienst deaktivieren: Die Zeile mit „echo“ schaltet den Dienst zum Bootzeitpunkt ab. Ubuntu 12.04 verwendet einen Mix aus neuen Upstart-Script und alten Init-Scripts.

Ubuntu: Schon seit Version 6.10 verwendet Ubuntu die Eigenentwicklung „Upstart“, das schon den parallelen Start von Diensten ermöglicht. Ubuntu startet aber immer noch einen Teil der Dienste auf dem alten Weg wie Debian mit Init-Scripts. Dieser inkonsistente Mix an Diensten erschwert die die Dienstadministration von Ubuntu-Servern erheblich. Denn die alten Tools für System-V-Init gibt es noch, funktionieren aber bei den Upstart-Diensten nicht mehr.
Was wie gestartet wird, zeigt nur ein Blick in die Verzeichnisse „ /etc/init “ und „ /etc/init.d “. Ersteres enthält die Upstart-Dienste, letzteres die alten System-V-Init-Dienste, für welche die gleichen Techniken wie bei Debian funktionieren.
Die Auflistung aller Upstart-Dienste erfolgt stattdessen mit

initctl list 

und die Angabe „start/running“ markiert laufende Dienste. Das mit sudo aufgerufene Kommando

sudo initctl start [Upstart-Dienstname] 

setzt einen Upstart-Dienst in Gang und

sudo initctl stop [Upstart-Dienstname] 

hält ihn an. Zum Deaktivieren muss für einen Upstart-Dienst eine Datei mit dem Namen „[Upstart-Dienstname].override“ und dem Inhalt „manual“ angelegt werden:

echo 'manual'|sudo tee -a /etc/in it/[Upstart-Dienstname].override 

Um den Dienst wieder ab dem Boot zu aktivieren, ist es nur nötig, diese Datei mit der Endung „.override“ zu löschen.

Cent-OS: Wie Ubuntu nutzt Cent-OS das neuere Upstart für einige Dienste, für andere dagegen System-V-Init. Aktuell laufen über Upstart nur Systemdienste, die man im Normalbetrieb nicht ändern muss und ignorieren kann. Alle anderen Dienste listet auch hier der Befehl

service --status-all 

auf, und mit

service [Dienstname] start 

sowie

service [Dienstname] stop 

startet beziehungsweise stoppt man mit root-Rechten einen Dienst. Zum Deaktivieren dient (als root) das Kommando

chkconfig [Dienstname] off 

und das Gegenstück

chkconfig [Dienstname] on 

aktiviert einen Dienst wieder.

Open Suse: Diese Distribution ist schon etwas fortschrittlicher und verwendet Systemd zur Steuerung von Diensten. Die wichtigsten Befehle zur Dienstkonfiguration führen Sie mit root-Privilegien oder mittels sudo über das universelle Tool systemctl aus. Eine Liste aller aktuell laufenden Dienste bekommen Sie damit in der Shell über den Befehl

systemctl -t service 

angezeigt. Diese Liste können Sie mit den Pfeiltasten abrollen und mit der Q-Taste schließen. Zum Beenden und Starten eines Dienstes geben Sie die Kommandos

sudo systemctl start [Dienstname].service 

beziehungsweise

sudo systemctl stop [Dienstname].service 

ein. Zum permanenten Deaktivieren dient

sudo systemctl disable [Dienstname].service 

und um einen Dienst wieder zum Systemstart einzuschalten, benutzen Sie

sudo systemctl enable [Dienstname].service 
0 Kommentare zu diesem Artikel
1941510