Linux Schnickschnack
SSH-Key erstellen
Aktuell 12/2020: ssh-keygen -t ed25519 -C "your_email@example.com"
Passworthashes erstellen (z.B. für Ansible)
mkpasswd --method=sha-512, Passwort dann interaktiv mitgeben
User management
Shell ändern
chsh -s /bin/bash morph
Homedir ändern
usermod -m -d /media/backup backupbot
User anlegen mit Homedir
z.B. für FTP / Kunde, der nur in sein Webroot darf
useradd -s /bin/false -d /var/www/kundenname.com/ kundenname
User Homedir ändern
usermod -m -d /neues/homedir username - -m = --move-home
ACHTUNG! Shell ist danach reset!
user löschen
deluser USER && rm -rf /home/USER
ODER, bei gelegenheit testen: deluser -f USER
Unprivilegierten Systemuser anlegen
z.B. so: adduser --system --group --no-create-home --shell /bin/false nats <- cool: --group legt neue Group gleichen Namens an. Ohne es kommen User mit --system nach nogroup.
SSH / SCP
Pfade mit Spaces drin müssen doppelt escapet werden, anders gehts nicht! Also scp user@example.com:"'web/tmp/Master File 18 10 13.xls'" .. Laut Artikel sollte auch scp user@example.com:"web/tmp/Master\ File\ 18\ 10\ 13.xls" . funktionieren, aber das schien bei mir nicht so zu sein.
https://stackoverflow.com/questions/19858176/how-to-escape-spaces-in-path-during-scp-copy-in-linux
Authentication ohne den Key zu fragen
ssh -o PubkeyAuthentication=no user@host.org
easiest keygen
ssh-keygen -t rsa -b 4096 -C "comment here"
port forwarding (zB um IPMI über serial zu öffnen)
ssh -L 9998:10.0.0.26:443 serial.example.net, dann im browser localhost:9998 öffnen
key fingerprint anzeigen
neues sha256 Format: ssh-keygen -lf ~/.ssh/keyfile.pub
md5 Format, wie zB auf Github: -E md5 hinzufügen
swapfile erstellen
- Leere Datei machen:
dd if=/dev/zero of=/swapfile bs=1M count=2048 - Rechte richten:
chmod 600 /swapfile - Swapfile machen:
mkswap /swapfile - Swap aktivieren:
swapon /swapfile - In fstab eintragen:
echo "/swapfile none swap sw 0 0" >> /etc/fstab
timezones
timedatectlzum anzeigen der aktuellen Settingstimedatectl set-timezone Europe/Berlinzum setzen- So oder so:
sudo apt install ntp
dig
Authoritativen Nameserver anzeigen lassen: dig -t ns example.com
Unixtime / epoch schnell konvertieren
date -d @TIMESTAMP
work@panzer:~$ date -d @1547724642
Do 17. Jan 12:30:42 CET 2019
IPv6 disablen
Unter Ubuntu: net.ipv6.conf.all.disable_ipv6 = 1 in /etc/sysctl.d/01-disable-ipv6.conf
Custom Bash prompt
"$PS1" Variable verändern - die beinhaltet den Shell Prompt. Beispiel: PS1="\033[1;33mTEST $PS1" PS1="\033[0;31mPROD $PS1"
Kernel deinstallieren / /boot voll
dpkg -l | grep 'linux-image*' machen und purgen, was da drinsteht. Außer natürlich den aktuellen (uname -r).
Crontab bearbeiten für andere User
crontab -eu zimbra
Verzeichnisbaum auf Veränderungen prüfen
tar -cf - somedir | md5sum
smbnetfs
- User-space filesystem for SMB/NMB (Windows) network servers and shares
Usage: Verzeichnis anlegen -> smbnetfs $verzeichnis -> alles wird gemountet
Configfile: ~/.smb/smbnetfs.conf
Remmina
VNC Verbindungen mit Apple macOS: Color depth auf mindestens "True color (15 bit)" stellen, sonst schlägt die Verbindung kommentarlos fehl! Argh wtf.
root-Mail empfangen (bspw. Cronjobs)
Eigene Mailadresse in /etc/aliases hinter root: eintragen
Vim als default Editor (zB crontabs)
echo 'EDITOR=vim' >> ~/.bash_profile
Dateien zu UTF-8 konvertieren
[morph@void kb]$ file -i grafana.md
grafana.md: text/plain; charset=iso-8859-1
[morph@void kb]$ iconv -f ISO-8859-1 -t UTF-8 grafana.md -o grafana.md
Locale fixen auf dem Server
Zeigt sich typischerweise so:
morph@web01:~$ sudo dpkg-reconfigure mariadb-server
[sudo] password for morph:
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = "en_US:en",
LC_ALL = (unset),
LC_PAPER = "de_DE.UTF-8",
LC_ADDRESS = "de_DE.UTF-8",
LC_MONETARY = "de_DE.UTF-8",
LC_NUMERIC = "de_DE.UTF-8",
LC_TELEPHONE = "de_DE.UTF-8",
LC_IDENTIFICATION = "de_DE.UTF-8",
LC_MEASUREMENT = "de_DE.UTF-8",
LC_TIME = "de_DE.UTF-8",
LC_NAME = "de_DE.UTF-8",
LANG = "en_US.UTF-8"
are supported and installed on your system.
perl: warning: Falling back to a fallback locale ("en_US.UTF-8").
locale: Cannot set LC_ALL to default locale: No such file or directory
morph@web01:~$ locale
locale: Cannot set LC_ALL to default locale: No such file or directory
LANG=en_US.UTF-8
LANGUAGE=en_US:en
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC=de_DE.UTF-8
LC_TIME=de_DE.UTF-8
LC_COLLATE="en_US.UTF-8"
LC_MONETARY=de_DE.UTF-8
LC_MESSAGES="en_US.UTF-8"
LC_PAPER=de_DE.UTF-8
LC_NAME=de_DE.UTF-8
LC_ADDRESS=de_DE.UTF-8
LC_TELEPHONE=de_DE.UTF-8
LC_MEASUREMENT=de_DE.UTF-8
LC_IDENTIFICATION=de_DE.UTF-8
LC_ALL=
-> einfach in /etc/default/locale LC_ALL="en_US.UTF-8" hinzufügen und rebooten.
Andere Quellen empfehlen dpkg-reconfigure locale, kann man bei Gelegenheit mal ausprobieren... https://askubuntu.com/questions/162391/how-do-i-fix-my-locale-issue#227513
dd mit gzip in der Mitte
oot@rescue ~ # dd if=/dev/sda1 status=progress | gzip > /mnt/web03-forensik.img.gz
20344261120 bytes (20 GB, 19 GiB) copied, 534 s, 38.1 MB/s
39747551+0 records in
39747551+0 records out
20350746112 bytes (20 GB, 19 GiB) copied, 534.62 s, 38.1 MB/s
root@rescue ~ # ls -la /mnt/
total 2.7G
drwxr-xr-x 3 root root 4.0K Jun 16 12:26 .
drwxr-xr-x 1 root root 140 Jun 16 12:20 ..
drwx------ 2 root root 16K Jun 16 12:19 lost+found
-rw-r--r-- 1 root root 2.7G Jun 16 12:35 web03-forensik.img.gz
neueres Beispiel vom Thomas Krenn Wiki
erstellen:
dd if=/dev/hda1 | gzip > /tmp/image.gz
zurückspielen:
gunzip -c /tmp/image.gz | dd of=/dev/hda1
Bei bedarf mit pv dazwischen zum messen
dd (mit gzip) über SSH
dd if=/dev/vg0/blabla status=progress | gzip -1 | ssh -p 12345 user@host dd of=/backup/dings.img
Partition table neu einlesen
Entweder partprobe /dev/sdX
oder hdparm -z /dev/sda
ach so oder des blockdev --rereadpt /dev/sdX
https://serverfault.com/questions/36038/reread-partition-table-without-rebooting
rausfinden, welche Route ein Request an eine bestimme IP nehmen würde
ip route get to 8.8.8.8