BlogBlog ÜbersichtjailscriptportsoptFreeBSDLinksThermoskanne

Datei vollständig löschen

Möchte man auf FreeBSD und OpenBSD eine Datei vollständig löschen, so dass sie nicht wieder herstellbar ist, kann die -P Option von rm verwendet werden. Diese überschreibt die Datei zuerst mit 0x00, dann mit 0xff und danach wieder mit 0x00, bevor die Datei gelöscht wird.

Allerdings dauert das Löschen mit der -P Option einiges länger als das Löschen ohne:

# ls -l testdatei
-rw-r--r-- 1 beat users 1073741824 31 Jul 17:12 testdatei
# /usr/bin/time -h rm testdatei
0,15s real 0,00s user 0,15s sys

# ls -l testdatei2
-rw-r--r-- 1 beat users 1073741824 31 Jul 17:13 testdatei2
# /usr/bin/time -h rm -P testdatei2
1m27,78s real 0,03s user 4,07s sys

Mehr Informationen zu rm findet man in der Manpage rm(1).

 Permalink

CD-RW löschen

Auf FreeBSD kann burncd nicht nur zum Brennen von iso-Images, sondern unter anderem auch zum Löschen von CD-RWs verwendet werden. Folgender Befehl führt eine Schnelllöschung durch:

# burncd -f /dev/<Brenner> blank

Soll eine vollständige Löschung durchgeführt werden, kann folgender Befehl verwendet werden:

# burncd -f /dev/<Brenner> erase

Dies ist allerdings viel zeitaufwendiger als die Schnelllöschung.

Mehr Informationen zu burncd findet man in der Manpage burncd(8).

 Permalink

Beschreibung von sysctl Variablen anzeigen

Mittels der sysctl Variablen, kann das Verhalten von FreeBSD beeinflusst werden. Der aktuell gesetzte Wert einer Kernelvariablen kann mittels sysctl ausgelesen werden:

# sysctl net.inet.tcp.blackhole
net.inet.tcp.blackhole: 0

Oft sagen die Variablennamen jedoch nicht immer genau aus, für was die Variable zuständig ist, deshalb kann man sich mit der -d Option eine kurze Beschreibung der Variable anzeigen lassen:

# sysctl -d net.inet.tcp.blackhole
net.inet.tcp.blackhole: Do not send RST when dropping refused connections
# sysctl -d vfs.usermount
vfs.usermount: Unprivileged users may mount and unmount file systems

Mehr Informationen zu sysctl findet man in den Manpages sysctl(8) und sysctl.conf(5).

 Permalink

Vorhandene Datei beim Verschieben nicht überschreiben

Verschiebt man auf FreeBSD und OpenBSD eine Datei in ein Verzeichnis, in dem schon eine gleichnamige Datei existiert, so wird diese standardmässig überschrieben:

# mkdir ordner
# echo inhalt1 > ordner/testdatei
# echo inhalt2 > testdatei2
# mv testdatei2 ordner/testdatei
# cat ordner/testdatei
inhalt2

Sollen gleichnamige Dateien beim Verschieben standardmässig nicht überschrieben werden, kann auf FreeBSD die -n Option verwenden:

# echo inhalt1 > ordner/testdatei
# echo inhalt2 > testdatei2
# mv -n testdatei2 ordner/testdatei
# cat ordner/testdatei
inhalt1
# cat testdatei2
inhalt2

Möchte man je nach Fall entscheiden, so kann auf FreeBSD und OpenBSD die -i Option verwendet werden. Wird nun eine gleichnamige Datei erkannt, so fragt mv zuerst nach, ob die Datei überschrieben werden soll.

# echo inhalt1 > ordner/testdatei
# echo inhalt2 > testdatei2
# mv -i testdatei2 ordner/testdatei
overwrite ordner/testdatei? (y/n [n]) n
not overwritten

Mehr Informationen findet man in der Manpage mv(1).

 Permalink

Benutzerkonto temporär deaktivieren

Soll ein Benutzerkonto temporär deaktiviert werden, so kann die Benutzershell in /sbin/nologin geändert werden. Dies kann mit chpass(1) gemacht werden:

# chpass -s /sbin/nologin <Benutzer>

Versucht sich nun ein Benutzer anzumelden, wird ihm mitgeteilt, dass dieses Benutzerkonto deaktiviert ist:

# ssh test@test
This account is currently not available.
Connection to test closed.

Soll das Benutzerkonto wieder aktiviert werden, kann dem Benutzer wieder eine gültige Shell zugewiesen werden:

# chpass -s <Shell> <Benutzer>

Sowohl nologin(8) als auch chpass(1) sind auf FreeBSD und OpenBSD im Basissystem vorhanden.

Comments (1)  Permalink

Ausführbare Binärdatei komprimieren

Will man eine ausführbare Binärdatei komprimieren, weil man auf einem Speichermedium nur beschränkt Platz hat, kann man dies mit gzexe tun. Im folgenden Beispiel befindet sich nslookup, welches 1.1MB gross ist, in einem Verzeichnis:

# ls -l
total 1104
-r-xr-xr-x 1 beat wheel 1100348 7 Jul 12:47 nslookup*
# file nslookup
nslookup: ELF 32-bit LSB executable, Intel 80386, version 1 (FreeBSD), dynamically linked (uses shared libs), stripped

Nun wird die Datei komprimiert:

# gzexe nsloopkup 
nsloopkup: 58.4%
# ls -l
total 1568
-r-xr-xr-x 1 beat wheel 457492 7 Jul 12:40 nslookup*
-r-xr-xr-x 1 beat wheel 1100348 7 Jul 12:40 nslookup~*

Die ursprüngliche Datei hat nun eine Tilde am Ende des Dateinamens. Die komprimierte Datei ist über die Hälfte kleiner als das Original, kann jedoch immer noch ausgeführt werden, allerdings mit einem kleinen Performanceverlust:

# file nslookup
nslookup: Bourne shell script text executable
#./nslookup chruetertee.ch
Server: 192.168.1.1
Address: 192.168.1.1#53

Non-authoritative answer:
Name: chruetertee.ch
Address: 217.150.245.53

Die originale Datei kann nun gelöscht werden.

# rm nslookup~

Möchte man die originale Datei wiederherstellen, verwendet man die -d Option von gzexe:

# gzexe -d nslookup
# ls -l
total 1568
-r-xr-xr-x 1 beat wheel 1100348 7 Jul 12:54 nslookup*
-r-xr-xr-x 1 beat wheel 457492 7 Jul 12:51 nslookup~

Nun wird die komprimierte Datei mit einer Tilde markiert und kann gelöscht werden.

gzexe findet man sowohl auf FreeBSD als auch auf OpenBSD im Basissystem. Mehr Informationen zu gzexe findet man in der Manpage gzexe(1).

 Permalink

Swap verschlüsseln

Möchte man den Swapbereich verschlüsseln, so kann man unter FreeBSD in der /etc/fstab die Devicebezeichnung mit einem .eli ergänzen.

# Device                Mountpoint     FStype   Options    Dump    Pass#
/dev/ad0s1b.eli none swap sw 0 0

Nach einem Neustart würde der Swapbereich von geli(8) verschlüsselt. Gemäss geli(8) sollte bei Swapbereichen zusätzlich in der /etc/rc.conf die "Detach on last close"-Option mittels -d gesetzt werden:

geli_swap_flags="-d"

Nach einem Neustart wird der Swapbereich verschlüsselt:

GEOM_ELI: Device ad0s1b.eli created.
GEOM_ELI: Encryption: AES-CBC 128
GEOM_ELI: Crypto: software

Auch die Ausgabe von swapinfo(8) zeigt nun die verschlüsselte Swappartition an:

# swapinfo 
Device 1K-blocks Used Avail Capacity
/dev/ad0s1b.eli 1048576 0 1048576 0%

Auf OpenBSD kann die Swapverschlüsselung mittels einer sysctl-Variable eingeschaltet werden. Einfach in der /etc/sysctl.conf folgenden Eintrag hinzufügen und das System neu starten:

vm.swapencrypt.enable=1
 Permalink

Swapdatei hinzufügen

Werden die vorhandenen Swap-Partitionen immer mehr gefüllt und es lassen sich keine weiteren Festplatten hinzufügen um dem System mehr Swappartitionen zur Verfügung zu stellen, so kann man eine Swapdatei erstellen, die das System als Auslagerungsspeicher benutzt. Anzeichen für zu wenig Swap- bzw. Arbeitsspeicher sind Meldungen wie diese in /var/log/messages:

swap_pager_getswapspace(4): failed
swap_pager_getswapspace(9): failed
swap_pager_getswapspace(3): failed
swap_pager_getswapspace(8): failed
swap_pager_getswapspace(2): failed
pid 95498 (httpd), uid 1003, was killed: out of swap space

Folgendes System besitzt 1GB Swap wovon 7% besetzt sind.

# swapinfo 
Device 1K-blocks Used Avail Capacity
/dev/ar0s1b 1048576 69488 979088 7%

Zuerst muss eine Swapdatei angelegt und die Berechtigungen angepasst werden. Folgendes Beispiel erstellt eine 1GB grosse Swapdatei:

# dd if=/dev/zero of=/usr/swapdatei bs=1024k count=1024
#
chmod 0600 /usr/swapdatei
Nun kann die Swapdatei dem System zur Verfügung gestellt werden:
# mdconfig -a -t vnode -f /usr/swapdatei -u 0
# swapon /dev/md0
Möchte man, dass die Swapdatei auch nach einem Neustart verwendet wird, kann folgende Zeile in die /etc/rc.conf eingetragen werden:
swapfile="/usr/swapdatei"
Nun kann mit swapinfo(8) überprüft werden, ob das System die zusätzliche Swapdatei verwendet.
# swapinfo 
Device 1K-blocks Used Avail Capacity
/dev/ar0s1b 1048576 70204 978372 7%
/dev/md0 1048576 0 1048576 0%
Total 2097152 70204 2026948 3%
 Permalink

SMTP-Tester für die Kommandozeile

Möchte man die Funktionalität eines einfachen SMTP Servers testen, kann man dies mit telnet machen. Sobald man allerdings auch Verschlüsselung und Authentifizierung des Servers testen muss, geht dies mit telnet nicht mehr. In diesem Falle hilft einem swaks weiter.

Auf FreeBSD findet man swaks unter mail/swaks:

# cd /usr/ports/www/swaks && make install clean

Nun kann mit der -s Option angegeben werden, welcher Server getestet werden soll:

# swaks -s mail.chruetertee.ch
To: beat@chreutertee.ch
=== Trying mail.chruetertee.ch:25...
=== Connected to mail.chruetertee.ch.
<- 220 mail.chruetertee.ch ESMTP Sendmail 8.13.6/8.13.6
-> EHLO daedalus.network.local
<- 250-mail.chruetertee.ch
<- 250-8BITMIME
<- 250-PIPELINING
<- 250-HELP
<- 250 SIZE 26214400
-> MAIL FROM:<beat@daedalus.network.local>
<** 553 <beat@daedalus.network.local> unable to verify address
-> QUIT
<- 221 mail16.bluewin.ch QUIT
=== Connection closed with remote host.

Nun sieht man, dass die Absenderadresse nicht aufgelöst werden konnte und deshalb die Mail nicht versandt wurde.

Im folgenden Beispiel wird die Absenderadresse mit der -f Option festgelegt und die Verbindung verschlüsselt via SSMTP versendet. Zudem muss der Benutzer authentifiziert werden:

# swaks -s mail.chruetertee.ch --protocol SSMTP -f null@chreutertee.ch -a
To: beat@chreutertee.ch
Username: beat
Password: **************
=== Trying mail.chruetertee.ch:465...
=== Connected to mail.chruetertee.ch.
=== TLS started w/ cipher DHE-DSS-AES256-SHA
<~ 220 mail.chruetertee.ch ESMTP Sendmail 8.13.6/8.13.6; Sat, 30 Jun 2007 12:47:15 GMT
~> EHLO daedalus.network.local
<~ 250-mail.chruetertee.ch Hello 192.168.1.1 [192.168.1.1], pleased to meet you
<~ 250-ENHANCEDSTATUSCODES
<~ 250-PIPELINING
<~ 250-8BITMIME
<~ 250-SIZE
<~ 250-DSN
<~ 250-ETRN
<~ 250-AUTH PLAIN LOGIN
<~ 250-DELIVERBY
<~ 250 HELP
~> AUTH LOGIN
<~ 334 asdfghjklwert
~> dfghjj==
<~ 334 qwertzuioiuz
~> sdfghjklmnbvcxyre
<~ 235 2.0.0 OK Authenticated
~> MAIL FROM:<null@chreutertee.ch>
<~ 250 2.1.0 <null@chreutertee.ch>... Sender ok
~> RCPT TO:<beat@chreutertee.ch>
<~ 250 2.1.5 <beat@chreutertee.ch>... Recipient ok
~> DATA
<~ 354 Enter mail, end with "." on a line by itself
~> Date: Sat, 30 Jun 2007 14:45:58 +0200
~> To: beat@chreutertee.ch
~> From: null@chreutertee.ch
~> Subject: test Sat, 30 Jun 2007 14:45:58 +0200
~> X-Mailer: swaks v20061116.0 jetmore.org/john/code/#swaks
~>
~> This is a test mailing
~>
~> .
<~ 250 2.0.0 l5UClFLM068527 Message accepted for delivery
~> QUIT
<~ 221 2.0.0 mail.chruetertee.ch closing connection
=== Connection closed with remote host.

swaks gibt immer die vollständige Kommunikation zwischen dem Client und dem Server aus, so können Fehler und Probleme eines SMTP-Servers erkannt werden. swaks bietet eine grosse Anzahl von Optionen, welche alle in der Manpage beschrieben sind, welche man wie folgt aufruft:

# swaks --help
 Permalink

Monitor für den pf Paketfilter

Für den pf Paketfilter gibt es pftop, welches ähnlich wie top(1), regelmässig Informationen zum Netzwerkverkehr durch die pf anzeigt. Es kann der Status, die Verbindungsdauer und Geschwindigkeit, Verbindungen pro pf Regel und vieles mehr angezeigt werden. pftop findet man sowohl auf FreeBSD als auch auf OpenBSD in den Ports unter sysutils/pftop:

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

Danach kann pftop als root gestartet werden:

# pftop

pftop besteht aus verschiedenen Ansichten. Nachdem pftop gestartet wurde, kann mit v in die nächste Ansicht gewechselt werden. Mit 0 - 8 kann direkt in eine der neun Ansichten gewechselt werden. pftop kann durch q wieder beendet werden.

Im Batchmode, welchen man durch die -b Option startet, wird die Anzeige einmal auf die Standardausgabe geschrieben und pftop danach beendet. Mit der -v <Ansicht> Option kann festgelegt werden, welche Ansicht angezeigt werden soll. Gültige Argumente für die Ansicht sind: default, label, long, queue, rules, size, speed, state und time.

Mehr Informationen zu pftop findet man in der Manpage pftop(8).

 Permalink
Prev Next181-190/305