Jul 23

Die grundsätzliche Funktionalität von sudo habe ich im Artikel “sudo vs. su” bereits erklärt. In diesem Artikel möchte ich darauf eingehen, wie man einem Benutzer die Verwendung von sudo erlauben kann. Unter Linux gibt es hierfür die Datei “/etc/sudoers”. Diese sollte allerdings nicht mit einem beliebigen Editor bearbeitet werden, sondern ausschließlich mit “visudo”, da hiermit vor dem Speichern eine Syntax-Überprüfung erfolgt. Darauf weist auch der Kommentar “This file MUST be edited with the ‘visudo’ command as root.” am Dateianfang hin. Außerdem weiß visudo wo die sudoers-Datei auf dem System gespeichert ist, da der Pfad auf anderen Betriebssystemen (z.B. bei Mac OS X unter “/private/etc/sudoers”) auch abweichen kann. Wie visudo zu bedienen ist, kann im Artikel “Standard-Editor vi” nachgelesen werden, außerdem werden die verfügbaren Befehle in der Statusleiste angezeigt.

Mit dem folgenden Befehl öffnet man also die sudoers-Datei als Superuser:

visudo

Unter Debian sieht die Datei standardmäßig wie folgt aus:

# /etc/sudoers
#
# This file MUST be edited with the 'visudo' command as root.
#
# See the man page for details on how to write a sudoers file.
#
 
Defaults        env_reset
 
# Host alias specification
 
# User alias specification
 
# Cmnd alias specification
 
# User privilege specification
root    ALL=(ALL) ALL

Damit wird dem Benutzer “root” auf allen Computern die Ausführung aller Befehle mit/unter jedem Benutzer erlaubt. Im Allgemeinen können fünf Einstellungen pro Zeile festgelegt werden:

  1. Benutzer: Ein Benutzer oder Alias (Standard: muss festgelegt werden).
  2. Host: Ein Host oder Alias (Standard: muss festgelegt werden).
  3. =
  4. (Runas): Mit/Unter welchem Benutzer der Befehl ausgeführt wird (in runden Klammern geschrieben) (Standard: root).
  5. Authentifizierung: Ob nach dem Benutzer-Passwort gefragt werden soll (PASSWD) oder nicht (NOPASSWD) gefolgt von “:” und anschließend Befehl (Standard: nach Passwort fragen).
  6. Befehl: Ein oder mehrere Befehle oder Alias (Standard: muss festgelegt werden).
# User privilege specification
root    ALL=(ALL) ALL

könnte mit der selben Wirkung vereinfacht

# User privilege specification
root    ALL=ALL

oder erweitert wie folgt geschrieben werden:

# User privilege specification
root    ALL=(ALL) PASSWD:ALL

Auch mehrere Befehle können angegeben werden, z.B. dass immer nach dem Benutzer-Passwort gefragt wird, außer für /sbin/reboot:

username ALL=NOPASSWD:/sbin/reboot,PASSWD:ALL

Wie bereits erwähnt können für Benutzer, Host und Befehl auch ein Alias angegeben werden. Diese können wie folgt festgelegt und aktiviert werden:

# Host alias specification
Host_Alias SERVER=host1,host2
 
# User alias specification
User_Alias MAINTAINER=username1,username2
 
# Cmnd alias specification
Cmnd_Alias DEB=/sbin/reboot,/usr/bin/aptitude
  
# User privilege specification
root    ALL=(ALL) ALL
MAINTAINER    SERVER=(root) PASSWD:DEB

Die oben erwähnten Konfigurationen nochmals übersichtlich zusammengefasst:

# User privilege specification
# USER     HOST  =(RUNAS) PASSWD/NOPASSWD COMMAND
root       ALL   =(ALL)                   ALL
root       ALL   =                        ALL # same as above
root       ALL   =(ALL)   PASSWD:         ALL # same as above
MAINTAINER SERVER=(root)  PASSWD:         DEB
Jul 12

vi ist aufgrund seiner geringen Größe und weiten Verbreitung auf vielen *NIX-Betriebssystemen standardmäßig installiert. Aus diesem Grund ist es ein großer Vorteil, wenn man zumindest die Grundfunktionalität des Editors kennt und damit Dateien (z.B. Konfigurationsdateien) bearbeiten kann.

Mit dem Befehl “vimtutor” kann man in der Konsole ein vi-Tutorial starten, das sehr zu empfehlen ist und einem den Editor näher bringt.

Hier möchte ich dennoch die Funktionalität für Eilige kurz zusammenfassen:

Zum Starten von vi tippt man den Befehle “vi [-Optionen] Dateiname” in die Konsole.

Folgende wichtige Optionen stehen zur Verfügung:
-i: vi wird im Eingabemodus anstelle standardmäßig im Befehlsmodus gestartet.
-R: Die angegebene Datei wird Read-Only geöffnet.
+[n]: Sprint zu Zeile n, wobei [n] durch eine Ganzzahl zu ersetzen ist.

Selbstverständlich können Optionen auch miteinander kombiniert werden:
vi -R +50 .bash_history

Der Editor selbst kennt drei unterschiedliche Modi: Befehlsmodus, Eingabemodus und Kommandozeile. Standardmäßig wird vi im Befehlsmodus gestartet, mit der oben genannten Option -i kann allerdings der Eingabemodus erzwungen werden.

Im Eingabemodus kann man wie von einem Editor zu erwarten Text bearbeiten. Dabei werden die gedrückten Tasten an der aktuellen Cursor-Position eingefügt/gelöscht/… . Um den Eingabemodus oder die Kommandozeile (wieder) zu verlassen und in den Befehlsmodus (zurück) zu gelangen, muss man nur die Taste “Esc” drücken. In frühen Versionen von vi konnte man nicht erkennen, welcher Modus aktiv war, deshalb drücken vi-Benutzer vorsichtshalber gerne die Taste “Esc”, um sicher im Befehlsmodus zu sein, bevor sie fortfahren.

Zur Kommandozeile gelangt man, indem man im Befehlsmodus “:” eintippt. Wichtige Kommandos sind:
e!: Alle Änderungen seit dem letzten Speichern verwerfen.
w: Speichern.
wq: Speichern und beenden.
q: Beenden (nur wenn keine Änderungen vorgenommen wurden).
q!: Beenden ohne zu speichern.

Zum Speichern einer Datei und anschließendem beenden von vi tippt man im Befehlsmodus folgendes ein:
:wq

Im Befehlsmodus stehen unter anderem folgende wichtige Befehle zur Verfügung:

Bearbeiten:
i: Eingabe vor dem aktuellen Zeichen (wechselt in den Eingabemodus).
a: Eingabe nach dem aktuellen Zeichen (wechselt in den Eingabemodus).
I: Eingabe am Beginn der aktuellen Zeile (wechselt in den Eingabemodus).
A: Eingabe am Ende der aktuellen Zeile (wechselt in den Eingabemodus).
R: Überschreiben einschalten.

Bewegen:
w: Ein Wort vorwärts bewegen.
[n]w: [n] Wörter vorwärts bewegen, wobei [n] durch eine Ganzzahl zu ersetzen ist.
b: Ein Wort zurück bewegen.
[n]b: [n] Wörter zurück bewegen, wobei [n] durch eine Ganzzahl zu ersetzen ist.
0: Zum Zeilenanfang spingen.
$: Zum Zeilenende springen.
G: Zum Ende des Dokuments springen.
[n]G: Zur Zeile [n] des Dokuments springen, wobei [n] durch eine Ganzzahl zu ersetzen ist.

Löschen:
dd: Aktuelle Zeile löschen.
[n]dd: [n] Zeilen löschen, wobei [n] durch eine Ganzzahl zu ersetzen ist.
x: Nächstes Zeichen löschen.
[n]x: Nächste [n] Zeichen löschen, wobei [n] durch eine Ganzzahl zu ersetzen ist.
X: Vorheriges Zeichen löschen.
[n]X: Vorherige [n] Zeichen löschen, wobei [n] durch eine Ganzzahl zu ersetzen ist.
D: Löschen des Textes beginnend von Cursor-Position bis zum Zeilenende.

Rückgängig:
u: Letzten Befehl rückgängig machen.
U: Letzten Befehl in aktueller Zeile rückgängig machen.

Suchen:
/[pattern]: Vorwärtssuche nach [pattern], wobei [pattern] durch den Suchbegriff zu ersetzen ist.
?[pattern]: Rückwärtssuche nach [pattern], wobei [pattern] durch den Suchbegriff zu ersetzen ist.
n: Suche erneut durchführen.
N: Suche in umgekehrte Richtung erneut durchführen.

Speichern und beenden:
ZZ: Speichern und beenden (entspricht “wq” in der Kommandozeile).

May 12

Die Installation von CentOS (basiert auf und ist kompatibel Red Hat Enterprise Linux, allerdings ohne teuren Support-Vertrag erhältlich) mittels Netinst-CD gestaltet sich im Gegensatz zur Netinst von Debian als aufwendig/schwierig. Zuerst muss die Netinst-CD von CentOS von einem Spiegel-Server geladen werden. Nachdem von der Netinst-CD gestartet wurde, startet wie erwartet der Installationsprozess (bis hierher analog zu Debian, nun folgt der ungewöhnliche Teil). Bereits nach kurzer Zeit erscheint eine Aufforderung zur Auswahl des Installationsmediums:

Das Laden von einem Spiegel-Server passiert also nicht wie bei Debian automatisch, sondern es muss ein nahegelegener Server aus der Liste ausgesucht und anschließend händisch angegeben werden. Nachdem man den gewünschten Server (z.B. http://mirror.eunet.at/5.1/os/i386/) gefunden hat, muss man zuerst das Medium festlegen (in diesem Fall HTTP):

Anschließend muss TCP/IP konfiguriert werden. In diesem Fall kann die IP-Adresse glücklicherweise per DHCP bezogen werden:

Abschließend müssen noch Servername und Verzeichnis angegeben werden, damit die Netinst beginnen kann:

Jan 02

Immer wieder interessant ist es, die Seite Market Share zu besuchen, um die aktuellen Marktanteile der verschiedenen Applikationen zu erfahren. Bei den Betriebssystemen führt derzeit Windows klar mit 91,79%, gefolgt von Mac OS (inkl. iPhone) mit 7,43% und Linux mit nur noch 0,63%. Windows verlor dabei minimal Boden an Mac OS, etwas weniger an Linux. Internet Explorer ist bei den Browsern mit satten 76,04% weiterhin Marktführer vor Firefox (16,80%) und Safari (5,59%). Zu erkennen ist, dass Microsofts Internet Explorer deutlich Marktanteile insbesondere an Firefox und Safari verloren hat. Beliebteste Suchmaschine ist weiterhin Google mit 77,04%, vor Yahoo (12,76%) und MSN (inkl. Live Search) mit 5,90%. Der Marktanteil blieb auf diesem Sektor praktisch unverändert.