crontab kann per Bash-Script ausgeführt werden. In diesem Beispiel erstellen wir uns einen crontab, der jeweils um 23:30 Uhr auf unserem Rocket.Chat Server ein Backup erstellt.
# nano /etc/crontab
/etc/crontab zeigt beim ersten Aufruf die Tutorialseite an. Tippe hier die systemweiten crontab ein.
# Starte Backup um 23:30 Uhr
30 23 * * * root bash /root/backup_chat.sh
# lösche Backups > 3 Tage. Überprüfe jeweils um 23:45 Uhr.
45 23 * * * root find /var/snap/rocketchat-server/common/backup/*.* -mtime +3 -exec rm {} \;
#
dieser crontab ruft somit um 23:30 Uhr das backup-Script backup_chat.sh auf. Das Script liegt hier unter /root/backup_chat.sh #!/bin/bash
service snap.rocketchat-server.rocketchat-server stop
snap run rocketchat-server.backupdb
service snap.rocketchat-server.rocketchat-server start
das Script kann im Voraus noch geprüft werden:
# bash /root/backup_chat.sh
[*] Creating backup file...
[+] A backup of your data can be found at /var/snap/rocketchat-server/common/backup/rocketchat_backup_20231113.0944.tar.gz
grep und find sind ideale Werkzeuge um nach einer Datei oder einem bestimmten Muster zu suchen. Typo3 schreibt z. B. folgende Konfiguration für die php.ini vor:
falls wir jetzt keinen Plan haben, wo wir diese Einstellungen finden, hilft uns grep und find. Mittels grep finden wir das Suchmuster in der Datei. find findet uns die Datei php.ini, falls wir nicht wissen, wo diese abgelegt ist.
# grep -r memory_limit * /etc
/etc/php/8.2/cli/php.ini:memory_limit = -1
/etc/php/8.2/apache2/php.ini:memory_limit = 512M
oder
Mit testdisk kannst du bereits gelöschte Dateien wiederherstellen. Testdisk ist ein Kommando-Zeilenprogramm und wird mit den Pfeiltasten und ENTER gesteuert.
# apt install testdisk
# testdisk
01. Starte testdisk. Beim ersten Start wird ein log-File angelegt.
02. Wähle das betroffene Laufwerk:
03. wähle den Partitionstyp aus. In der Regel wählt testdisk automatisch den korrekten Eintrag. Falls du keine exotischen Partitionstypen auf der Platte hast, wähle Intel/PC Partition (für ntfs, ext4, fat32 u. v. m)
04. gehe zu den erweiterten Einstellungen (Advanced)
05. da in diesem Beispiel nur eine Partition vorhanden ist, fällt die Auswahl leicht und wähle UNDELETE:
06. wähle SHIFT + : die einzelnen Dateien, welche du wiederherstellen möchtest und bestätige mit SHIFT + C
Gesteuert wird mit den Pfeiltasten oder pg up bzw. pg down
07. wähle hier den Zielordner. Der Zielordner muss natürlich genügend freien Speicher haben:
08. starte die Wiederherstellung mittels SHIFT + C
Da wir hier mittels root arbeiten, sind die wiederhergestellten Dateien auch root zugeteilt. Nach der Wiederherstellung kannst du die Berechtigung mittels chown ändern:
Normalerweise erstellt der Befehl ssh-keygen einen Schlüssel id_rsa unter dem Home Verzeichnis. Was aber, wenn wir mehrere SSH-Keys verwenden wollen? Den SSH-Key erstellen wir hier für einen normalen Benutzer und niemals für root!
Server IP: 123.45.678.90 Benutzer: USER SSH-Key: id_rsa_local
auf dem Server (hier die IP 123.45.678.90)
Erstelle mittels ssh-keygen den Schlüssel (hier id_rsa_local) und kopiere diesen mittels cat nach ~/.ssh/authorized_keys
$ ssh-keygen -m PEM -t rsa -b 4096
Generating public/private rsa key pair.
Enter file in which to save the key (/home/USER/.ssh/id_rsa): /home/USER/.ssh/id_rsa_local
(...)
(...)
(...)
$ cat ~/.ssh/id_rsa_local.pub | ssh USER@123.45.678.90 "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
The authenticity of host '123.45.678.90 (123.45.678.90)' can't be established.
ED25519 key fingerprint is SHA256:bL8trr2HdSSw777CXIanpYeXvo1826v1Kj78UMa5NtE.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '123.45.678.90' (ED25519) to the list of known hosts.
USER@123.45.678.90's password: DEIN USER PASSWORT
Nun lassen wir uns den SSH-Key anzeigen und kopieren diesen Schlüssel auf unseren Client-PC:
$ less ~/id_rsa_local
diesen Key kopierst du nun vom Server auf den Client-PC unter ~/.ssh
Client PC
auf dem Client PC benötigen wir den ssh-key und ein config-File. Der ssh-key (hier id_rsa_local) muss die Berechtigung 600 haben. Diese Berechtigung ist per root zu setzen:
# chmod 600 /home/BENUTZER/.ssh/id_rsa_local
Erstelle unter ~.ssh ein config File mit:
$ nano ~/.ssh/config
# ssh configuration file
# BEISPIEL / EXAMPLE
# HostName = IP Adresse des Servers, z.B. 123.45.67.890
Host local
HostName 123.45.678.90
Port 123456
User USER
IdentityFile ~/.ssh/id_rsa
Host mailserver
HostName 25.10.200.4
Port 22
User dana
IdentityFile ~/.ssh/id_rsa_mailserver
Host backupserver
HostName 9.12.200.5
Port 22
User annalena
IdentityFile ~/.ssh/id_rsa_backupserver
Auf den Client-PC benötigen wir ein config-File unter ~/.ssh/config und natürlich den SSH-Schlüssel. Hier id_rsa_local
Nun reicht die Übergabe des Host nach ssh:
$ ssh local
root-Login und Passwort verbieten
Vorsicht! Mach dies nur, wenn mit der Anmeldung SSH-Key wirklich alles klappt. An sonst kannst du dich vom System aussperren. Editiere dazu die /etc/ssh/sshd_config
# nano /etc/ssh/sshd_config
Setze nun PasswordAuthentication und PermitRootLogin auf den Wert no PermitRootLogin no
PasswordAuthentication no
starte den Dienst neu:
# systemctl restart sshd
weitere Verschlüsselungen
Erstellen wir den Schlüssel mittels ED25519 oder ECDSA ist das Vorgehen analog! Der öffentliche Schlüssel (z.B. id_ecdsa.pub) muss nach ~/.ssh/known_hosts kopiert werden, während der geheime Schlüssel (z.B. id_ecdsa) auf dem Client-PC landen muss.
Mittels crontab lassen sich auf deinem Server Prozesse automatisieren. Angenommen, ich möchte jeden Tag um 00:10 Uhr die gesamte Datenbank sichern.
Starte crontab:
$ crontab -e
Im Editorfenster geben wir nun den gewünschten crontab ein: # sichere die Datenbank alle Tage um 00:10. Überschreibe das aktuelle File jeweils:
10 0 * * * /usr/bin/mysqldump --all-databases --single-transaction --quick --lock-tables=false -r /opt/dbfull.sql
crontab sorgt dafür, dass die jeweiligen Files zum angegebenen Zeitpunkt auf dem Server liegen.
root darf alles, wirklich alles!
Dabei spielt es eine wesentliche Rolle, ob wir crontab als normalen Benutzer oder als root ausführen. root darf alles! Editiere in diesem Fall die /etc/crontab – hier kannst du den Benutzer, welcher den Befehl ausführen soll auch gleich mitgeben. Doch Vorsicht! root kann wirklich alles. Du kannst hier auf Kommando auch dein gesamtes System zerstören!
# crontab -e
Zeitstempel
Geben wir der Zielatei keinen Zeitstempel mit, überschreibt crontab das jeweilige File. Einen Zeitstempel geben wir mittels date an:
example_$(date +"\%Y-\%m-\%d_\%H-\%M").sql
wird z. B. zu: example_2004-03-05_09-58.sql
In diesem Beispiel entspricht dies dem 05. März 2004 um 09:58 Uhr. (YYYY/mm/DD/HH/MM)
Zeit bestimmen (Beispiele)
# Zeitbeispiele
.---------------- Minuten (0 - 59)
| .------------- Stunden (0 - 23)
| | .---------- Tag im Monat (1 - 31)
| | | .------- Monat (1 - 12) oder jan,feb,mar,apr ...
| | | | .---- Tag der Woche (0 - 6) (Sonntag=0 oder 7) oder mon,tue,wed,thu,fri,sat
| | | | |
* * * * *
# sendet jeden Tag um 12:00 Uhr einen ping an example.com
0 12 * * * ping -c1 example.com
# sendet jeden Montag, Mittwoch und Freitag um 04:05 Uhr einen ping an example.com
5 4 * * mon,wed,fri ping -c1 example.com
# sendet alle 20 Minuten einen ping an example.com
*/20 * * * * ping -c1 example.com
Um einen USB-Stick zu verschlüsseln, reichen die Bordmittel von Debian bei weitem aus. Hier erstellen wir einen leeren, verschlüsselten USB-Stick unter: Example/Beispiel => /dev/sdb
Hinweis: der Stick ist nur auf einem Linuxsystem verwendbar. Windows 10 oder Windows 11 erkennt das Dateisystem ext4 nicht und verlangt eine Formatierung, sobald der Stick eingesteckt wird.
Installiere das Paket cryptsetup (falls nicht schon installiert und geladen) und lade das Modul:
# apt install cryptsetup
# modprobe dm_crypt
möchtes du vorab sicher gehen, kann der Stick vorab mit zufälligen Daten überschriben werden. Vorsicht: das kann durchaus ein paar Stunden dauern, falls der Stick > 128 GB hat! Für meinen 32 GB Stick dauerte es 1200 Sekunden oder rund 20 Minuten.
# dd bs=4K if=/dev/urandom of=/dev/sdb1
01. mittels fdisk formatieren wir unseren Stick. Vorsicht! Überprufe lieber 3x ob du die richtige Partition/Laufwerk angibst. Gibst du hier irrtümlich die Windows-Partition an, führt dies unweigerlich zu einem Datenverlust. Partitionen können mittels blkid angezeigt werden:
# blkid
# fdisk /dev/sdb
02. erstelle mittels cryptsetup die verschlüsselte Partition und vergib ein sicheres Passwort:
# cryptsetup -yvh sha256 -c aes-xts-plain -s 256 luksFormat /dev/sdb1
WARNUNG!
========
Hiermit werden die Daten auf »/dev/sdb1« unwiderruflich überschrieben.
Sind Sie sicher? (Tippen Sie 'yes' in Großbuchstaben): YES
Geben Sie die Passphrase für »/dev/sdb1« ein: starkes passwortPassphrase bestätigen:starkes passwortSchlüsselfach 0 erstellt.Befehl erfolgreich.
03. öffne nur die Partition mittels cryptsetup und gib das vorhin definierte Passwort ein:
# cryptsetup luksOpen /dev/sdb1 crypto
Geben Sie die Passphrase für »/dev/sdb1« ein:dein starkes passwort
05. nun hängen wir den Stick nach /mnt ein und ändern die Zugriffsrechte auf den normalen Benutzer (BENUTZER), da wir hier ja immer noch mit root arbeiten:
# mount /dev/mapper/crypto /mnt
# chown -R BENUTZER:BENUTZER /mnt
06. fertig! Hänge den Stick aus:
# umount /mnt
Wird der Stick jetzt erneut eingestöpselt, verlangt Debian das Passwort:
Übersicht der Laufwerke: der Stick ist am geöffneten Schlosssymbol zu erkennen.
StatCounter erhebt die Daten anhand von über 16,3 Milliarden Page Views pro Monat und eruierte daraus wie viele Linuxuser im weltweiten Netz unterwegs sind. Microsofts Windows-Betriebssystem erzielte im März 2023 einen Marktanteil an den weltweiten Page Views von rund 69,4 Prozent. Apples macOS kam im selben Monat auf einen Wert von rund 17,2 Prozent, die Linux-Betriebssysteme erzielten 2,85 Prozent. Die Daten wurden anhand der Internetnutzung mit Desktop- und Notebook-PCs (ohne Smartphones und Tablets) erhoben. [Quelle]
Steam lässt sich in Debian installieren. Sind die Grafiktreiber installiert, steht dem Spielvergnügen fast nichts mehr im Weg. Warum fast? – SteamOS + Linux unterstütz nur einen sehr kleinen Teil der gesamten Steamspiele.
Store > Categories filtere die Spiele nach SteamOS + Linux. Jetzt werden dir die kompatiblem Spiele angezeigt. Sind die Grafiktreiber installiert, lässt sich unter Steam kompatible Spiele sogar in 4k spielen.
Let’s encrypt bietet kostenlose Zertifikate zur Verschlüsselung an. In diesem Beispiel erweitern wir unser bestehendes Zertifikat um die Domain newexample.com. Das Vorgehen für eine Subdomain ist dasselbe. Mittels:
wird uns der Zertifikatsname mit allen zugehörenden Domains angezeigt. Möchten wir nun das bestehende Zertikikat um eine Domain oder Subdomain (newexample.com) erweitern, müssen wir das Zertifikat example.com für alle Domains und Subdomains erweitern. Die Erweiterung des Zertifikates machen wir per expand: