Difference between revisions of "AdminenFibel"

From haecksen
Jump to navigation Jump to search
Line 32: Line 32:
 
Um herauszufinden, was wir vor uns haben, tippen wir:
 
Um herauszufinden, was wir vor uns haben, tippen wir:
  
'''type kommandoname'''
+
  type kommandoname
  
 
oder auch
 
oder auch
  
'''type -a kommandoname'''
+
  type -a kommandoname
  
 
um alle Vorkommen eines Kommandos anzuzeigen.
 
um alle Vorkommen eines Kommandos anzuzeigen.
Line 89: Line 89:
 
Aufgabe: gib dieses aus.
 
Aufgabe: gib dieses aus.
  
 +
In einem eigenen Verzeichnis /home/princess/bin kann ich eigene Kommandos und Skripte ablegen.
  
 
----
 
----
Line 100: Line 101:
  
 
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.
 
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 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
 +
 +
  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 ausgeben lassen, reicht:
 +
 +
  ls bin
 +
 +
Möchte ich mir das Verzeichnis eines anderen Users ansehen (soweit Leserechte gesetzt sind), ginge das mit:
 +
 +
  ls ../user2
 +
 +
also ein Verzeichnis hoch und dann der Name des anderen Users.
 +
 +
Aufgabe: wie hieße der absolute Pfad zum anderen user?

Revision as of 17:45, 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 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

 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 ausgeben lassen, reicht:

 ls bin

Möchte ich mir das Verzeichnis eines anderen Users ansehen (soweit Leserechte gesetzt sind), ginge das mit:

 ls ../user2

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

Aufgabe: wie hieße der absolute Pfad zum anderen user?