Wenn Du die Befehle ls, cd, pwd, rm, mkdir, rmdir, nano und history schon kennst, kannst Du dieses Kapitel überspringen und zu den Basis Einstellungen übergehen.
Dieses Kapitel ist den Linux Neulingen gewidmet.
Da wir jetzt eine Verbindung über ein Terminal haben, probieren wir gleich mal eine Handvoll Befehle aus und gewöhnen uns langsam an die Shell. Ich gehe davon aus, dass wer sich mit Linux Servern beschäftigt, genug Vorwissen hat, das Nachfolgende schon zu kennen oder schnell zu verstehen.
Kurze Erklärung zur Code Darstellung im Tutorial
Diese grau hinterlegten Kästen sind Shell oder Code Blöcke:
__$
Den Inhalt kannst Du kopieren mit STRG/CMD + c und in ein Terminal einfügen. Entweder mit STRG/CMD + v oder bei PuTTY mit der rechten Maustaste.
Die Symbole # und $ sind Vorzeichen in einer Shell und sollen nicht mitkopiert werden. Eine Erklärung zu den Vorzeichen folgt später.
In diesem Beispiel soll also nur der Befehl ls kopiert werden:
__$ ls
Wenn mehrere Befehle in einem Kasten zusammengefasst sind, hat jede Zeile ein eigenes Vorzeichen (# oder $). Du kannst die Zeilen einzeln oder auch alle auf einmal kopieren.
__$ cd
__$ ls
Einen Mehrzeiler Befehl erkennst Du daran, dass nur ein Vorzeichen gesetzt ist. Hier sollte die letzte leere Zeile mitkopiert werden, da sonst ein Rest in der Shell unausgeführt stehen bleibt. Das nächste Beispiel ist zum Ausprobieren gedacht. Du wirst schnell erkennen, was den Unterschied ausmacht:
__$ echo "Hier ist
__gt ein Mehrzeiler
__gt Befehl.
__gt Kopiere die nächste leere Zeile mal mit und mal nicht."
Der root User
Der Begriff root hat in einem Unix/Linux System zwei Bedeutungen. Zum einen ist es das Wurzelverzeichnis (/) im Dateisystem und zum anderen ist es der Superuser, der über alle System-Rechte verfügt. In diesem Tutorial ist meistens der root Benutzer gemeint. Der Superuser kann alles installieren, aber auch alles löschen. Daher gilt es diesen Benutzer besonders zu schützen. Und noch eine Besonderheit in diesem Zusammenhang: Für gewöhnlich bekommen Benutzer ein eigenes Verzeichnis unter /home. Das Heimverzeichnis vom root Benutzer beginnt hingegen schon im root Verzeichnis (/).
Aus Sicherheitsgründen wird der direkte System Zugang des root Benutzers deaktiviert und dafür ein stellvertretender Administrator angelegt. Dieser Benutzer wird in die sudo Gruppe aufgenommen und bekommt dadurch root Rechte. Zum root Benutzer kann dann nur gewechselt werden, wenn Du bereits mit einem anderen Benutzer angemeldet bist. Es gibt Diskussionen darüber, ob wirklich ein weiterer Benutzer nötig ist, wenn niemand sonst auf dem Server arbeitet. Dazu musst Du Dir am besten selbst eine Meinung bilden. Ich halte es für ein vernünftiges Sicherheitskonzept, mit dem nichts falsch gemacht wird.
Bei unserer Linux Distribution (Ubuntu Server Live), ist der root Benutzer bereits gesperrt und tom wurde schon als stellvertretender Administrator angelegt.
Das Vorzeichen in der Shell vom root Benutzer ist die Raute: #
Wenn Du in der Shell am Ende einer Zeile (hinter Benutzernamen und Hostnamen) ein # siehst, dann bedeutet es, dass Du als root angemeldet bist. Alle anderen Benutzer haben statt der Raute ein $ Symbol als Vorzeichen.
sudo
sudo ist ein Befehl, der es ermöglicht, Prozesse als der "Superuser" root auszuführen. Dazu muss dieser Benutzer der gleichnamigen Gruppe sudo angehören. Befehle die mit sudo ausgeführt werden, müssen mit dem eigenen Passwort bestätigt werden. Die Berechtigung ist eine Zeitlang gültig und erlischt nach einer Weile wieder.
Den Benutzer tom, den wir bei der Linux Installation angelegt haben, hat sudo Rechte erhalten. Dieses Privileg werden wir vor allem bei systembezogenen Aufgaben gebrauchen.
Ein paar Standard Befehle
Als Übung folgen ein paar Befehle, die kopiert und in die aktuell laufende Shell eingefügt werden können.
Ordner Inhalt anzeigen mit ls
Den Inhalt des aktuellen Ordners wird mit ls ausgegeben.
__$ ls
Dateien, deren Namen mit einem Punkt . beginnen werden nicht angezeigt. Wird der Befehl erweitert um den Parameter -a, werden alle Inhalte eines Ordners angezeigt:
__$ ls -a
Mit -l wird eine detaillierte Liste ausgegeben:
__$ ls -l
Das lässt sich auch kombinieren:
__$ ls -la
Um den Inhalt eines anderen Ordners anzuzeigen, kann ein relativer oder absoluter Pfad angegeben werden:
__$ ls -la /etc/ssh
Ein absoluter Pfad beginnt mit einem / (root Verzeichnis):
__$ ls -la /
Wenn die Ausgabe die Bildschirmhöhe überschreitet, kann mit | less die Ausgabe unterbrochen werden. Mit den Pfeiltasten geht’s dann weiter und mit q kann es beendet werden:
__$ ls -la /etc | less
Verzeichnis wechseln mit cd
Mit cd kann in ein anderes Verzeichnis gewechselt werden. Zum Beispiel mit einem absoluten Pfad:
__$ cd /etc/ssh
Und von dort weiter mit einem relativen Pfad:
__$ cd ssh
pwd gibt Auskunft darüber, wo Du Dich gerade befindest:
__$ pwd
Ausgabe:
/etc/ssh
cd .. wechselt eine Ebene höher:
__$ cd ..
__$ pwd
Ausgabe:
/etc
Wenn nur cd ausführt wird, gelangst Du in das Home-Verzeichnis des angemeldeten Benutzers (/home/<BENUTZER>/). Ein Äquivalent für den Pfad des Home-Verzeichnisses (/home/<BENUTZER>/) ist ~. Mit cd ~ kann also auch in das Home-Verzeichnis gewechselt werden.
Das Home-Verzeichnis vom root User ist das Wurzelverzeichnis /.
Wenn Du als root folgenden Befehl ausführst, landest Du im root Verzeichnis.
__$ cd ~
__$ pwd
Ausgabe:
/
Der Texteditor Nano
nano ist ein integrierter Editor, der nicht separat installieren werden muss. Als kleine Übung legen wir eine Datei an, speichern sie in einen Ordner für temporäre Dateien und löschen sie gleich wieder.
__$ nano /tmp/test
Der Editor öffnet sich und wir schreiben irgendetwas rein: "Hallo Welt". Die /tmp/test Datei existiert noch gar nicht, daher werden wir gleich beim Speichern gefragt, ob wir sie mit diesem Inhalt anlegen wollen. Die Tastenkombination STRG+s zum Speichern und STRG+x zum Schließen.
Falls es Änderungen gibt, die nicht gespeichert wurden, öffnet sich nach STRG+x ein Schließen-Menü. Mit y und Enter bestätigen wir den angezeigten Pfad zum Speichern.
Sehr nützlich ist der Shortcut STRG+k, um ganze Zeilen zu löschen.
Datei löschen mit rm
Mit rm werden Dateien gelöscht. Löschen wir die eben erzeugte test Datei:
__$ rm /tmp/test
Ein kurzer Check mit ls, ob die Datei noch da ist:
Wenn die ersten Buchstaben eines Befehls oder eines Pfades eingetippt wurden, kann mit Tab der Rest automatisch vervollständigt werden.
Angenommen wir wollen den Inhalt des Ordners /home auflisten, dann reicht es schon, wenn wir ls /h schreiben und dann Tab drücken. Wenn mehrere Möglichkeiten bestehen, wird mit zweimal Tab eine Liste angezeigt. Versuche das mal mit ls /lib und dann zweimal Tab.
Historie und wiederholen von Befehlen
Alle eingegeben Kommandos werden in der Datei .bash_history im jeweiligen Benutzerordner gespeichert. Mit dem Befehl history kann das ausgelesen werden:
__$ history
Für gewöhnlich wird die in der Shell die rauf/runter Pfeiltasten benutzt, um durch die letzten Eingaben zu blättern.
Eine weitere Möglichkeit ist die Tastenkombination STRG+r. Damit lassen sich die letzten Eingaben durchsuchen. Gibst Du nun zum Beispiel ls ein, erscheint der letzte Eintrag dazu. Mit STRG+SHIFT+r kann darin geblättert werden. Abbrechen mit Escape.