

Beispielausgabe einer Manpage über „man man“ Kommando in der Shell
Basics für den Shell-Alltag
Wenn man noch kein alter Hase im Umgang mit der Kommandozeile (Shell) unter Linux, Unix oder Mac OS ist, ist es manchmal nicht ganz leicht, einen ersten Überblick über wichtigste Kommandos mit den richtigen Optionen zu bekommen. In dem Tutorial Ten Things I Wish I Knew When Becoming A Linux Admin gibt Anthony James 10 nützliche Tipps, die bei den ersten Schritten als Linux-Newbie helfen. Die meisten grundlegenden Shell-Kommandos und Optionen gelten auch für Unix und Mac OS. Hier folgt eine Zusammenfassung dazu.
1 Im Zweifel immer Logs checken
Da bei Linux und anderen Unix-ähnlichen Systemen Alles irgendwo geloggt wird, ist es bei Problemen immer ratsam, zuerst die Logdateien zu checken, um dem Fehler auf die Spur zu kommen. Bei den meisten Systemen sind die Logs im Verzeichnis /var/logs zu finden. Systemfehlermeldungen werden in /var/log/syslog protokolliert.

Linux Tux
2 Logausgabe mit tail -f
Mit dem tail-Kommando kann man sich Dateien auf der Konsole anzeigen lassen. Um z.B. die aktuellsten Einträge einer Logdatei anzuzeigen, ist die Option -f hilfreich:
tail -f
Das head-Kommando zeigt die ersten 10 Zeilen einer Datei an.
3 Ressourcenüberblick mit df -h
Je nach Festplattenplatz oder Partitionsgröße kann es manchmal zu Speicherplatzproblemen kommen. Um hier auf dem Laufenden zu bleiben, ist das df-Kommando (disc free) hilfreich, dass einem den noch freien Speicherplatz anzeigt. Wichtigste Optionen sind hier –h für „human“ um ein für Menschen verständliches Format wie z.B. 5G angezeigt zu bekommen und –m für die Ausgabe in Megabytes.
4 Nicht als root einloggen
Da die meisten Hackversuche über Portscanner und Passwortgeneratoren versuchen den Root-Account zu knacken, gehört zum kleinen Admin-Einmaleins, den Root-Zugang zu sperren. Dazu wechselt man in das Verzeichnis /etc/ssh und editiert sshd_config in einem Texteditor. Die Zeile „PermitRootLogin yes“ wird zu „PermitRootLogin no“ geändert. Danach muß SSH neu gestartet werden um die Änderung wirksam zu machen:
/etc/init.d/ssh restart
5 Rechteverwaltung mit chmod und chown
Insbesondere bei der Verwaltung von Webserververzeichnissen ist es sehr wichtig, sich mit der Rechteverwaltung über chmod und chown auszukennen. Falsche Rechteeinstellungen bedeuten hier ein enormes Sicherheitsrisiko.
6 SFTP statt FTP benutzen
SFTP verschlüsselt Passwörter bei der getunnelten Übertragung, während FTP über Port 21 das Passwort im Klartext übermittelt. Port 21 kann leicht abgehört werden um so Passwörter auszulesen.
7 Auflisten von Verzeichnissen mit ls –al
Über das Kommando
ls -al
bekommt man alle Dateien in einem Verzeichnis angezeigt – auch die, die mit einem . (Punkt) beginnen und das Datum der letzten Änderung. Viele nutzen „ls -al“ als Standardvariante für das ls-Kommando.
8 Prozessübersicht mit top
Wenn der Prozessor mal ziemlich ausgelastet zu sein scheint, kann man mit dem top-Kommando die Ressourcen-intensivsten Systemprozesse ausgeben. Hier eine Beispielausgabe:

Beispielausgabe des Kommandos top
9 Suche in Dateien über Wörter und reguläre Ausdrücke mit grep
Grep ist ein sehr mächtiges Kommando für das Suchen in Dateien. Hier ein Beispiel:
grep -r pinehead.tv /etc/*
Mit diesem Kommando wird das Verzeichnis /etc rekursiv mit allen darunterliegenden Ordnern nach „pinehead.tv“ dursucht. Grep wir oft kombiniert mit dem find-Kommando verwendet, dass für Datei- und Verzeichnissuche gedacht ist.
10. Suchergebnisse in Datei umleiten
Um ein Suchergebnis in einer Datei auszugeben, anstatt auf der Konsole, kann man die Ausgabe wie folgt umleiten:
grep -r pinehead.tv /etc/* > test.test
In diesem Beispiel wird das Suchergebnis in die Textdatei test.test geschrieben. Noch ein paar Hinweise zu der Verwendung von Ausgabeumleitungen:
- „>“ steht hier für eine einfache Ausgabeumleitung bei der eine neue Datei erzeugt wird, die die Ausgabe enthält. Wenn schon eine Datei mit dem gleichen Namen vorhanden ist, wird sie überschrieben.
- Mit der doppelten Ausgabeumleitung „>>“ kann man die Ausgabe an eine bestehende Datei anhängen. Auch „>>“ erzeugt eine neue Datei, wenn sie noch nicht existiert.
Man kann diese Tipps sicher noch unendlich fortsetzten, aber wir belassen es hier mal dabei. Um weitere Infos und verfügbare Optionen (flags) zu einem Shell-Kommando anzuzeigen, kann man jedem Kommando jederzeit ein „man“ voranstellen, um die dazugehörigen Hilfeseiten (man-pages) aufzurufen. „Man man“ gibt z.B. Auskunft über das man-Kommando selbst. Ausserdem gibt es zahlreiche Webseiten, die sowohl man-pages, Kurzreferenzen und weitere Tutorials zu Linux und Unix anbieten.
Weiterführende Links:
- Unix-Kurzreferenz als pdf – Thomas Fründ
- Vi-Kurzanleitung – Netbase.org
- Unix Tutorial for Beginners – Surrey.ac.uk
less log + F kann mehr als tail -F log
… less kann mehr als more? :-)
Punkt 4..
Klasse Tipp für Anfänger -> Wie sperre ich mich am besten und erfolgreich aus..
Natürlich muss man erst einen User anlegen über den man sich einloggen kann, sehen ob dieser user mit sudo root Rechte erhält . Nochmal checken ob es klappt und dann zum Schluss „PermitRootLogin no“ schreiben.
Unsere Junior Developer müssen sich immer durch SelfLinux durcharbeiten, das ist genial für den Start!
Anmerkungen/Korrekturen zu den einzelnen Tipps:
1: Die Systemnachrichten werden nicht immer in „/var/log/syslog“ ausgegeben sondern oft auch in „/var/log/messages„. Das hängt von der verwendeten Distribution bzw. der syslog-Konfiguration ab.
2: Hinweis: Man kann auch tailf benutzen.
3: df steht für „disk free“. In diesem Zusammenhang ist Auslastung des Arbeitsspeichers ebenso interessant: „free -m“.
4: Es wird SSH neu gestartet nicht die Shell. Übrigens sollte man die aktuelle Sitzung offen lassen und in einem zweiten Fenster die Verbindung versuchen. Die aktuelle Sitzung wird nämlich offen gehalten obwohl der Dienst neu gestartet wird, d.h. man kann noch überprüfen ob man sich gerade ausgesperrt hat oder nicht.
6: FTP kann nur zum hochladen von Dateien, nicht zur vollständigen Administration (ausführen von Befehlen) verwendet werden. Insofern ist dieser Tipp generell richtig, für den admin aber eher zweitrangig.
Hinweis: SFTP ist ein Untersystem von SSH und ist nicht mit FTPs (die verschlüsselte Variante von FTP zu verwechseln).
Doku zu SSH siehe auch: http://www.stefanux.de/wiki/doku.php/netzwerke/ssh
10: „>“ oder „>>“ ist eine reine Ausgabeumleitung in eine Datei, das Pipe-Zeichen ist „|“. Diese Ausgabeumleitung wird eher selten als pipe bezeichnet weil die Ausgabe nicht an ein anderes Programm geschickt wird (sondern in eine Datei). Siehe auch: https://de.wikipedia.org/wiki/Pipe_%28Informatik%29
Ausgabeumleitungen sind sehr wichtig, siehe auch:
http://www.stefanux.de/wiki/doku.php/shellscripts/shellscripts#umleitungen-der-eingabe-und-ausgabe
Was noch fehlt:
Generell sollte man sich unbedingt mit dem Paketmanagement (Softwareverwaltung) des Systems vertraut machen. Updates einspielen ist eins der Standardaufgaben eines admin.
Ebenso so grundlegend ist es das Verzeichnislayout von Linux zu verstehen (Konfiguration in „/etc“ usw.) siehe auch: http://www.stefanux.de/wiki/doku.php/linux/dateisystemaufbau
@Stefan
Hallo und vielen Dank für die umfangreichen Anmerkungen und Korrekturen!
Wo Du Recht hast, hast Du Recht ;) „Shell“ ist zu „SSH“ verbessert und „Pipe“ zu „Ausgabeumleitung“. Habe >/>> zwar im Englischen auch schon manchmal als „Pipes“ gelesen, aber das ist eigentlich verwirrend, weil „|“ ja Pipes sind.
Viele Grüße
Moni
Hallo Monika Steinberg,
„GNU ‚grep'“ resp. RegExp (BRE, ERE, PCRE) sind (insbes.) f. unixoide OS unverzichtbar (geworden) – unter (https://goo.gl/ljr0pM) wird diese Thematik entsprechend (ausgiebig) behandelt.
Ciao, Sascha.
lol jeder 15 jährige der mal linux benutzt hat kann diese kleinigkeiten, gaaanz weit weg vom richtigen linux admin