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
- foremost
- gddrescue
- testdisk
- sleuthkit
- autopsy