BlogBlog ÜbersichtjailscriptportsoptFreeBSDLinksThermoskanne

Dateityp bestimmen

Hat man eine Datei von welcher man allerdings nicht weiss, von welchem Dateityp sie ist, so hilft einem file(1) weiter.

# file testbild 
testbild: PNG image data, 1398 x 1019, 8-bit/color RGB, non-interlaced

Es lässt sich auch der Typ von mehreren Dateien gleichzeitig bestimmen:

# file powerd.patch FreeSBIE.iso me.asc pf.pdf
powerd.patch: 'diff' output text
FreeSBIE.iso: ISO 9660 CD-ROM filesystem data 'FreeSBIE' (bootable)
plan9.iso.gz: gzip compressed data, was "plan9.iso", from Unix
me.asc: PGP armored data public key block
pf.pdf: PDF document, version 1.4

Mit file können auch Wildcards benutzt werden:

# file /home/beat*
/home/beat/FreeBSD.pdf: PDF document, version 1.4
/home/beat/FreeBSD.pps: Microsoft Office Document
/home/beat/MVI_2885.AVI: RIFF (little-endian) data, AVI, 640 x 480, 30.00 fps, video: Motion JPEG, audio: uncompressed PCM (mono, 11024 Hz)
/home/beat/tinderbox: ASCII text
/home/beat/shtest: Bourne shell script text executable
/home/beat/bsdtalk052.mp3: MP3 file with ID3 version 2.3.0 tag

Mehr Informationen zu file findet man in der Mapage file(1).

 Permalink

BSD Statistiken

Auf der Webseite http://bsdstats.org findet man Statistiken darüber, welche BSDs in welcher Version eingesetzt werden, in welchen Ländern und welche Hardware verwendet wird. Möchte man seine eigenen Rechner zur Statistik hinzufügen, so kann man auf FreeBSD den sysutils/bsdstats Port installieren.

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

Während der Installation wird man gefragt, ob man das Skript automatisch in die /etc/periodic.conf eintragen möchte und ob die verwendete Hardware auch raportiert werden soll. Wird der Eintrag in die /etc/periodic.conf gemacht, so wird das Skript automatisch am ersten jedes Monats ausgeführt.

Auf OpenBSD lädt man das Skript von http://bsdstats.org/downloads/300.statistics herunter und trägt danach folgende Zeile in die /etc/monthly.local ein:

sh /usr/local/sbin/300.statistics

Danach müssen noch folgende Variablen in der /etc/rc.conf.local gesetzt werden:

monthly_statistics_enable="YES" 
monthly_statistics_report_devices="YES"

Nun werden die Daten jeweils anfangs des Monats übermittelt.

 Permalink

Passwortliste generieren

Möchte man eine Liste mit zufälligen Passwörtern generieren, so hilft folgendes Skript weiter:

#!/bin/sh
dd if=/dev/random bs=2000 count=5 | tr -cd "[:alnum:]" | fold -w 10 | pr -7 -t | pr -t -n3

Auf OpenBSD muss /dev/urandom anstatt von /dev/random verwendet werden.

Wem die generierten Passwörter zu viele Umlaute und Ähnliches (z.B. ëÃÃò8IÎ39) besitzen, der kann "[:alnum:]" durch eine konkrete Liste mit den möglichen Zeichen ersetzen: z.B. tr -cd abcdfeghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVW0123456789!?,.:

Dieser Artikel wurde von GS eingesandt. Danke!

Comments (1)  Permalink

SSH nur mit Public Key Authentifizierung erlauben

Aus Sicherheitsgründen kann man das Einloggen per SSH nur noch mit Public-Key Authentifizierung erlauben. Dazu muss zuerst ein Schlüsselpaar erzeugt werden:

# ssh-keygen -t rsa

Es empfiehlt sich eine Passphrase für den Schlüssel zu setzen. Danach kann der Public-Key auf den Rechner geladen werden:

# cd ~/.ssh && cat id_rsa.pub | ssh <Benutzer>@<Rechner> "cat >> .ssh/authorized_keys"

Nun muss die sshd.conf angepasst werden. Diese befindet sich sowohl auf FreeBSD, als auch auf OpenBSD unter /etc/ssh/sshd_config.

# echo "PubkeyAuthentication yes" >> /etc/ssh/sshd_config
# echo "PasswordAuthentication no" >> /etc/ssh/sshd_config

Nun muss der SSH-Daemon neu gestartet werden. Auf FreeBSD wird dies wie folgt gemacht:

# /etc/rc.d/sshd restart

Auf OpenBSD kann dies so gemacht werden:

# kill -HUP `ps -ax | grep sbin/sshd | grep -v grep | awk '{print $1}'`

Nun kann man sich nur noch mit der Public-Key Authentifizierung anmelden. Sollte man allerdings seinen Private-Key verlieren, so hat man sich per SSH aus dem Rechner ausgesperrt. Es lohnt sich also eine Sicherheitskopie von seinem Private-Key (~/.ssh/id_rsa) an einem sicheren Ort aufzubewahren.

Comments (3)  Permalink

Festplatte auf Fehler überprüfen

Möchte man eine Festplatte überprüfen, zum Beispiel weil sie komische Geräusche von sich gibt oder man Einträge in den Logdateien findet, die auf ein Problem mit der Festplatte hin deuten, so helfen einem die smartmontools weiter.

Auf FreeBSD und OpenBSD findet man die smartmontools in den Ports unter sysutils/smartmontools.

Um die Festplatte zu prüfen, braucht man die device-Bezeichnung der Festplatte. Diese findet man zum Beispiel mit mount heraus. Auf FreeBSD beginnen IDE/ATA-Platten mit ad, SCSI-Platten mit da. Auf OpenBSD beginnen IDE/ATA-Platten mit wd, SCSI-Platten mit sd.

Um Informationen über die Festplatte anzuzeigen, kann die -a Option verwendet werden. Folgendes Beispiel zeigt auf OpenBSD die Informationen von wd0. Wichtig auf OpenBSD ist das c nach der Bezeichnung, welches auf die ganze Festplatte zeigt:

# smartctl -a /dev/wd0c

Um einen short-Test auf ad0 unter FreeBSD ausführen zu lassen, kann man die -t short Option verwenden. Dieser Test kann im laufenden Betrieb durchgeführt werde.

# smartctl -t short /dev/ad0
smartctl version 5.36 [i386-portbld-freebsd6.1] Copyright (C) 2002-6 Bruce Allen
Home page is http://smartmontools.sourceforge.net/

=== START OF OFFLINE IMMEDIATE AND SELF-TEST SECTION ===
Sending command: "Execute SMART Short self-test routine immediately in off-line mode".
Drive command "Execute SMART Short self-test routine immediately in off-line mode" successful.
Testing has begun.
Please wait 2 minutes for test to complete.
Test will complete after Sat Oct 14 14:38:43 2006

Use smartctl -X to abort test.

Dieser Test geht nur einige Minuten und danach kann das Ergebnis wie folgt betrachtet werden:

# smartctl -l selftest /dev/ad0
smartctl version 5.36 [i386-portbld-freebsd6.1] Copyright (C) 2002-6 Bruce Allen
Home page is http://smartmontools.sourceforge.net/

=== START OF READ SMART DATA SECTION ===
SMART Self-test log structure revision number 1
Num Test_Description Status Remaining LifeTime(hours) LBA_of_first_error
# 1 Short offline Completed without error 00% 4090 -

Dieser Test verlief ohne Fehler, danach kann ein ausführlicherer Test gestartet werden. Dieser dauer allerdings einiges länger, lässt sich aber auch im laufenden Betrieb durchführen:

# smartctl -t long /dev/ad0
smartctl version 5.36 [i386-portbld-freebsd6.1] Copyright (C) 2002-6 Bruce Allen
Home page is http://smartmontools.sourceforge.net/

=== START OF OFFLINE IMMEDIATE AND SELF-TEST SECTION ===
Sending command: "Execute SMART Extended self-test routine immediately in off-line mode".
Drive command "Execute SMART Extended self-test routine immediately in off-line mode" successful.
Testing has begun.
Please wait 55 minutes for test to complete.
Test will complete after Sat Oct 14 15:44:09 2006

Use smartctl -X to abort test.

Ist der Test beendet, kann das Ergebnis gleich wie beim short-Test betrachtet werden.

# smartctl -l selftest /dev/ad0
smartctl version 5.36 [i386-portbld-freebsd6.1] Copyright (C) 2002-6 Bruce Allen
Home page is http://smartmontools.sourceforge.net/

=== START OF READ SMART DATA SECTION ===
SMART Self-test log structure revision number 1
Num Test_Description Status Remaining LifeTime(hours) LBA_of_first_error
# 1 Extended offline Completed without error 00% 4091 -
# 2 Short offline Completed without error 00% 4090 -

Natürlich gibt es keine Garantie, wenn mit smartctl(8) keine Fehler gefunden werden, dass mit der Festplatte alles in Ordnung ist. Findet man allerdings Fehler sollte man sich langsam gedanken über eine neue Platte machen.

 Permalink

Eine TCP-Verbindung trennen

Manchmal möchte man aus gewissen Gründen eine TCP-Verbindung trennen, zum Beispiel weil eine SSH oder FTP-Sitzung nicht sauber beendet worden ist. Dazu muss man zuerst herausfinden, welche Verbindung man kappen möchte. Dies findet man mit fstat auf OpenBSD oder sockstat -c auf FreeBSD heraus. Um die Verbindung zu beenden, braucht man die IP-Adresse und den TCP-Port vom Absender und dem Zielrechner.

Folgendermassen wird dann mit tcpdrop(8) eine Verbindung getrennt:

# tcpdrop <Lokale IP-Adresse> <Lokaler TCP-Port> <IP-Adresse des Benutzers> <TCP-Port>

Möchte man nun auf FreeBSD die SSH-Verbindung vom test-Benutzer trennen, muss man zuerst die benötigten Daten herausfinden und kann danach die Verbindung trennen:

# sockstat -c | grep sshd
test sshd 51960 3 tcp4 10.0.0.2:22 10.0.0.155:52711
# tcpdrop 10.0.0.2 22 10.0.0.155 52711

Auf OpenBSD findet man die benötigten Daten wie folgt:

# fstat | grep 'sshd.*internet.*<--'
test sshd 19075 5* internet stream tcp 0xd694bc84 10.0.0.1:22 <-- 10.0.0.155:53325

tcpdrop befindet sich sowohl in FreeBSD als auch in OpenBSD im Basissystem.

 Permalink

Prozesse als Baum darstellen

Möchte man darstellen, welcher Prozess von welchem gestartet wurde, so lässt sich dies mit pstree(1) tun.

pstree findet man sowohl auf FreeBSD als auch auf OpenBSD in den Ports unter sysutils/pstree.

Ruft man pstree ohne Optionen auf, so wird ein Baum aller für den Benutzer sichtbaren Prozesse gebildet:

# pstree
-+= 00000 root [swapper]
|-+= 00001 root /sbin/init --
| |--= 00166 root adjkerntz -i
| |--= 00248 root /usr/sbin/wpa_supplicant -B -q -i ath0 -c /etc/wpa_supplican
| |--= 00262 _dhcp dhclient: ath0 (dhclient)
| |--= 00368 root /sbin/devd
| |--= 00413 root /usr/sbin/syslogd -ss
| |--= 00438 root /usr/sbin/rpcbind
| |--= 00518 root /usr/sbin/powerd -a max -b min
| |--= 00536 root /usr/sbin/usbd
| |--= 00580 root /usr/sbin/sshd
| |--= 00587 root /usr/sbin/cron -s
| |--= 00625 root /usr/sbin/moused -p /dev/psm0 -t auto
| |-+- 00676 root /usr/X11R6/bin/xdm -nodaemon ttyv8
| | |--= 00679 root /usr/X11R6/bin/X -auth /usr/X11R6/lib/X11/xdm/authdir/auth
| | \-+= 00680 root xdm: :0 (xdm)
| | \-+= 00712 beat fluxbox
| | |--- 00715 beat gkrellm
| | |--- 00716 beat xscreensaver
| | |--- 00718 beat oneko -bsd
| | |-+= 00736 beat /bin/sh -c thunderbird
| | | \-+- 00737 beat /bin/sh /usr/X11R6/bin/thunderbird
...

Mit der -u <Benutzer> Option werden nur Zweige dargestellt, die auch Prozesse beinhalten, die unter dem angegebenen Benutzer laufen.

Mit der -U Option werden Zweige, die nur root-Prozesse beinhalten, nicht angezeigt

Wem die Darstellung von pstree nicht gefällt, sollte mal die -g 2 Option benützen.

Möchte man nur einen Zweig darstellen, der einen gewissen Prozess beinhaltet, so kann man entweder -s <Prozessname> oder -p <Prozess-ID> verwenden.

Alle Optionen erhält man mit pstree -h.

Comments (2)  Permalink

Grösse eines Verzeichnisinhaltes bestimmen

Die Grösse eines Verzeichnisinhaltes lässt sich mit du(1) bestimmen. Mit der -c Option wird das Total aller Dateien angezeigt, mit der -h Option werden die Grössen in Kilo-, Mega- oder Gigabyte angezeigt. Beispiel:

# ls -l
total 2869856
-rw-r--r-- 1 beat users 529784832 7 Mai 20:50 6.1-RELEASE-i386-disc1.iso
-rw-r--r-- 1 beat users 548517888 5 Jun 15:25 7.0-CURRENT-200606-i386-disc1.iso
-rw-r--r-- 1 beat users 721241069 29 Sep 2005 KNOPPIX_V4.0.2CD-2005-09-23-DE.iso.gz
-rw-r--r-- 1 beat users 208437248 12 Feb 16:45 frenzy_v03_release.iso
-rw-r--r-- 1 beat users 209682432 9 Feb 2006 i386cd-3.0.iso
-rw-r--r-- 1 beat users 703017311 5 Sep 2005 install-x86-universal-2005.1.iso.gz
-rw-r--r-- 1 beat users 16425313 10 Jul 13:28 reactos0.3.0-RC1-live.zip
# du -ch
2,7G .
2,7G total

Möchte man nun in einem Verzeichnis herausfinden, welche Dateien am meisten Speicherplatz benötigen, so kann man du mit sort(1) kombinieren:

# du * | sort -n

Nun wird der Verzeichnisinhalt so sortiert, dass die grossen Dateien am Ende stehen:

# du  * | sort -n
16064 reactos0.3.0-RC1-live.zip
203680 frenzy_v03_release.iso
204896 i386cd-3.0.iso
517648 6.1-RELEASE-i386-disc1.iso
535952 7.0-CURRENT-200606-i386-disc1.iso
686896 install-x86-universal-2005.1.iso.gz
704720 KNOPPIX_V4.0.2CD-2005-09-23-DE.iso.gz

du(1) und sort(1) stehen beide auf FreeBSD und OpenBSD im Basissystem zur Verfügung.

 Permalink

Herausfinden welche Benutzer angemeldet sind

Es gibt verschiedene Möglichkeiten herauszufinden, welche Benutzer auf einem Rechner angemeldet sind.

Mit users(1) werden die angemeldeten Benutzer in alphabetischer Reihenfolge angezeigt:

# users
beat test

Mit who(1) werden zusätzlich noch der tty-Name, die Zeit des Logins und gegebenenfalls der Name des Hosts, von dem der Benutzer aus angemeldet ist, angezeigt:

# who
test ttyv0 11 Aug 19:18
beat ttyp1 11 Aug 16:42 (:0.0)
beat ttyp3 11 Aug 17:59 (:0.0)

Noch mehr Informationen erhält man mit w(1). Hier sieht man zusätzliche Informationen über das System, wie die Uptime und den System-Load. Zusätzlich wird bei allen Benutzern angezeigt, wie lange sie keine Eingabe mehr getätigt haben und welcher Befehl aktuell ausgeführt wird:

# w
7:38pm up 4:05, 3 users, load averages: 0,03 0,12 0,14
USER TTY FROM LOGIN@ IDLE WHAT
test v0 - 7:18pm 19 -
beat p1 :0.0 4:42pm 2 more
beat p3 :0.0 5:59pm - w

Möchte man herausfinden, welche Benutzer sich in letzter Zeit angemeldet haben, so kann man dies mit last(1) nachschauen:

# last
beat ttyp5 localhost Fr 11 Aug 19:50 - 19:51 (00:01)
test ttyv0 Fr 11 Aug 19:18 still logged in
beat :0 Fr 11 Aug 15:34 still logged in
reboot ~ Fr 11 Aug 15:33
shutdown ~ Fr 11 Aug 14:05
beat :0 Fr 11 Aug 14:00 - shutdown (00:05)
reboot ~ Fr 11 Aug 14:00
shutdown ~ Fr 11 Aug 12:43

users, who, w und last sind sowohl auf FreeBSD als auch auf OpenBSD im Basissystem vorhanden.

 Permalink

Komprimierte Textdateien lesen

Möchte man eine mit gzip oder bzip2 komprimierte Datei anschauen, so muss man diese nicht zuerst mit gunzip oder bunzip2 entpacken, sondern kann diese direkt mit bzcat(1) oder gzcat(1) auslesen:

# echo Dies ist eine Testdatei > test
# gzip test
# gzcat test.gz
Dies ist eine Testdatei

# echo Dies ist eine andere Testdatei > test
# bzip2 test
# bzcat test.bz2
Dies ist eine andere Testdatei

Mit bzip2 komprimierte Dateien können auch direkt mit Hilfe von bzgrep gegrept werden.

bzcat, gzcat und bzgrep befinden sich sowohl auf FreeBSD als auch auf OpenBSD im Basissystem.

Comments (2)  Permalink
Prev Next21-30/44