BlogBlog ÜbersichtjailscriptportsoptFreeBSDLinksThermoskanne

Einmalig verwendbare Passwörter benutzen

Auf FreeBSD können zum Anmelden einmalig verwendbare Passwörter mit Hilfe von OPIE benutzt werden. Dazu muss OPIE zuerst auf einem sicheren Kanal mit der -c Option initialisiert werden (am besten auf der Konsole des Rechners). Mit der -s Option kann ein mindestens 5 Zeichen langer Seed (ein zufälliger Initialisierungswert, in folgendem Beispiel abc123) angegeben werden. Während der Initialisierung wird man nach einer mindestend 10 Zeichen langen Passphrase gefragt, welche später zum Generieren der Einweg-Passwörter verwendet werden muss:

# opiepasswd -c -s abc123
Only use this method from the console; NEVER from remote. If you are using
telnet, xterm, or a dial-in, type ^C now or exit with no password.
Then run opiepasswd without the -c parameter.
Using MD5 to compute responses.
Enter new secret pass phrase:<Passphrase>
Again new secret pass phrase:<Passphrase>

ID beat OTP key is 499 abc123
BOLO SNOW FOUR SWAT FURY FAY

Das erste generierte Passwort besitzt die Nummer 499. Beim nächsten Anmelden wird man aber nach dem Passwort mit der Nummer 498 gefragt, deshalb muss dieses zuerst abgefragt werden. Dazu übergibt man die Passwort-Nummer und den Seed an opiekey:

# opiekey 498 abc123
Using the MD5 algorithm to compute response.
Reminder: Don't use opiekey from telnet or dial-in sessions.
Enter secret pass phrase: <Passphrase>
FRAU NAIR COCO DRAG SLOB RAFT

Meldet man sich nun zum Beispiel per SSH auf dem Rechner an, wird man nach dem Passwort mit der Nummer 498 gefragt:

# ssh beat@<Rechner>
otp-md5 498 abc123 ext
Password:FRAU NAIR COCO DRAG SLOB RAFT

Es lassen sich auch mehrere Passwörter gleichzeitig generieren. Die Anzahl der Passwörter, welche ausgegeben werden sollen, kann mit der -n Option angegeben werden. Auch muss die Nummer des ersten Passworts, welches generiert werden soll, angegeben werden:

# opiekey -n 5 497 abc123
Using the MD5 algorithm to compute response.
Reminder: Don't use opiekey from telnet or dial-in sessions.
Enter secret pass phrase: <Passphrase>
493: ITEM RUG WORN OLDY FOAL UNIT
494: NINE IVAN DEAD NERO BLUE TAP
495: WEE WADE LOG LAID DANA LAYS
496: FLUB BABE IVAN BURL VAIN HOYT
497: KNOW JOKE ALMA HUED TAIL BIT

Nun können die Passwörter notiert werden. Die Passwortnummern werden bis Null heruntergezählt. Spätestens wenn man bei Null angelangt ist, muss man OPIE neu initialisieren.

Mit Hilfe von opieinfo kann herausgefunden werden, welches Passwort als nächstes verwendet und welcher Seed gebraucht wird.

# opieinfo
497 abc123

Mehr Informationen zu OPIE findet man in der Manpage opiepasswd(1), opiekey(1) und opieinfo(1).

Related Entries:
Gespeicherte Optionen nach OptionsNG konvertieren
Ports-Subversion-Repository spiegeln
sysinstall-Ersatz für neuere FreeBSD-Versionen
Alte FreeBSD-Port Patchdateien aufsplitten
FreeBSD-Portbaum auf Fehler überprüfen
 Permalink

patch-Dateien bearbeiten

Mit Hilfe von diff(1) können Änderungen zwischen zwei Versionen einer Textdatei angezeigt werden:

# diff -u datei.orig datei
--- datei.orig 2008-07-05 10:26:27.000000000 +0200
+++ datei 2008-07-05 10:26:18.000000000 +0200
@@ -1 +1 @@
-Inhalt original
+Inhalt neu

Leitet man die Ausgabe von diff in eine Datei um, kann die Änderung danach mit Hilfe von patch(1) zum Beispiel auf eine identische Datei auf einem anderen Rechner angewendet werden:

# diff -u datei.orig datei > datei.patch
# patch < datei.patch
Hmm... Looks like a unified diff to me...
The text leading up to this was:
--------------------------
|--- datei.orig 2008-07-05 10:26:27.000000000 +0200
|+++ datei 2008-07-05 10:26:18.000000000 +0200
--------------------------
Patching file datei using Plan A...
Hunk #1 succeeded at 1.
done

In den FreeBSD Ports unter misc/patchutils findet man patchutils, welches mehrere Programme enthält, mit denen man patch-Dateien bearbeiten kann.

# cd /usr/ports/misc/patchutils && make install clean

Besitzt man zum Beispiel zwei Versionen eines Patches, so können mit Hilfe von interdiff(1) die Änderungen zwischen den beiden Versionen angezeigt werden. Die Ausgabe von interdiff kann ebenfalls wieder in eine Datei umgeleitet werden, welche danach wieder mit patch(1) angewendet werden kann:

# interdiff pkg_updating_main_c-1.patch pkg_updating_main_c-2.patch > pkg_updating_main_c-diff_1-2.patch

Eine Patch-Datei kann auch die Änderungen von mehreren Datein beinhalten. Möchte man nur Änderungen von bestimmten Dateien aus einem Patch auslesen, kann filterdiff(1) verwendet werden. Mit der -i Option werden nur Änderungen von Dateien angezeigt, welche auf das Filterkriterium passen. Mit der -x Option werden alle Änderungen von Datein angezeigt, welche nicht auf das Filterkriterium passen. Im folgenden Beispiel werden nur die Änderungen an Header-Dateien aus dem Patch angezeigt:

# filterdiff -i '*.h' pkg_updating.patch

Modifizert man einen Patch von Hand, kann es sein, dass Zeilennummern und der Offset im Patch nicht mehr stimmen. Nun kann dazu rediff(1) aufgerufen werden, welches diese an die neuen Änderungen anpasst:

# rediff <Originale Datei> <Modifizierter Patch>

Alternativ dazu kann der Patch direkt mit editdiff(1) bearbeitet werden. Dazu wird ein Editor geöffnet, in welchem der Patch bearbeitet werden kann. Speichert man die Änderungen und schliesst den Editor, werden die Änderungen am Patch direkt umgesetzt:

# editdiff <Patch>

Hat man zwei Patches auf die gleiche Datei erstellt, welche nacheinander angewendet werden sollen, können diese mit combinediff(1) zu einem Patch verbunden werden

# combinediff <Patch1> <Patch2>

Mit lsdiff(1) können alle Dateien angezeigt werden, welche durch den Patch modifiziert werden:

#  lsdiff pkg_updating.patch
src/usr.sbin/pkg_install/lib/lib.h
src/usr.sbin/pkg_install/updating/Makefile
src/usr.sbin/pkg_install/updating/main.c
src/usr.sbin/pkg_install/updating/pathnames.h
src/usr.sbin/pkg_install/version/version.h

Möchte man überprüfen, ob eine gewisse Datei mit dem Patch modifiziert wird, kann grepdiff(1) verwendet werden:

# grepdiff main pkg_updating.patch
src/usr.sbin/pkg_install/updating/main.c

Befindet sich ein Patch auf einer HTML Seite, kann der Quellcode der Seite heruntergeladen werden und danach der Patch aus dem HTML-Code mit Hilfe von dehtmldiff(1) extrahiert werden:

# dehtmldiff <HTML-Datei>
 Permalink

Teile des Portbaums nicht aktualisieren

Sowohl mit portsnap als auch mit csup ist es möglich, Kategorien des Portbaums nicht zu aktualisieren. Benutzer von portsnap können die Kategorien, die nicht aktualisiert werden sollen, in der /etc/portsnap.conf mit der Option REFUSE angeben:

REFUSE arabic chinese french hebrew hungarian japanese

Benutzer von csup können die Kategorien in einer refuse-Datei aufführen. Diese muss sich im base-Verzeichnis von csup befinden. Dieses wird in der Ports-sup-Datei konfiguriert:

# grep "default base" ports-supfile
*default base=/var/db

Nun kann die refuse-Datei im entsprechenden Verzeichnis angelegt werden:

# vi /var/db/sup/refuse
ports/arabic
ports/chinese
ports/french

Führt man nun das nächste Mal portsnap oder csup aus, werden die angegebenen Teile nicht mehr aktualisiert. Man sollte sich aber bewusst sein, dass ein nicht vollständiger oder nicht vollständig aktualisierter Portbaum offiziell nicht unterstützt wird. Sollte man also irgendwann auf Probleme mit dem Portbaum stossen, sollten die unvollständigen Teile zuerst wieder aktualisiert werden.

 Permalink

DNS Cache verwenden

Auf FreeBSD ist es möglich, DNS Abfragen lokal zwischenzuspeichern. Dazu kann ab FreeBSD 7.0 der nscd verwendet werden, welcher bereits im FreeBSD Basissystem vorhanden ist. Dieser muss zuerst in der /etc/rc.conf aktiviert werden:

# echo 'nscd_enable="YES"' >> /etc/rc.conf

Konfiguriert wird nscd in der /etc/nscd.conf. Falls man den nscd nur zum Zwischenspeichern von DNS Lookups verwenden möchte, kann man alle anderen Dienste auf no stellen:

enable-cache passwd no
enable-cache group no
enable-cache hosts yes
enable-cache services no
enable-cache protocols no
enable-cache rpc no
enable-cache networks n

Danach kann der nscd gestartet werden:

# /etc/rc.d/nscd start

Nun muss noch in der /etc/nsswitch.conf mit dem cache-Schlüsselwort angegeben werden, in welcher Reihenfolge DNS Lookups gemacht werden sollen. In folgendem Beispiel wird immer zuerst der DNS Cache abgefragt.

hosts: cache files dns

Falls man irgendwann die gespeicherten DNS Lookups löschen muss, kann die -i Option von nscd verwendet werden:

# nscd -i host 

Mehr Informationen zu nscd findet man in der Manpage nscd(8) und nscd.conf(5).

Comments (1)  Permalink

UFS Journaling auf neuer Festplatte aktivieren

Seit FreeBSD 7.0 besteht die Möglichkeit, ein UFS Dateisystem mit Journaling statt mit Softupdates zu betreiben. Möchte man nun eine neue Festplatte in ein bestehendes System einfügen und diese mit UFS Journaling versehen, so muss zuerst UFS Journaling für die neue Festplatte, in diesem Beispiel /dev/ad1, konfiguriert werden:

# gjournal label /dev/ad1

Danach kann das gjournal Kernelmodul wie folgt geladen werden:

# gjournal load
GEOM_JOURNAL: Journal 2439108283: ad1 contains data.
GEOM_JOURNAL: Journal 2439108283: ad1 contains journal.
GEOM_JOURNAL: Journal ad1 clean.

Nun kann die neue Festplatte mit UFS2 formatiert werden. Durch die -J Option wird das Journaling aktiviert:

# newfs -J /dev/ad1.journal

Nun kann das neue Dateisystem ins System gemountet werden. Mit UFS-Journaling ist es auch möglich das Dateisystem mit der async Option zu mounten, ohne dass man ein inkonsistentes Dateisystem zu befürchten hat.

# mkdir /mnt/backup
# mount -o async /dev/ad1.journal /mnt/backup

Damit das Dateisystem bei einem Neustart des Systems automatisch gemountet werden kann, muss zuerst der entsprechende Eintrag in der /boot/loader.conf gemacht werden:

# echo 'geom_journal_load="YES"' >> /boot/loader.conf

Danach kann der Eintrag in der /etc/fstab erstellt werden:

/dev/ad1.journal        /mnt/backup     ufs     rw,async        2       2

Anschliessend wird das neue Dateisystem mit Journaling nach einem Neustart automatisch ins System eingebunden.

# mount
/dev/ad0s1a on / (ufs, local)
devfs on /dev (devfs, local)
/dev/ad0s1e on /tmp (ufs, local, soft-updates)
/dev/ad0s1f on /usr (ufs, local, soft-updates)
/dev/ad0s1d on /var (ufs, local, soft-updates)
/dev/ad1.journal on /mnt/backup (ufs, asynchronous, local, gjournal)

Mehr Informationen zu UFS Journaling findet man in der Manpage gjournal(8).

Comments (2)  Permalink

DNS Konfiguration auf Fehler überprüfen

Mit Hilfe von doc kann die DNS Konfiguration einer Domain auf Fehler überprüft werden. doc findet man im FreeBSD Portbaum unter dns/doc:

# cd /usr/ports/dns/doc && make install clean

Nun kann der Domainname der Domain, welche überprüft werden soll, an doc übergeben werden:

# doc chruetertee.ch
Doc-2.2.3: doc chruetertee.ch
Doc-2.2.3: Starting test of chruetertee.ch. parent is ch.
Doc-2.2.3: Test date - Sa 28 Jun 2008 13:32:14 CEST
Summary:
No errors or warnings issued for chruetertee.ch.
Done testing chruetertee.ch. Sa 28 Jun 2008 13:32:30 CEST

Mit der -v Option können zusätzliche Informationen zu den durchgeführten Tests angezeigt werden:

# doc -v chruetertee.ch

Im Verzeichnis, in dem doc ausgeführt wurde, wird eine Logdatei mit allen Testausgaben erstellt:

# cat log.chruetertee.ch.

Eine Übersicht, welche Tests durchgeführt wurden, findet man in der Datei /usr/local/lib/doc/INFO. Mehr Informationen zu doc findet man in der Manpage doc(8).

 Permalink

MASTER_SITES aus bsd.sites.mk nach Antwortzeiten sortieren

In der Datei /usr/ports/Mk/bsd.sites.mk, sind die Server hinterlegt, von welchen über die Ports der Quellcode von größeren Softwareprojekten heruntergeladen werden kann. Ebenfalls ist die Reihenfolge, in welcher die Server angefragt werden, in dieser Datei hinterlegt. Diese Reihenfolge kann nun angepasst werden, so dass das Herunterladen zuerst von Servern versucht wird, welche bessere Antwortzeiten haben. Dazu kann das Skript fastest_sites verwendet werden, welches man im FreeBSD Portbaum unter ports-mgmt/fastest_sites findet:

# cd /usr/ports/ports-mgmt/fastest_sites && make install clean

Führt man das Skript aus, werden die Antwortzeiten der verschiedenen Server getestet. Die Ausgabe kann in eine Datei geschrieben werden:

# fastest_sites > /usr/local/etc/ports_sites.conf
=> Checking servers for MASTER_SITE_GENTOO (50 servers)
=> Checking servers for MASTER_SITE_TCLTK (6 servers)
=> Checking servers for MASTER_SITE_GET_E (6 servers)
=> Checking servers for MASTER_SITE_EASYSW (5 servers)
=> Checking servers for MASTER_SITE_PERL_CPAN (19 servers)
=> Checking servers for MASTER_SITE_PACKETSTORM (5 servers)
=> Checking servers for MASTER_SITE_GNUPG (14 servers)
[...]

Die erstellte Datei kann nun in /etc/make.conf eingebunden werden. Dazu kann einfach folgende Zeile an die Datei angehängt werden:

.include "/usr/local/etc/ports_sites.conf"
 Permalink

Terminalfenster unterteilen

Mit Hilfe von dvtm kann man ein Terminalfenster in mehrere Terminals aufteilen. Im FreeBSD Portbaum ist dvtm unter sysutils/dvtm vorhanden:

# cd /usr/ports/sysutils/dvtm && make install clean

Um dvtm anzupassen, kann die config.h Datei entsprechend geändert werden. Diese muss dann beim Kompilieren des Ports über die Variable DVTM_CONF angegeben werden:

# cd /usr/ports/sysutils/dvtm && make DVTM_CONF=/<Pfad zu eigener Konfig>/config.h install clean

Startet man nun dvtm, wird ein neues Terminal geöffnet:

# dvtm

Zum Ausführen von dvtm-Befehlen muss zuerst eine bestimmte Tastenkombination gedrückt werden. Standardmässig ist das Ctrl+g (Strg+g auf der deutschen Tastatur). Möchte man zum Beispiel das vorhandene Terminalfenster in zwei Terminals unterteilen, drückt man Ctrl+g und danach c.

Hat man nun mehrere Terminals geöffnet, kann die Anordnung der Terminals mit Ctrl+g Leertaste geändert werden. Alternativ kann auch direkt mit Ctrl+g b, Ctrl+g g oder Ctrl+g t die gewünschte Anordnung gewählt werden.

Nun kann mit Ctrl+g j oder Ctrl+g k das aktive Terminal gewechselt werden. Verwendet man dvtm auf einer X Oberfläche, kann mit der Maus in das gewünschte Fenster geklickt werden. Möchte man unter X Text mit der Maus markieren, um diesen in die Zwischenablage zu kopieren, oder Text aus der Zwischenablage in ein Terminal kopieren, muss dazu die Shift-Taste gedrückt werden.

Einzelne Terminals können mit Ctrl+g x geschlossen werden. dvtm beendet man mit Ctrl+g q.

Folgendes Bild zeigt dvtm mit fünf offenen Terminals, in denen mcabber, newsbeuter, mutt und screen laufen.

dvtm

Mehr Informationen zu dvtm und alle möglichen Tastenkombinationen findet man in der Manpage dvtm(1).

Comments (4)  Permalink

foreach-Schleife in der tcsh

Mit der foreach-Schleife können in der tcsh Operationen auf mehreren Dateien gleichzeitig ausgeführt werden. Startet man eine foreach-Schleife, muss eine Variable deklariert werden und angegeben werden, welche Dateien modifiziert werden sollen. Danach können die Befehle, die auf den Dateien angewendet werden sollen, angegeben werden. Anschliessend wird die Schleife mit end beendet. Im folgenden Beispiel wird allen Dateien der Suffix .orig angehängt:

#  ls
file0 file1 file2 file3
# foreach file (*)
foreach? mv $file $file.orig
foreach? end
# ls
file0.orig file1.orig file2.orig file3.orig

Nun können auf den Dateinamen Substitution Patterns der tcsh verwendet werden. So wird im folgenden Beispiel der Suffix .orig durch .test ersetzt:

# foreach file (*)
foreach? mv $file $file:s/.orig/.test/
foreach? end
# ls
file0.test file1.test file2.test file3.test

Soll der Suffix entfernt werden, kann dies mit $file:r gemacht werden:

# foreach file (*)
foreach? mv $file $file:r
foreach? end
# ls
file0 file1 file2 file3

Nun kann der erste Buchstabe des Dateinamens mit Hilfe von $file:u in einen Grossbuchstaben umgewandelt werden:

# foreach file (*)
foreach? mv $file $file:u
foreach? end
# ls
File0 File1 File2 File3

Umgekehrt kann der erste Buchstaben auch wieder in einen Kleinbuchstaben geändert werden:

# foreach file (*)
foreach? mv $file $file:l
foreach? end
# ls
file0 file1 file2 file3

Mehr Informationen zu der foreach-Schleife und den Substitution Patterns der tcsh findet man in der Manpage tcsh(1).

Related Entries:
Wort in der tcsh löschen
Programm mit which finden
Liste der besuchten Verzeichnisse merken
tcsh bei Inaktivität beenden
Vervollständigung in der tcsh
Comments (2)  Permalink

Sparc-Systeminformation im EEPROM oder NVRAM anzeigen oder verändern

Verwendet man FreeBSD auf einem SPARC-Rechner, so können mit Hilfe von eeprom die Systeminformationen, welche im EEPROM oder NVRAM gespeichert sind, angeschaut werden:

# eeprom -a
tpe-link-test?: true
scsi-initiator-id: 7
keyboard-click?: false
keymap:
ttyb-rts-dtr-off: false
ttyb-ignore-cd: true
ttya-rts-dtr-off: false
ttya-ignore-cd: true
ttyb-mode: 9600,8,n,1,-
ttya-mode: 9600,8,n,1,-
pcia-probe-list: 1,2,3,4
pcib-probe-list: 1,2,3
mfg-mode: off
diag-level: min
#power-cycles: 87
system-board-serial#:
system-board-date:
fcode-debug?: false
output-device: screen
input-device: keyboard
load-base: 16384
boot-command: boot
auto-boot?: true
watchdog-reboot?: false
diag-file: -r
diag-device: disk:b
boot-file:
boot-device: /pci@1f,0/pci@1,1/ide@3/disk@0,0:a disk net
local-mac-address?: false
ansi-terminal?: true
screen-#columns: 80
screen-#rows: 34
silent-mode?: false
use-nvramrc?: false
nvramrc: devalias pgx24 /pci@1f,0/pci@1,1/SUNW,m64B
security-mode: none
security-password:
security-#badlogins: 6
oem-logo:
oem-logo?: false
oem-banner:
oem-banner?: false
hardware-revision:
last-hardware-update:
diag-switch?: false

Nun können einzelne Werte mit Hilfe von eeprom auch verändert werden:

# eeprom diag-level=max
diag-level: min -> max

Von FreeBSD unterstützte SPARC-Systeme findet man auf der FreeBSD/sparc64 Webseite, mehr Informationen zu eeprom und eine Beschreibung der Variablen findet man in der Manpage eeprom(8).

 Permalink
Prev Next41-50/84