Difference between revisions of "AdminenFibel"

From haecksen
Jump to navigation Jump to search
Line 119: Line 119:
 
Aufgabe: wie kommt man mit ls zu diesem listing?
 
Aufgabe: wie kommt man mit ls zu diesem listing?
  
Die absoulute Adressirung ist unabhängig von dem Verzeichnis, in dem ich mich aktuell befinde. Nach dem Login bin ich in meinem Home, also /home/username. Möchte ich mir eine Datei anzeigen lassen, z.B. die Systemweite COnfig-Datei vom vim, geht das also mit
+
Die absolute Adressierung ist unabhängig von dem Verzeichnis, in dem ich mich aktuell befinde. Nach dem Login bin ich in meinem Home, also /home/username. Möchte ich mir eine Datei anzeigen lassen, z.B. die Systemweite COnfig-Datei vom vim, geht das also mit
  
 
   less /etc/vim/vimrc
 
   less /etc/vim/vimrc
Line 125: Line 125:
 
Wenn ich relativ adressiere, ist mein Ausgangspunkt relevant. Das aktuelle Verzeichnis lasse ich mir ausgeben mit '''"pwd"''' für "print working directory", falls ich unsicher bin, wo ich mich befinde.
 
Wenn ich relativ adressiere, ist mein Ausgangspunkt relevant. Das aktuelle Verzeichnis lasse ich mir ausgeben mit '''"pwd"''' für "print working directory", falls ich unsicher bin, wo ich mich befinde.
  
Möchte ich nun mein Verzeichnis bin ausgeben lassen, reicht:
+
Möchte ich nun mein Verzeichnis bin wechseln, reicht:
  
   ls bin
+
   cd bin
  
Möchte ich mir das Verzeichnis eines anderen Users ansehen (soweit Leserechte gesetzt sind), ginge das mit:
+
Möchte ich in das Verzeichnis eines anderen Users gehen (soweit Rechte gesetzt sind), ginge das mit:
  
   ls ../user2
+
   cd  ../user2
  
 
also ein Verzeichnis hoch und dann der Name des anderen Users.
 
also ein Verzeichnis hoch und dann der Name des anderen Users.
  
 
Aufgabe: wie hieße der absolute Pfad zum anderen user?
 
Aufgabe: wie hieße der absolute Pfad zum anderen user?
 +
Zum ersten Beispiel: wie hieße der relative Pfad zum vimrc vom Homeverzeichnis aus?
 +
 +
 +
----
 +
 +
===less / der Pager / Dateien ansehen===
 +
 +
Bei den Konfigurationsfiles von Programmen handelt es sich um reine ASCII-(Text)Dateien, die man mit einem Pager ansehen kann. Das ursprüngliche Unix-Kommando dafür hieß "more". Unter Linux hat sich aber das in seinen Möglichkeiten umfangreichere '''"less"''' durchgesetzt.
 +
 +
Man kann nun
 +
 +
* in das Verzeichnis wechseln und mit "less dateiname" eine Datei anzeigen oder
 +
* den vollen Pfad der Datei beim less angeben
 +
 +
Aufgabe: versuche beides für /etc/vim/vimrc .
 +
 +
Was aber passiert, wenn ich versehentlich eine Binärdatei ausgeben lassen will? Teste es mit /bin/ls .
 +
 +
Natürlich kann ich vor dem Ansehen oder dem Versuch, eine Datei zu editieren (auch das geht nur mit Textdateien) herausfinden, was für eine Datei ich vor mir habe. Der Dateityp hängt unter Linux, anders als unter Windows NICHT an der Endung der Datei! Man findet den Dateityp heraus mit
 +
 +
  file dateiname
 +
 +
Auch hier kann relativ oder absolut adressiert werden.
 +
 +
Aufgabe: führe das file-Kommando aus auf /etc/vim/vimrc, /bin/ls, eine Bilddatei, ein libreoffice-Dokument, ein PDF File....
 +
 +
 +
----

Revision as of 17:54, 5 December 2018

Die kleine Haecksen-Adminen-Fibel

Hilfe zum Betrieb von many.haecksen.org by Princess

Arbeiten mit der Shell / wie bekomme ich Hilfe zu Kommandos

Für die remote administration eines Unix/Linux-Servers ist es unerläßlich, die Kommandozeile (Shell) zu beherrschen, weil eine grafische Nutzeroberfläche (GUI) meist nicht zur Verfügung steht.

Die Standard-Shell unter Linux ist die bash (Bourne-Again-Shell), die sich aus der Bourne Shell (sh) entwickelt hat.

Die Admine loggt per ssh auf many.haecksen.org mit ihrem Benutzeraccount (nicht gleich als root) ein. Idealerweise ist ein ssh-Schlüssel dort hinterlegt, so daß die Passworteingabe entfällt. Gibt es keinen ssh-Schlüssel, wird das Passwort abgefragt. Dieses Verhalten ist im sshd (dazu später) konfiguriert.

Einmal auf der Shell "gelandet", ist es gut, zu wissen, daß es drei Arten von Kommandos gibt. Gibt man einen Befehl ein, so wird in folgender Reihenfolge nach dem Kommando gesucht:

  • ist es ein Shell-Alias (also ein meist selbst konfigurierte Befehlsabkürzung oder -Abfolge)
  • ist das Kommando ein Shell-Builtin
  • oder ist das Kommando ein Programm "im Pfad".

Je nachdem unterscheidet sich, wie man sich Hilfe holt:

  • Bei eigenen Aliasen gibt es keine Hilfe, es sei denn, diese wurde explizit implementiert (was sich bei eigendefinierten Abkürzungen meinst nicht lohnt)
  • Bei Shell-Builtins bekommt man Hilfe mit "help kommando"
  • Bei normalen Kommandos im Pfad gibt es in der Regel eine Manpage: "man kommando"




type / wie finde ich heraus, was ich denn für ein Kommando vor mir habe

Um herauszufinden, was wir vor uns haben, tippen wir:

 type kommandoname

oder auch

 type -a kommandoname

um alle Vorkommen eines Kommandos anzuzeigen.

Beispiel:

 type cd
 cd is a shell builtin

Hier bekommen wir also Hilfe mit

 help cd

Beispiel 2:

 type -a ls

ergibt bei mir (Princess):

 ls is aliased to `ls -F'
 ls is /bin/ls

Das erste ls ist also von mir selber definiert, keine Hilfe. Das zweite ist aber ein Kommando "im Pfad", also mit Angabe eines Verzeichnisses (/bin). Hier erhalte ich also Hilfe mit

 man ls

Aufgabe: diese Seite anlesen. "durch" ist sportlich.




Der Pfad / die PATH Variable

Was aber hat es genau mit "dem Pfad" auf sich: $PATH ist eine Shell-Variable. Anzeigen läßt man sich den Inhalt mit:

 echo $PATH

darauf folgt eine Angabe wie z.B. diese:

 /home/princess/bin:/client/bin:/client/sbin:/usr/local/bin:/bin:/usr/bin:/sbin:/usr/sbin:/usr/X11R6/bin:.

Wir sehen hier eine Abfolge von Verzeichnissen, getrennt mit dem Doppelpunkt. In dieser Reihenfolge wird in den Verzeichnissen nach dem gerade eingegebenen Kommando gesucht, wenn es eben nicht von der Shell kommt. Wichtiger Hinweis: am Ende befindet sich der Punkt, also das aktuelle Verzeichnis. Dieses ist in einer root-Shell in der Regel NICHT gesetzt, weil es das Ausführen von untergeschobenen Kommandos erleichtern würde.

Festgelegt wird diese Variable entweder im systemweiten Konfigurationsfile /etc/bash.bashrc oder im Konfigurationsfile im Homeverzeichnis des Nutzers.

Das Homeverzeichnis des Nutzers liegt auch in einer Shell-Variable: $HOME.

Aufgabe: gib dieses aus.

In einem eigenen Verzeichnis /home/princess/bin kann ich eigene Kommandos und Skripte ablegen.


Die Konfigurationsfiles von Kommandos

Typischerweise gibt es zu jedem Unix Kommando ein Konfigurationsfile, das idR. auf "rc" für "resource config" endet. Das systemweite File der bash ist oben erwähnt. Die eigene Konfiguration im Home-Verzeichnis beginnt mit dem Punkt und endet auf rc, also in dem Fall: .bashrc . Der komplette Pfad der Datei lautet also:

 /home/username/.bashrc

Ebenso gibt es z.B. für das Mailprogramm mutt das systemweite /etc/Muttrc und das .muttrc im Home, oder für den Editor vi das systemweite /etc/vim/vimrc und das .vimrc im Home.

Bewegen in Verzeichnissen: cd

Da wir ja schon wissen, daß dies ein Shell-Builtin ist, hole Dir Hilfe zu diesem Kommando.

cd ohne weitere Argumente wechselt in das Home-Verzeichnis des Nutzers. Ein Verzeichnis im Baum "höher" erreicht man mit "cd ..". Für das "Springen" in Verzeichnisse gibt es grundsätzlich zwei Wege:

  • absolute Adressierung mit vollem Pfad
  • relative Adressierung vom aktuellen Verzeichnis aus

Das Wurzelverzeichnis eines jeden Unix heißt "/" (vorwärtsgerichteter Schrägstrich, gesprochen "root"). Unterverzeichnisse des Systems liegen darunter:

 bin   dev  home        lib    lost+found  mnt  proc  run   srv  tmp  var
 boot  etc  initrd.img  lib64  media       opt  root  sbin  sys  usr  vmlinuz

Aufgabe: wie kommt man mit ls zu diesem listing?

Die absolute Adressierung ist unabhängig von dem Verzeichnis, in dem ich mich aktuell befinde. Nach dem Login bin ich in meinem Home, also /home/username. Möchte ich mir eine Datei anzeigen lassen, z.B. die Systemweite COnfig-Datei vom vim, geht das also mit

 less /etc/vim/vimrc

Wenn ich relativ adressiere, ist mein Ausgangspunkt relevant. Das aktuelle Verzeichnis lasse ich mir ausgeben mit "pwd" für "print working directory", falls ich unsicher bin, wo ich mich befinde.

Möchte ich nun mein Verzeichnis bin wechseln, reicht:

 cd bin

Möchte ich in das Verzeichnis eines anderen Users gehen (soweit Rechte gesetzt sind), ginge das mit:

 cd  ../user2

also ein Verzeichnis hoch und dann der Name des anderen Users.

Aufgabe: wie hieße der absolute Pfad zum anderen user? Zum ersten Beispiel: wie hieße der relative Pfad zum vimrc vom Homeverzeichnis aus?



less / der Pager / Dateien ansehen

Bei den Konfigurationsfiles von Programmen handelt es sich um reine ASCII-(Text)Dateien, die man mit einem Pager ansehen kann. Das ursprüngliche Unix-Kommando dafür hieß "more". Unter Linux hat sich aber das in seinen Möglichkeiten umfangreichere "less" durchgesetzt.

Man kann nun

  • in das Verzeichnis wechseln und mit "less dateiname" eine Datei anzeigen oder
  • den vollen Pfad der Datei beim less angeben

Aufgabe: versuche beides für /etc/vim/vimrc .

Was aber passiert, wenn ich versehentlich eine Binärdatei ausgeben lassen will? Teste es mit /bin/ls .

Natürlich kann ich vor dem Ansehen oder dem Versuch, eine Datei zu editieren (auch das geht nur mit Textdateien) herausfinden, was für eine Datei ich vor mir habe. Der Dateityp hängt unter Linux, anders als unter Windows NICHT an der Endung der Datei! Man findet den Dateityp heraus mit

 file dateiname

Auch hier kann relativ oder absolut adressiert werden.

Aufgabe: führe das file-Kommando aus auf /etc/vim/vimrc, /bin/ls, eine Bilddatei, ein libreoffice-Dokument, ein PDF File....