KeyHelp – Umzug auf einen neuen Server – IT-Praxis aus Oberschwaben
17 mins read

KeyHelp – Umzug auf einen neuen Server – IT-Praxis aus Oberschwaben


Zuletzt aktualisiert am 22. Oktober 2023, 20:10:06

Ich betreibe seit mehreren Jahren einen Server mit dem KeyHelp-Kontrollpanel. Die Hardwareressourcen gehen langsam zur Neige. Daher sollte auf einen neuen Server umgezogen werden, damit in der Zukunft ausreichend Ressourcen für neue Herausforderungen zur Verfügung stehen.

In diesem Beitrag beschreibe ich die notwendigen Schritte. Das Betriebssystem sowohl auf dem alten als auch auf dem neuen Server ist UEs wird Ubuntu Server 22.04.3 LTS verwendet. Es ist an diesem Punkt KeyHelp 23.2 (Build 3096) neueste Version Der Artikel basiert auf Anweisungen aus dem KeyHelp-Community-Forum.

Vorbereitungen

Ich übernehme keinerlei Gewährleistung, Haftung oder Verantwortung für eventuell dadurch entstehende Schäden oder Folgeschäden.

Aktueller Server

Aktivieren Sie den KeyHelp-Wartungsmodus (KeyHelp-Benutzeroberfläche -> Einstellungen -> Systemsteuerung -> Wartungsmodus). Bei Bedarf auch für verschiedene in der KeyHelp-Instanz angebotene Websites.

Stoppen/beenden Sie die Linux-Dienste „Postfix“, „Dovecot“, „proFTPD“.

systemctl stop postfix.service
systemctl stop dovecot.service
systemctl stop proftpd.service

Erstellen Sie über die KeyHelp-Benutzeroberfläche (Einstellungen -> Backup) ein aktuelles Backup in einem Remote-Repository. Zu diesem Zweck habe ich mir bei Hetzner eine Lagerbox gemietet. Die Datenübertragung dorthin erfolgt per SFTP.

Benutzerkonten vom MariaDB-Server über phpMyAdmin lesen und exportieren. Es ist wichtig, dass Sie sich zum Anmelden mit dem Konto „mysqladmin“ anmelden.

Anschließend erscheint ein neues Dialogfenster. Dort werden die notwendigen SQL-Befehle eingegeben. Am besten kopieren Sie den Inhalt 1:1 in einen Texteditor.

Neue Server

Richten Sie einen neuen (virtuellen) Server mit Ubuntu Server 22.04.3 LTS ein/installieren Sie ihn.

Richten Sie eine SSH-Sitzung ein und extrahieren Sie die Zeitdienstkonfiguration.

timedatectl

Stellen Sie die Zeitzone auf Europa/Berlin ein.

timedatectl set-timezone Europe/Berlin

Überprüfen Sie die Zeitdienstkonfiguration.

timedatectl

Installieren Sie KeyHelp mit dem Skript des Herstellers (Quelle:

wget  -O install_keyhelp.sh ; bash install_keyhelp.sh ;

Installieren Sie alle erforderlichen PHP-Interpreter über die KeyHelp-Benutzeroberfläche über Konfiguration -> Funktionseinstellungen -> PHP-Interpreter. Wenn auf dem aktuellen KeyHelp-Server kein Interpreter installiert ist, kann dieser Punkt natürlich übersprungen werden.

Wenn Sie die Möglichkeit haben, können Sie einen Snapshot des gesamten Servers in seinem aktuellen Zustand erstellen. Es kann sicherlich nicht schaden. 😉

Wiederherstellung

Die nächsten Schritte sind auf dem neuen Server erledigt!

Erstellen Sie ein neues Verzeichnis mit dem Namen „recovery“.

mkdir /restore

Backup-Speicher hinzufügen

Da diese Schritte an verschiedenen Stellen wiederholt werden, habe ich mich entschieden, dies in einem Aufzählungspunkt zu beschreiben. So kann man immer wieder darauf zurückgreifen.

Öffnen Sie die KeyHelp-Benutzeroberfläche und gehen Sie zu Einstellungen -> Backup. Gehen Sie zur Repository-Verwaltung, um ein vorhandenes Repository hinzuzufügen.

Geben Sie die Parameter zum Hinzufügen des Repositorys ein und klicken Sie dann auf Speichern. Grundsätzlich sollten hier die gleichen Daten wie auf dem KeyHelp-Server eingetragen werden!

Wenn alles gut gelaufen ist, kehren Sie zur Übersicht zurück. Es gibt automatisch ein „Health Check/Update Stats“-Ereignis mit dem Status „Coming Soon“.

Dieser Vorgang stellt sicher, dass Snapshots im Backup-Repository gelesen und später verwendet werden können. Dieser Vorgang kann einige Minuten dauern. Seien Sie also nicht ungeduldig.

Benutzer- und Gruppenwiederherstellung

Wählen Sie dazu in der KeyHelp-Benutzeroberfläche das Menü Einstellungen -> Backup -> Backup wiederherstellen.

Stellen Sie das Verzeichnis /etc aus dem letzten Snapshot wieder her. Scrollen Sie dazu nach unten zum Abschnitt „Dateien und Verzeichnisse“.

Im Hauptmenü „Backup“ wird ein neuer Vorgang angezeigt. Sie wird dann im Rahmen des Wartungsintervalls durchgeführt. Wenn der Job korrekt abgeschlossen wurde, befindet sich im Verzeichnis „/restore“ ein Verzeichnis „etc“.

Erstellen Sie eine Kopie der Systemdateien

cp /etc/passwd /etc/passwd.$(date '+%Y-%m-%d_%H-%M-%S')
cp /etc/shadow /etc/shadow.$(date '+%Y-%m-%d_%H-%M-%S')
cp /etc/group /etc/group.$(date '+%Y-%m-%d_%H-%M-%S')
cp /etc/gshadow /etc/gshadow.$(date '+%Y-%m-%d_%H-%M-%S')

Benutzerkonten

Lesen Sie alle Benutzerkonten aus der Datei „/restore/etc/passwd“. Generell beginnen alle von KeyHelp generierten Einträge mit der ID 5xxx.

egrep "[^:]:x:5[0-9]{3}:" /restore/etc/passwd | tail -n +2 > /restore/keyhelp_passwd

Stellen Sie sicher, dass der Inhalt der Datei „/restore/keyhelp_passwd“ vollständig ist.

cat /restore/keyhelp_passwd
xdzs:x:5001:5001::/home/users/xdzs/:/bin/bash
djth:x:5002:5002::/home/users/djth/:/bin/false
zaco:x:5003:5003::/home/users/zaco/:/bin/bash
epvm:x:5004:5004::/home/users/epvm/:/bin/false
vaon:x:5005:5005::/home/users/vaon/:/bin/false
apnk:x:5006:5006::/home/users/apnk/:/bin/false
ahlm:x:5007:5007::/home/users/ahlm/:/bin/false
idkc:x:5008:5008::/home/users/idkc/:/bin/bash
ccvv:x:5009:5009::/home/users/ccvv/:/bin/bash
wihn:x:5010:5010::/home/users/wihn/:/bin/bash
kxmf:x:5011:5011::/home/users/kxmf/:/bin/bash
vcfa:x:5012:5012::/home/users/vcfa/:/bin/bash

Erstellen Sie eine leere Datei „/restore/keyhelp_shadow“.

cp /dev/null /restore/keyhelp_shadow

Lesen Sie alle gefundenen Benutzerkontoeinträge aus „/restore/etc/shadow“ und schreiben Sie sie nach „/restore/keyhelp_shadow“.

input="/restore/keyhelp_passwd"

while read -r line
do
  echo "$line"
  username=$(echo $line | awk -F: '{print $1}')
  egrep "^$username:" /restore/etc/shadow >> /restore/keyhelp_shadow
done < "$input"

Stellen Sie sicher, dass der Inhalt der Datei „/restore/keyhelp_shadow“ vollständig ist.

cat /restore/keyhelp_shadow
xdzs:$6$rounds=5000$LdJQeN8ZTwsqBW.H$h8vKtCnI6UMrkTuPCn.NDEA/vCzcq1:18520:0:99999:7:::
djth:$6$rounds=5000$wX1ESet8/p4AUVhg$JbsTZDBzGR/44WgdjOBI855Z/d6PA/:18520:0:99999:7:::
zaco:$6$rounds=5000$f1mnQAvtYEu6ahyK$PW7kbqYpni8XgFRVkRePDexsrFeSn1:18520:0:99999:7:::
epvm:$6$rounds=5000$y5GTIB7UC6esW9mp$eax7emTvzLNm.XQIF9/yyu.Vvry.g0:18521:0:99999:7:::
vaon:$6$rounds=5000$zs4cCb9YGU0nvdjS$R48nn9lrWgtyNssgDPg9j.IZeAFc91:18521:0:99999:7:::
apnk:$6$rounds=5000$v0EmaKVCOytS/NQk$.vVwQ8wEX0.Znq39idXkRdwE3JX5h/:18521:0:99999:7:::
ahlm:$6$rounds=5000$0LGvw2BNtzYmnDTM$GbBRQdq/Frr1B/sEQcOXRgQuZHT4E0:18521:0:99999:7:::
idkc:$6$rounds=5000$7Yq.MOs6NaiT1GkE$1cEIKrPb.3DGjR8AjEk3lYhmQTwM//:18521:0:99999:7:::
ccvv:$6$rounds=5000$oHWXvYa9ZBwbKmh0$gyo.oDRNxG2aKxcfJVYDF7Vao0Hi51:18521:0:99999:7:::
wihn:$6$rounds=5000$OtLSYsof8XjA53Ja$oOx0O3GUPrPFs8niJbZwL.kmLVJ6N0:18521:0:99999:7:::
kxmf:$6$rounds=100000$wXYtsvJUH0OAQLlm$Tb8SQawNm2OuQow8jmkr4235do/0:19029:0:99999:7:::
vcfa:$6$rounds=5000$P5m0vpMcUoFk1IGJ$uqxSM/8hMlcId5afixyJtZVITak1o0:18522:0:99999:7:::

Gruppenkonten

Lesen Sie alle Gruppen aus der Datei „/restore/etc/group“. Auch hier beginnen alle von KeyHelp generierten Einträge mit der ID 5xxx.

egrep "[^:]:x:5[0-9]{3}:" /restore/etc/group | tail -n +2 > /restore/keyhelp_group

Stellen Sie sicher, dass der Inhalt der Datei „/restore/keyhelp_group“ vollständig ist.

cat /restore/keyhelp_group
xdzs:x:5001:
djth:x:5002:
zaco:x:5003:
epvm:x:5004:
vaon:x:5005:
apnk:x:5006:
ahlm:x:5007:
idkc:x:5008:
ccvv:x:5009:
wihn:x:5010:
kxmf:x:5011:
vcfa:x:5012:

Erstellen Sie eine leere Datei „/restore/keyhelp_gshadow“.

cp /dev/null /restore/keyhelp_gshadow

Lesen Sie alle gefundenen Gruppeneinträge aus „/restore/etc/gshadow“ und schreiben Sie in die Datei „/restore/keyhelp_gshadow“.

input="/restore/keyhelp_group"

while read -r line
do
  echo "$line"
  groupname=$(echo $line | awk -F: '{print $1}')
  egrep "^$groupname:" /restore/etc/gshadow >> /restore/keyhelp_gshadow
done < "$input"

Stellen Sie sicher, dass der Inhalt der Datei „/restore/keyhelp_gshadow“ vollständig ist.

cat /restore/keyhelp_gshadow
xdzs:!::
djth:!::
zaco:!::
epvm:!::
vaon:!::
apnk:!::
ahlm:!::
idkc:!::
ccvv:!::
wihn:!::
kxmf:!::
vcfa:!::

Lesen Sie alle KeyHelp-Gruppen aus der Datei „/restore/etc/group“ und schreiben Sie in die Datei „/restore/keyhelp_tmp_group“.

egrep "^keyhelp_" /restore/etc/group > /restore/keyhelp_tmp_group

Stellen Sie sicher, dass der Inhalt der Datei „/restore/keyhelp_tmp_group“ vollständig ist.

cat /restore/keyhelp_tmp_group
keyhelp_file_manager:x:1001:xdzs,djth,zaco,epvm,vaon,apnk,ahlm,idkc,ccvv,wihn,kxmf,vcfa
keyhelp_nossh:x:1002:djth,epvm,vaon,apnk,ahlm
keyhelp_noftp:x:1003:xdzs,djth,zaco,epvm,ahlm,vaon,vcfa
keyhelp_suspended:x:1004:
keyhelp_chroot:x:1005:

Lesen Sie die Datei „/restore/keyhelp_tmp_group“. Lesen Sie den Teamnamen am Anfang jeder Zeile. Suchen Sie den Gruppennamen in der Datei /etc/group und geben Sie die Zeilennummer zurück. Ersetzen Sie die Zeilennummer X durch den Wert in der Datei /restore/keyhelp_tmp_group.

input="/restore/keyhelp_tmp_group"

while read -r line
do
  echo "$line"
  #
  groupname=$(echo $line | awk -F: '{print $1}')
  echo $groupname
  #
  zeilnr=$(awk '/'"$groupname"'/ { print NR; Exit }' /etc/group)
  echo $zeilnr

  #
  sed -i "$zeilnr"'s/.*/'"$line/" /etc/group
  
done < "$input"

Stellen Sie sicher, dass der Inhalt der Datei „/etc/group“ vollständig ist.

egrep "^keyhelp_" /etc/group
keyhelp_file_manager:x:1001:xdzs,djth,zaco,epvm,vaon,apnk,ahlm,idkc,ccvv,wihn,kxmf,vcfa
keyhelp_nossh:x:1002:djth,epvm,vaon,apnk,ahlm
keyhelp_noftp:x:1003:xdzs,djth,zaco,epvm,ahlm,vaon,vcfa
keyhelp_suspended:x:1004:
keyhelp_chroot:x:1005:

Lesen Sie alle KeyHelp-Gruppen aus der Datei „/restore/etc/gshadow“ und schreiben Sie in die Datei „/restore/keyhelp_tmp_gshadow“.

egrep "^keyhelp_" /restore/etc/gshadow > /restore/keyhelp_tmp_gshadow

Stellen Sie sicher, dass der Inhalt der Datei „/restore/keyhelp_tmp_gshadow“ vollständig ist.

cat /restore/keyhelp_tmp_gshadow
keyhelp_file_manager:!::xdzs,djth,zaco,epvm,vaon,apnk,ahlm,idkc,ccvv,wihn,kxmf,vcfa
keyhelp_nossh:!::djth,epvm,vaon,apnk,ahlm
keyhelp_noftp:!::xdzs,djth,zaco,epvm,ahlm,vaon,vcfa
keyhelp_suspended:!::
keyhelp_chroot:!::

Lesen Sie die Datei „/restore/keyhelp_tmp_gshadow“. Lesen Sie den Teamnamen am Anfang jeder Zeile. Suchen Sie den Gruppennamen in der Datei /etc/gshadow und geben Sie die Zeilennummer zurück. Ersetzen Sie die Zeilennummer X durch den Wert in der Datei /restore/keyhelp_tmp_gshadow.

input="/restore/keyhelp_tmp_gshadow"

while read -r line
do
  echo "$line"
  #
  groupname=$(echo $line | awk -F: '{print $1}')
  echo $groupname
  #
  zeilnr=$(awk '/'"$groupname"'/ { print NR; Exit }' /etc/gshadow)
  echo $zeilnr
  #
  sed -i "$zeilnr"'s/.*/'"$line/" /etc/gshadow
done < "$input"

Stellen Sie sicher, dass der Inhalt der Datei „/etc/gshadow“ vollständig ist.

egrep "^keyhelp_" /etc/gshadow
keyhelp_file_manager:!::xdzs,djth,zaco,epvm,vaon,apnk,ahlm,idkc,ccvv,wihn,kxmf,vcfa
keyhelp_nossh:!::djth,epvm,vaon,apnk,ahlm
keyhelp_noftp:!::xdzs,djth,zaco,epvm,ahlm,vaon,vcfa
keyhelp_suspended:!::
keyhelp_chroot:!::

Fügen Sie dem System Benutzer und Gruppen hinzu

Übertragen Sie die ausgewählten Benutzer und Gruppen in ihre jeweiligen Systemdateien.

cat /restore/keyhelp_passwd >> /etc/passwd
cat /restore/keyhelp_shadow >> /etc/shadow
cat /restore/keyhelp_group >> /etc/group
cat /restore/keyhelp_gshadow >> /etc/gshadow

Überprüfen Sie abschließend, ob die Dateien /etc/passwd, /etc/shadow, /etc/group und /etc/gshadow korrekt und vollständig sind. Abschließend muss sichergestellt werden, dass in den geänderten Dateien keine Gruppen mehr als einmal vorhanden sind.

KeyHelp stellt die Verschlüsselung wieder her

KeyHelp verfügt über eine Verschlüsselung, auch bei Verwendung der 2-Faktor-Authentifizierung. Aber auch an anderen Orten ist dieser Schritt durchaus zu empfehlen.

Installieren Sie die erforderlichen Voraussetzungen.

apt install jq

Lesen Sie den Schlüsselwert aus der Datei „/restore/etc/keyhelp/config/config.json“, speichern Sie ihn in einer Variablen und geben Sie ihn aus.

KeyHelpEncrypKey=$(cat /restore/etc/keyhelp/config/config.json | jq .encryption.base | tr -d '"')
echo $KeyHelpEncrypKey

Erstellen Sie eine Kopie der Datei „/etc/keyhelp/config/config.json“.

cp /etc/keyhelp/config/config.json /etc/keyhelp/config/config.json.$(date '+%Y-%m-%d_%H-%M-%S')

Ersetzen Sie den aus der Variablen „KeyHelpEncrypKey“ gelesenen Wert in der Datei „/etc/keyhelp/config/config.json“.

jq --arg KeyHelpEncrypKey $KeyHelpEncrypKey '.encryption.base = $KeyHelpEncrypKey' /etc/keyhelp/config/config.json > /etc/keyhelp/config/tmp.$$.json && mv /etc/keyhelp/config/tmp.$$.json /etc/keyhelp/config/config.json

Sobald der neue Wert gespeichert ist, muss das bestehende Backup-Repository gelöscht und neu integriert werden (siehe Kap Backup-Speicher hinzufügen).

Das Werkzeug jq nochmal deinstallieren

apt purge jq
apt autoremove

Datenbankstandards wiederherstellen

Wählen Sie dazu in der KeyHelp-Benutzeroberfläche das Menü „Einstellungen -> Sicherung -> Sicherung wiederherstellen“. Diesmal die Datenbanken, die für den Betrieb von KeyHelp unbedingt erforderlich sind. Diese sind heute keyhelp, mysql, phpmyadmin, rainloop, Roundcube und snappymail. Mit „Speichern“ wird erneut ein neuer Vorgang erstellt.

Nach dem Start des Vorgangs kehrt die neue KeyHelp-Benutzeroberfläche zum Anmeldebildschirm zurück. Dies liegt daran, dass die bestehende Sitzung verloren ging, als die KeyHelp-Datenbank wiederhergestellt wurde. Ab sofort gelten die Anmeldedaten der vorherigen KeyHelp-Instanz.

Starten Sie den MariaDB-Datenbankserver neu.

systemctl restart mariadb.service

Überprüfen Sie den Status des Datenbankservers.

systemctl status mariadb.service
● mariadb.service - MariaDB 10.6.12 database server
     Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset: enabled)
     Active: active (running) since Tue 2023-09-26 17:06:04 CEST; 21s ago
       Docs: man:mariadbd(8)
             
    Process: 17077 ExecStartPre=/usr/bin/install -m 755 -o mysql -g root -d /var/run/mysqld (code=exited, status=0/SUCCESS)
    Process: 17078 ExecStartPre=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited, status=0/SUCCESS)

Zu diesem Zeitpunkt wird in der KeyHelp-Benutzeroberfläche Ihres Browsers ein Fehler 500 angezeigt. Das liegt natürlich daran, dass SQL-Benutzerpasswörter festgelegt werden müssen und KeyHelp auch die bisherigen Passwörter kennen muss.

Starten Sie eine SQL-Sitzung über SSH.

mysql

Kopieren Sie die gespeicherten SQL-Befehle aus Kapitel 1.0.1 (Aktueller Server) und fügen Sie diese vollständig in die Sitzung ein und führen Sie sie aus.

Wenden Sie Änderungen auf Benutzerkonten an.

flush privileges;

Abmelden/Verbindung zum SQL Server herstellen.

exit;

Kopieren Sie die KeyHelp-Konfigurationsdatei und überschreiben Sie die vorhandene.

cp /restore/etc/keyhelp/config/config.json /etc/keyhelp/config/config.json

Endlich funktioniert der Aufruf der KeyHelp-Benutzeroberfläche wieder. Als Anmeldedaten können Daten der vorherigen Instanz verwendet werden.

Nach der Wiederherstellung der Datenbank werden die Vorgänge in Konfiguration -> Backup nicht aktualisiert. Rufen Sie daher die Repository-Verwaltung auf und bearbeiten Sie das vorhandene Repository. Ändern Sie in diesem Fall nichts an den Einstellungen und klicken Sie auf „Speichern“. In diesem Zusammenhang wird die Integritätsprüfung erneut durchgeführt. Daher werden auch die Daten im Feld „Backup“ in der Datenbank aktualisiert.

Benutzerdaten wiederherstellen

Wählen Sie dazu in der KeyHelp-Benutzeroberfläche das Menü „Einstellungen -> Sicherung -> Sicherung wiederherstellen“. Nun kann ein beliebiges Element (E-Mail-Konten, Datenbanken, Benutzerverzeichnisse usw.) ausgewählt werden.

Unter keinen Umständen sollten Datenbankstandards (keyhelp, mysql, phpmyadmin, rainloop, Roundcube und snappymail) und die Verzeichnisse /etc/ und /root/ sind ausgewählt, überhaupt nicht.

Normalerweise wird das Verzeichnis „/home/keyhelp“ nicht benötigt. Anders verhält es sich bei der Verwendung von „White Label“. Sollte dies der Fall sein, muss auch das Verzeichnis „/home/keyhelp/www/keyhelp.white_label“ wiederhergestellt werden.

Mit „Speichern“ wird erneut ein neuer Vorgang erstellt. Abhängig von der Anzahl der Elemente und ihrer Größe kann die Wiederherstellung einige Zeit dauern.

Nehmen Sie vorhandene SSL-Zertifikate

Sichern Sie das Verzeichnis „/etc/ssl/keyhelp“.

mv /etc/ssl/keyhelp /etc/ssl/keyhelp.$(date '+%Y-%m-%d_%H-%M-%S')

Kopieren Sie „/restore/etc/ssl/keyhelp/“ in das Verzeichnis „/etc/ssl/“.

cp -av /restore/etc/ssl/keyhelp/ /etc/ssl/

Letzter Job

Schreiben Sie die KeyHelp-Konfiguration neu

Melden Sie sich in der SSH-Sitzung an und rufen Sie den Befehl „keyhelp-toolbox“ auf. Geben Sie den ersten Eintrag im Menü ein und bestätigen Sie ihn durch Drücken der Taste „1“.

Bestätigen Sie die Sicherheitsabfrage mit dem Buchstaben „C“.

Dies kann wie die Datenwiederherstellung einige Zeit dauern. Wenn das Ende der Aufgabe erreicht ist, wird eine grüne Abschlussmeldung angezeigt.

perfekt Beenden Sie die Toolbox und starten Sie abschließend den Server neu.

reboot

Löschen Sie alle Sicherungsdateien

Sobald der Umzug abgeschlossen ist, alles reibungslos verläuft und die Kinderkrankheiten behoben sind, vergessen Sie nicht, die Backups verschiedener Verzeichnisse und Dateien zu löschen.

ll /etc/ssl/ | grep "keyhelp."
drwxr-xr-x   5 root root      4096 Feb 18  2023 keyhelp.2023-09-26_21-05-48/
ll / | grep "restore"
drwxr-xr-x   3 root    root     4096 Sep 26 20:17 restore/
ll /etc/ | grep "passwd\|shadow\|group.\|gshadow."
-rw-r--r--   1 root     root       1379 Sep 26 20:06 group.2023-09-26_20-06-11
-rw-r--r--   1 root     root       1262 Sep 26 20:06 group.2023-09-26_20-06-55
-rw-r--r--   1 root     root       1379 Sep 26 21:17 group.2023-09-26_21-17-08
-rw-r-----   1 root     root       1141 Sep 26 21:17 gshadow.2023-09-26_21-17-12
-rw-r--r--   1 root     root       3042 Sep 26 21:17 passwd.2023-09-26_21-17-01
-rw-r-----   1 root     root       3123 Sep 26 21:17 shadow.2023-09-26_21-17-05
ll /etc/keyhelp/config/ | grep "config"
-rw-r--r-- 1 root    root     420 Sep 26 17:23 config.json.2023-09-26_17-23-51
-rw-r--r-- 1 root    root     350 Sep 26 17:08 config.json.bak2

Viel Spaß beim Ausprobieren. 🙂



technische Probleme auf

Leave a Reply

Your email address will not be published. Required fields are marked *