Tipp: Dateirechte unter Linux - Besitz und Zugriffsrechte
Dateirechte setzen und verändern
Nachdem der letzte Artikel dieser Reihe die Besitz- und
Zugriffsrechte ausführlich erklärt hat, geht es hier um die wichtigen
Kommandos, mit denen Sie die Dateirechte ‘ändern’: chown, chgrp
und chmod.
Zuvor aber stellen wir das Kommando stat vor, das die Rechte sehr
übersichtlich anzeigt:
user@linux ~$ stat kapitel.txt
File: 'kapitel.txt'
Size: 819 Blocks: 8 IO Block: 4096 regular file
Device: fd06h/64774d Inode: 439267 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 4000/mgisbers) Gid: ( 4000/mgisbers)
Access: 2013-03-25 18:52:04.283934329 +0100
Modify: 2013-03-25 18:52:04.283934329 +0100
Change: 2013-03-25 18:52:04.288934359 +0100
Es finden sich alle bereits bekannten Parameter wieder. Darüber hinaus
sind einige Zeitangaben eingeblendet. Die vom Befehl ls
standardmäßig ausgegebene Zeit ist die ‘mtime’ (Modifikationszeit),
also der Zeitpunkt der letzten Änderung am Inhalt der Datei. Weniger
bekannt sind die ‘atime’ (Zugriffszeit), das Datum des letzten Zugriffs
auf den Dateiinhalt, und die ‘ctime’ (Änderungszeit), die den Zeitpunkt
der letzten Rechteänderung angibt.
Tipp: Netzwerk mit ip
Geschichtsstunde: ifconfig
Vielen ist der Befehl ifconfig ein Begriff, ist er doch
seit Jahrzehnten für die Konfiguration des Netzwerks unter Unix-
oder Linux-Systemen zuständig. So sehen beispielsweise Aufrufe zum
Setzen einer IP-Adresse und Anzeigen der Konfiguration aus:
root@linux:~# ifconfig eth0 192.168.1.1 netmask 255.255.255.0 up
root@linux:~# ifconfig eth0
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.1 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 fe80::225:90ff:fec0:ffee prefixlen 64 scopeid 0x20<link>
ether 00:25:90:c0:ff:ee txqueuelen 1000 (Ethernet)
RX packets 123346 bytes 120154576 (114.5 MiB)
RX errors 0 dropped 2571 overruns 0 frame 0
TX packets 126744 bytes 71491997 (68.1 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
device memory 0xfe120000-fe13ffff
Auf die Details gehen wir an dieser Stelle nicht ein. Inzwischen
bietet der Linux Kernel neue Funktionen, die ifconfig nicht mehr
bedient. Eine Anpassung hätte weitreichende Eingriffe erfordert
und eine Änderung oder Erweiterung der Syntax mit sich gebracht. So
hat man sich entschlossen, gleich ein neues Programm ins Leben zu
rufen. Das Resultat is der Befehl mit dem kurzen und prägnanten Namen
ip. Dieser ersetzt nicht nur den Befehl ifconfig, sondern auch
die Befehle route und arp.
Tipp: nohup
Programme, die innerhalb einer Shell - z. B. /bin/bash - gestartet werden warten, normalerweise, auf das Ende ihrer Ausführung und belegen in der Zeit die Konsole.
Einfach lässt sich dies durch das Kommando sleep darstellen:
tux@linux ~ $ sleep 10
Erst 10 Sekunden nach dem Start des Kommandos erscheint ein neuer Prompt und es werden neue Kommandos ausgeführt. Zwar kann man während das Kommando sleep die Konsole belegt schon neue Kommandos eingeben, aber die eigentliche Ausführung startet erst nach Ende des vorherigen Kommandos.
Tipp: OpenSSH - Verbindung zeitweilig unterbrechen
Diese Unterbrechungen sind im Umfeld der Shell recht üblich und werden dort über die Tastenkombination STRG+z durchgeführt. Damit wird der aktuelle Prozess im Job-Management angehalten und die Shell zur Eingabe von Befehlen freigegeben. Nach der Arbeit mit dem Befehl erfolgt eine Wiederaufnahme des Befehls über fg.
Tipp: OpenSSH mit ssh-agent
Bereits in dem letzten Artikel dieser Reihe
haben wir die Datei authorized_keys kennengelernt und
erfahren, wie man mit ihr einen Login ohne Kennworteingabe
durchführt.
SSH-Agent
Solange wir, wie es empfohlen ist, auf den ‘privaten Schlüssel’ ein Kennwort legen, muss weiterhin bei jedem Login ein Kennwort eingegeben werden. Dies ist allerdings nicht das Kennwort des Benutzers auf der angesprochenen Maschine, sondern das Kennwort des lokal abgelegten ‘privaten Schlüssels’.
Die Entwickler des SSH-Protokolls haben für diesen Zweck
einen Mechanismus eingebaut, über den ein Agent die
Verwaltung der Schlüssel übernimmt und bei Zugriff auf einen
Server dem ssh-Kommando nutzbare Schlüssel anbietet.
Tipp: OpenSSH Public Key Authentifizierung
Nachdem sich der erste Teil der Reihe mit den grundlegenden Funktionen der ‘Secure SHell’ befasst hat, gehen wir nun einen Schritt weiter. Thema dieses Artikels ist die Anmeldung ohne Passwort per ‘Public Key Authentifizierung’.
Öffentlicher und privater Schlüssel
Die Idee eines Schlüssels ist hinreichend bekannt: Er gewährt Zugang zu einem System. Ein symmetrischer Schlüssel – also ein Schlüssel lediglich zum Verschlüsseln und Entschlüsseln – genügt unseren Ansprüchen an dieser Stelle allerdings nicht.
Tipp: OpenSSH und authorized_keys
Nachdem wir in dem letzten Artikel dieser Reihe
schon die einfache Nutzung der Datei authorized_keys
kennengelernt haben, geht es in dieser Folge um weitere
Einsatzmöglichkeiten.
Darüber hinaus sollen natürlich auch einige wichtige Parameter für die Konfiguration eines OpenSSH-Servers oder -Clients nicht fehlen.
Automatische Ausführung von Befehlen
Die einfachste Art, Befehle mit OpenSSH auf einer entfernten Maschine ausführen zu lassen, ist, den Befehl direkt auf der Kommandozeile anzugeben.
Um die Beispiele zu vereinfachen, gehen wir in der Folge
davon aus, dass lokal ein ssh-agent mit einem ‘privaten
Schlüssel’ läuft und der Benutzer auf dem Server in der
Datei authorized_key den entsprechenden ‘öffentlichen
Schlüssel’ hinterlegt hat.
Tipp: OpenSSL - Erstellen von Zertifikaten aus bestehenden Zertifikaten
Im Zusammenhang mit dem Heartbleed Bug in OpenSSL müssen die Privaten Schlüssel und Zertifikate der Server ausgetauscht werden, da es durch eine geschickte Nutzung des Bugs möglich ist den Privaten Schlüssel auszulesen und zur Entschlüsselung der per https übertragenen Daten genutzt werden.
Erster Schritt ist das Erzeugen eines neuen Privaten Schlüssels.
user@linux ~ $ openssl genrsa -out server.key 2048
Generating RSA private key, 2048 bit long modulus
......................................................+++
.................................................................+++
e is 65537 (0x10001)
Der so erstellte Private Schlüssel ist neu und damit unabhängig von dem bisher genutzten Privaten Schlüssel. Damit der Schlüssel genutzt werden kann wird nun das Zertifikat benötigt. Wir gehen davon aus, dass das Zertifikat von einem Trustcenter stammt und müssen daher eine Zertifikatanfrage (CSR) erstellen.
Tipp: Partitionstabellen kopieren mit sgdisk
Egal ob bei dem ersten Aufsetzen oder bei einem späteren Erweitern eines Software Raids unter Linux, es muss immer auf zusammengehörenden Festplatten die gleichen Daten in die Partitionstabelle eingetragen sein. Die meisten Administratoren lösen das Problem mittels eines manuellen Aufrufs und lassen sich zunächst die alte Partitionstabelle ausgeben und tragen die Daten dann auf der neuen Festplatte ein.
tux@linux ~ $ sudo gdisk -l /dev/sda
GPT fdisk (gdisk) version 0.8.10
Partition table scan:
MBR: protective
BSD: not present
APM: not present
GPT: present
Found valid GPT with protective MBR; using GPT.
Disk /dev/sda: 5860533168 sectors, 2.7 TiB
Logical sector size: 512 bytes
Disk identifier (GUID): 9E91EA64-7F47-4DE7-82E6-B162A0F22F83
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 5860533134
Partitions will be aligned on 2048-sector boundaries
Total free space is 2014 sectors (1007.0 KiB)
Number Start (sector) End (sector) Size Code Name
1 264192 2361343 1024.0 MiB FD00 Linux RAID
2 2361344 5860533134 2.7 TiB FD00 Linux RAID
128 2048 264191 128.0 MiB EF02 BIOS boot partition
Diese Vorgehensweise lässt sich auf eine einzelne Festplatte ohne Probleme anwenden, birgt aber auch hier schon die Möglichkeit, dass sich der Administrator vertippt und falsche Daten eingibt.
Tipp: Regular Expressions
Reguläre Ausdrücke
Um den Einsatz
von z. B. sed effizienter zu gestalten, bedarf es der Kenntnisse über ‘Reguläre
Ausdrücke’.
Hintergründe
Viele Linux-Kommandos kennen bei Filterfunktionen nicht nur einzelne Sonderzeichen, sondern auch sogenannte ‘Reguläre Ausdrücke’ (‘Regular Expressions’), auch als ‘RegEx’ oder ‘RegExp’ abgekürzt. Ein regulärer Ausdruck ist sozusagen ein Platzhalter, der (durchaus komplexe) Gruppen von Zeichenketten repräsentiert.
Zwar gibt es verschiedene Implementierungen der RegEx, doch sind die meisten kompatibel mit den ‘Perl Compatible Regular Expressions’ (PCRE). Auch das ‘Portable Operating System Interface’ (POSIX) definiert reguläre Ausdrücke; es ist den PCRE sehr ähnlich, unterscheidet aber etwa einfache und erweiterte RegEx. Welche Art der regulären Ausdrücke und in welchem Umfang sie ein Programm unterstützt, beschreibt dessen Dokumentation.