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 Settings
  • timedatectl set-timezone Europe/Berlin zum 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