www.kitesurfer1404.de
www.aldick.org

Linux-Cheat-Sheet

Ein kleines Nachschlagewerk für die Linux-Bedienung. Einiges scheint trivial, andere Sachen sind einfach genial, weil genial einfach.

Dateien, Dateisystem und Datenträger

Festplatte verschlüsseln

sudo cryptsetup -c aes-cbc-essiv:sha256 -y -s 256 luksFormat /dev/sdc1
cryptsetup luksOpen /dev/sdc1 crypto
mkfs.ext3 /dev/mapper/crypto
mount /dev/mapper/crypto /mnt/media 

CD-Image anlegen

cat /dev/cdrom >cd.img
dd if=/dev/cdrom of=cd.img

Dateien vergleichen

cat /dev/cdrom | cmp - datei

In Dateien suchen

Rekursiv in Dateien suchen, beginnend ab "suchort", grep mit -i ignoriert Groß-/Kleinschreibung.

find suchort | xargs grep --color -n suchbegriff

Verzeichnisse vergleichen

Liefert eine Liste mit allen Dateien, die nur in einem der Verzeichnisse vorhanden sind

find /dir1 >>list1
find /dir2 >>list2
cat list1 list2 | sort | uniq -u >>vergleich

Neue Rechte für Dateien und Ordner

find . -type f -print0 | xargs -0 chmod 664
find . -type d -print0 | xargs -0 chmod 775

Pattern in Datei suchen und folgende x Zeilen löschen

sed '/SUCHTEXT/,+3d' datei.txt

Systemeinstellungen

Schriftarten installieren

.fonts im home-Verzeichnis anlegen und dort alle .ttf ablegen

Zeichenkodierung anpassen

dpkg-reconfigure locales

Runlevel bei GRUB ändern

kernel /vmlinuz-2.6.xx ro root=LABEL=/ init 3

Format des Uhr-Applets in GNOME anpassen

gconf-editor
apps -> panel -> applets -> clock_screen0 -> prefs
custom-format z.b. %d.%m. %H:%M:%S  (wie php strftime)
format = custom

Archive

rar trotz CRC-Fehler entpacken

rar e -kb archiv.rar

tar

entpacken (ohne/mit Komprimierung)

tar xvf paket.tar
tar xvjf paket.tar.bz2

packen (ohne/mit Komprimierung)

tar cvf paket.tar datei1 datei2
tar cvjf paket.tar.bz2 datei1 datei2

Netzwerkfreigaben

Remote-Ressource lokal über ssh mounten

sshfs <remote_user>@<remote_host>:/<remote_dir> /mnt/remote

Windows Netzwerkfreigabe mounten

mount -t smbfs -o username:name,password=passwort //server/freigabe /mnt/windoofs

SSH und Netzwerk

Proxy über ssh / Portforwarding

ssh -L 8080:ziel:80 user@gateway

Login mit Key

user@host# ssh-keygen -t rsa
user@host# cat ~/.ssh/id_rsa.pub | 
      ssh user@server 'umask 077; cat >>.ssh/authorized_keys'

chroot für SSH (nur SFTP Zugriff)

In der /etc/ssh/sshd_config muss der Parameter bei Subsystem sftp auf internal-sftp umgestellt werden:

Subsystem       sftp    internal-sftp

Danach kann man Benutzern oder Benutzergruppen ein Chroot-Verzeichnis zuweisen. Dies geht am besten mit der Match-Direktive von sshd:

Match Group sftpuser
   ChrootDirectory /home
   ForceCommand internal-sftp
   AllowTCPForwarding no

Die User müssen natürlich Mitglied in der Gruppe sftpuser sein.

Damit jeder den Pfad zu seinem home-Verzeichnis als /home/user auflösen kann, hilft dieser symbolische Link:

cd /home
ln -s . home

/etc/network/interfaces

# The loopback interface
auto lo
iface lo inet loopback

# fest
auto eth0
iface eth0 inet static
       address 192.168.0.23
       netmask 255.255.255.0
       network 192.168.0.0
       broadcast 192.168.0.255
       gateway 192.168.0.1

# dynamisch
auto eth1
iface eth1 inet dhcp

OpenVPN

RTFM http://openvpn.net/howto.html

> Note: Cannot open TUN/TAP dev /dev/net/tun: No such file or directory
> (errno=2)
mkdir /dev/net
mknod /dev/net/tun c 10 200
chmod 750 /dev/net
chmod 660 /dev/net/tun

(maybe you want 755 and 666)

Diese Sachen ggf. auf Serverseite in die /etc/init.d/openvpn eintragen.

Dateiübertragung übers Netzwerk

Backup einer Partition mit Verschlüsselung übers Netzwerk

dd if=/dev/hda2 | gzip -9 | ssh -c blowfish user@server "cat - > /foo/bar/hda2.gz"

Backup einer Partition übers Netzwerk ohne ssh

root@source# dd if=/dev/hda2 | gzip -9 | nc -l -p 9999
root@target# nc <source-ip> 9999 > hda2.gz

Backup eines Verzeichnisses über ssh

tar cf - <localdir> | ssh -C <remotehost> "cd <remotedir> && tar xpf -"

Datei-Übertragung übers Netzwerk

Komprimierung mit der Option j bei tar

user@quelle# tar c ordner | pv | netcat -l -p 12345
user@ziel# netcat 192.168.0.123 12345 | pv | tar x

Audio, Video und Grafik

Verlinkte MP3-Dateien auf Websites herunterladen

wget -r -l1 -N -H -A.mp3 -nd -erobots=off http://blog.example.com/page/{1..23}/

Sound aus Video als .mp3 speichern

Geht auch für .flv ;-)

mplayer -vo null -ao pcm:file=dump.wav video.mpg
lame -h -b 160 dump.wav song.mp3

Bei MP3-Audiostreams in Videos

ffmpeg -i input.avi -acodec copy dump.mp3

Tonspur aus Video entfernen

ffmpeg -i InputFile.mpg -an -b 4800k OutputFile.avi

Tonspur in Video einbauen

ffmpeg -i video.avi -i audio.mp3 -map 0:0 -map 1:0 -vcodec copy 
	-acodec mp2 -async 50 -ab 128k -b 4800k result.avi

ID3-Tags aus Dateinamen setzen

Setzt die ID3-Tags aus Dateien des Musters 00 Artist - Title.mp3 und fügt einen einheitlichen Alben-Namen hinzu. (Zeilenumbrüche entfernen!)

ls 
  | perl -ne 'chomp; /(dd) (.*) - (.*).mp3/; 
    print "id3 -t "$3""$_"n"; print "id3 -a "$2" "$_"n"; print "id3 -T $1 "$_"n";'
  | bash

find -type f -print0 | xargs -0 id3 -A "Album XY"

Video in animiertes .gif umwandeln

Einzelbilder erstellen

mplayer -vo jpeg:quality=100 video.mpg

Skript zum Batch-Resize der Bilder

mkdir crop
mkdir small
for f in *.jpg
do 
convert -crop 300x175+157+292 "$f" crop/"$f"
convert -resize 33% crop/"$f" small/"$f"
done

In GIMP alle Bilder als Ebene einfügen und das Timing im Ebenenamen angeben

123.jpg (replace)(30ms)

Vorschau der Animation

Filter -> Animation

Als .gif speichern

Webserver

SSL-Key-Kram

openssl genrsa -rand /dev/urandom:/dev/random -out 123.key 1024
openssl req -new -key 123.key -out certreq.pem

certreq.pem bei cacert absegnen lassen und als 123.cert speichern

cp 123.cert /usr/local/certificates/

MySQL

MySQL-Passwort nach Installation setzen

mysqladmin -u username -p password neuespasswort

oder

mysql -u root
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('neuespasswort');

MySQL-Passwort vergessen?

/etc/init.d/mysql stop
mysqld --user=mysql --skip-networking --skip-grant-tables --datadir=/var/lib/mysql &
su - mysql -c "mysqladmin --user root password 'NEUESPASSWORT'"
/etc/init.d/mysql stop
/etc/init.d/mysql start

MySQL-Dump

mysqldump -u USERNAME -p database > database_dump.sql
mysql -p -u USERNAME database < database_dump.sql

LaTex und PDF

Schwarze Linien unter Bildern bei latex2html entfernen

Die Option "-Ppdf" für "dvips" in der latex2html Konfigurationsdatei entfernen

/usr/share/latex2html/l2hconf.pm

$DVIPSOPT = ;

PDF-Seiten splitten und zusammenführen

Ausgangssituation: Ein PDF-Dokument mit A4-Seiten im Querformat mit je zwei A5-Seiten (links/rechts, fortlaufend) darauf. Ziel: Ein PDF-Dokument mit A5-Seiten im Hochformat und fortlaufender Seitenzahl.

Tools: pdfnup, pdftk. Die "1404" im letzten Befehl gegen die Seitenzahl der Dokumente austauschen.

pdfnup --outfile odd.pdf --trim '0cm 0cm 14.85cm 0cm' --scale 1 --nup 1x1 input.pdf
pdfnup --outfile even.pdf --trim '14.85cm 0cm 0cm 0cm' --scale 1 --nup 1x1 input.pdf
pdftk O=odd.pdf E=even.pdf cat $(i=1; while [ $i -le 1404 ]; do echo O$i E$i; i=$(($i+1)); done) output output.pdf

PGP / GPG

Alle Keys holen, die einen bestimmten Schlüssel signiert haben.

gpg --list-sigs DEADBEEF | grep -o -P "[0-9A-F]{8}" | xargs gpg --recv-keys

Tools

Tools zur Datensicherung und -Wiederherstellung