Jul 29

Sehr erfreut war ich über den Newsletter von Debian, den ich heute in meinem Postfach vorgefunden habe. Ab sofort wird jeweils im Dezember eines ungeraden Jahres der aktuelle Stand für einen neuen Release eingefroren. Im folgenden Frühjahr sollte dann mit der Veröffentlichung zu rechnen sein. D.h. dass im Schnitt alle zwei Jahre mit einer neuen stabilen Version zu rechnen ist. Das wird schlussendlich dazu führen, dass stets relativ neue Pakete in den jeweiligen stabilen Releases zu finden sein werden. Ich hoffe nur bzw. bin auch relativ überzeugt davon, dass die Stablität und Qualität nicht darunter zu leiden hat.

Jul 27

Einen unter UNIX/Linux erstellten id_rsa privaten Schlüssel für SSH kann man mit PuTTY nicht ohne weiteres verwenden. Dieser muss hierfür zuerst mit PuTTYgen in eine PuTTY Private Key File (Dateiendung: .ppk) konvertiert werden.

Zuerst lädt man sich PuTTYgen und wählt nach dem Start des Programms im Menü “Conversions” > “Import key” aus. Im daraufhin öffnenden Dateibrowser wählt man den privaten Schüssel “id_rsa” aus und öffnet diesen. Als nächstes klickt man auf die Schaltfläche “Save private key” und bestätigt die daraufhin erscheinende Sicherheitsabfrage mit “Yes”, sodass keine Passphrase verwendet wird. Im Dateibrowser wählt man den gewünschten Speicherort aus und gibt einen Dateinamen ein, um die ppk-Datei abschließend unter diesem Namen zu speichern. Der soeben erstellte ppk kann nun zur RSA-Authentifizierung mittels PuTTY verwendet werden. Analog funktioniert die Konvertierung von DSA-Schüsseln (id_dsa).

Mar 17

Auf Linux/Unix-Systemen gehören Dateien und Ordner immer einem Benutzer und einer Gruppe. Neu erstellte Dateien erben Benutzer und Gruppe vom Benutzer, der die Dateien/den Ordner erstellt. Neue Dateien lassen sich mit dem Befehl touch (z.B. “touch test.txt”), Ordner mit mkdir (z.B. “mkdir test”) anlegen, die Ausgabe von Objekten im Verzeichnis erfolgt mit ls (z.B. “ls -la”):

$ touch test.txt
$ mkdir test
$ ls -la
total 0
drwxr-xr-x   4 user  group   136 16 Mär 14:55 .
drwxrwxrwx+ 68 user  group  2312 16 Mär 14:55 ..
drwxr-xr-x   2 user  group    68 16 Mär 14:55 test
-rw-r--r--   1 user  group     0 16 Mär 14:55 test.txt

Die Datei “test.txt” gehört hier dem Benutzer “user” und der Gruppe “group”, genauso wie alle anderen Objekte (“.” zeigt den aktuellen, “..” den übergeordneten Ordner an). Zusätzlich werden die Rechte ausgegeben – für “test.txt” sind dies “-rw-r–r–”.

Der erste Buchstabe spezifiziert den Typ näher, für Ordner wird i.d.R. ein “d” angezeigt (siehe Ordner “test”), symbolische Links können an einem “l” erkannt werden. Die nächsten drei Buchstaben “rw-” beschreibt die Rechte des Besitzers (Owner), die nächsten drei “r–” jene der Gruppe (Group), die letzten drei “r–” die Rechte für den Rest (World). Dreistellige Gruppen von Buchstaben können auch als Zahlen ausgedrückt werden, mit folgender Bedeutung:

r = 4 = 100 = Read
w = 2 = 010 = Write
x = 1 = 001 = eXecute
(Buchstabe = Dezimal-Zahl = Binär-Zahl = Bedeutung) 

D.h. “rwx” ist gleichbedeutend mit “7″ bzw. “rw” mit “6″ oder “rx” mit “5″.

Benutzer bzw. Gruppe können mit chown (z.B. “chown user2:group2 test.txt”), Rechte mit chmod (z.B. “chmod 0666 test.txt”, selbes Ergebnis mit “chmod a=rw test.txt”) modifiziert werden.

Feb 15

Am 14. Februar 2009 wurde Debian GNU/Linux 5.0 (Codename “Lenny”) veröffentlicht und löst somit Debian GNU/Linux 4.0 (Codename “Etch”) als aktuelle stabile Version des Debian-Projekts ab. Die aktuelle Version unterstützt nun zwölf unterschiedliche Architekturen, unter anderem auch aktuelle Intel und AMD-Plattformen mit 64bit, hinzugekommen ist Marvells Orion-Plattform, die in zahlreichen Speicherlösungen zum Einsatz kommt und die Unterstützung für Netbooks. Die Paketverwaltung apt bietet nun die Möglichkeit Paketbeschreibungen in der Sprache des Benutzers auszugeben, sofern eine Übersetzung vorhanden ist.  Weitere Neuerungen können der Presseveröffentlichung entnommen werden.

Oct 23

In Firmennetzwerken (z.B. Webagenturen) ist es notwendig, dass auf interne Webseiten aus dem lokalen Netzwerk ohne Passworteingabe zugegriffen werden kann, aus externen Netzwerken (z.B. dem Internet) sollte hingegen der Aufruf der Seiten zwar auch möglich sein, allerdings nur nach erfolgreicher Authentifizierung mit Benutzername und Passwort. Somit wird externen Mitarbeitern oder Kunden der Zugriff ermöglicht und alle anderen Besucher, die keinen Zugriff haben sollen, ausgeschlossen.

Mit Apache und dem Modul mod_auth ist diese Konfiguration sehr einfach zu bewerkstelligen. Obendrein ist es auch möglich bestimmten externen IP-Adressen (z.B. von externen Mitarbeitern mit fixen IP-Adressen) den Zugriff ohne Passworteingabe zu ermöglichen. Hierfür wird folgende Konfiguration benötigt:

Order Allow,Deny
AuthType Basic
AuthName "Restricted Files"
AuthUserFile "/var/www/.htpasswd"
Require valid-user
Allow from 127.0.0.1 localhost
Allow from 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16 169.254.0.0/16
Satisfy Any

Die Benutzernamen und Passwörter werden in diesem Fall in der Datei “/var/www/.htpasswd” gespeichert. Diese kann recht einfach mit dem Programm “htpasswd” über die Konsole bearbeitet werden. Der Zugriff ist im Beispiel vom lokalen Rechner und aus lokalen (privaten) Netzwerken erlaubt. Zusätzliche vertrauenswürdige IP-Adressen oder ganze Netzwerke können selbstverständlich hinzugefügt werden.

Die Konfiguration kann sowohl in einer .htaccess-Datei eingefügt werden, als auch direkt in den Konfigurationsdateien des Apache (httpd.conf bzw. apache2.conf) erfolgen.

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: