Plesk FTP Nutzer und Passwort auslesen / löschen


Mit einem sehr seltenen Problem war ich nach 15 Jahren Plesk-Praxis beim Anlegen einer neuen Subdomain (als Hauptdomain angelegt) in Plesk Onyx (v17.x) konfrontiert: Es war kein Zugriff über FTP auf den Speicherplatz möglich. Obwohl ich Dutzende von Domains mit gleicher Konfiguration über Plesk eingerichtet habe und alle diese Domain fehlerfrei laufen, stand ich vor einem Rätsel. Die Subdomain habe ich gelöscht und neu angelegt. Dieser Vorgang führte nicht dazu, dass der Zugriff über FTP funktionierte. Ganz im Gegenteil entstand ein weiteres Problem: der zuvor gewählte Benutzername war vergeben und konnte nicht erneut für das Anlegen des FTP-Kontos gewählt werden. Ein weiterer Versuch, die Subdomain zu löschen und wieder neu anzulegen, führte lediglich dazu, dass auch der zuvor gewählte zweite Benutzername nun ebenso belegt war. Die von Plesk angelegten Verzeichnisse konnten (über den FTP-root-Zugang) nicht gelöscht werden. Verschiedene Repair-Versuche in Plesk brachten nicht den gewünschten Erfolg, z. B.

# /usr/local/psa/bin/repair --restore-vhosts-permissions
# plesk repair --ftp -sys-users meine.subdomain.de

Geholfen hat der Befehl

# /usr/local/psa/admin/sbin/autoinstaller --select-product-id plesk --select-release-current --reinstall-patch --install-component panel

wie in Plesk beschrieben

Alternativ gab es den Befehl

plesk installer --select-release-current --reinstall-patch --upgrade-installed-components

den ich allerdings nicht ausprobiert habe.

Die gezogenen Updates des Servers haben die existierenden Probleme (sicherlich Bugs aus der letzten Updateversion) beseitigt. Nun war ein Löschen der angelegten alten Domainverzeichnisse über SSH möglich. Hier half der Befehl

# rm -r meine.subdomain.de

Nun stellte sich erneut die Frage, wie und wo ich den FTP-Benutzernamen mit zugehörigem und Passwort löschen kann. Dieser blockierte die Neuanlage der Subdomain mit gewüsnchtem Benutzernamen. Fündig wurde ich im Server-Verzeichnis “/etc”. Dort befinden sich die Dateien

passwd
passwd-
shadow
shadow-
subgid
subgid-
subuid
subuid-

Mit einem Texteditor lassen sich die Passwörter aus der Datei einfach herauslöschen. Allerdings ist das nur die halbe Miete und löste das Problem nicht, da der Benutzername noch immer irgendwo vorhanden war und die Neuanlage blockierte. Plesk selbst ist in einer MySQL-Datenbank gespeichert, die allerdings über das Dashboard von Plesk nicht erreichbar ist. Hier hilft nur noch der Zugriff über die Konsole. (Plesk fertigt von seiner eigenen Datenbank selbständig ein tägliches Backup an. Die Backups liegen unter /var/lib/psa/dumps/ und dort “mysql.daily.dump.x.gz”.) In der Plesk-Datenbank befinden sich die zuvor angelegten Benutzernamen, die eine Neuanlage mit gleichem Benutzernamen verhindern.

Um die Datenbank abzufragen, wird über SSH mit Administratorzugang (admin bzw. root) auf den Server eingeloggt. Die Abfragebefehl lautet

mysql -uadmin -p`cat /etc/psa/.psa.shadow` psa -e "select * from sys_users";

Die Ausgabe sieht in etwa so aus

Die Passwortabfrage erfolgt über den Abfragebefehl

mysql -uadmin -p`cat /etc/psa/.psa.shadow` psa -e "select * from accounts where id = 2";

wobei die ID entsprechend der abzufragenden Position anzupassen ist. Für ID ist die Zahl unter “account_id” einzugeben

Die Ausgabe sieht in etwa so aus

Die Abfrage für Domain, Benutzername und Passwort kann auch kombiniert ausgegeben werden, was allerdings nicht hilfreich ist, wenn das Vorhaben einer Löschung des Benutzernamens im Vordergrund steht, da die ID-Angaben benötigt werden.

mysql -uadmin -p`cat /etc/psa/.psa.shadow` psa -e "select home,login,password from sys_users,accounts where sys_users.account_id=accounts.id";

Um den Benutzer entgültig zu löschen, sind noch weitere Schritte nötig. Für “sys_user_id” ist die “account_id” einzugeben, für “sys_users” login ist der Benutzername zu verwenden.

# mysql -uadmin -p`cat /etc/psa/.psa.shadow` -Dpsa -e "delete from web_users where sys_user_id = 10"
# mysql -uadmin -p`cat /etc/psa/.psa.shadow` -Dpsa -e "delete from accounts where id = 36"
# mysql -uadmin -p`cat /etc/psa/.psa.shadow` -Dpsa -e "delete from sys_users where login = 'benutzername'"

Nach einer erneuten Abfrage ist der Benutzername aus der Liste verschwunden. Einer Neuanlage der Subdomain mit gleichem Benutzernamen steht nun nichts mehr im Weg. Ich denke nicht, dass die Probleme etwas mit der Art der gewählten Domain (Sub- oder Hauptdomain) zu tun hatte, sondern aus einem Update-Bug resultierten. Im Normalfall tritt das Problem gar nicht auf, wenn Plesk ausnahmsweise einmal richtig funktioniert.