Ich möchte einige Datenbankbenutzer auf meinem RHEL6-Server haben. Da DB-Benutzer nur DB-Benutzer sind, möchte ich ihnen keine Shell-Anmeldung geben.
Wenn ja, wie können diese Benutzer ihr Passwort ändern?
Ich möchte einige Datenbankbenutzer auf meinem RHEL6-Server haben. Da DB-Benutzer nur DB-Benutzer sind, möchte ich ihnen keine Shell-Anmeldung geben.
Wenn ja, wie können diese Benutzer ihr Passwort ändern?
Antworten:
Haftungsausschluss: Sie tun dies auf eigene Verantwortung. Das Verwechseln von Passwörtern ist immer gefährlich. Aus Sicherheitsgründen sollten Sie LDAP oder ähnliches verwenden, um diese Konten von den Systemkonten zu trennen. In den folgenden Abschnitten geht es darum, die angeforderte Funktion mithilfe der reinen Unix-Authentifizierung zu implementieren, und sie gilt nicht für LDAP.
Du wirst brauchen:
Richten Sie eine einfache webbasierte Anzeige ein, in der Benutzer ihr Login, ihr aktuelles Passwort und das angeforderte neue Passwort zweimal eingeben können (so etwas wie Anmeldeformular und Passwortänderungsformular kombiniert). Wenn der Benutzer das Formular sendet, übergeben Sie es über an den Dämon Stream-Sockets . Daemon sollte prüfen, ob dieser Benutzer berechtigt ist, das Kennwort über die Webschnittstelle zu ändern, dann prüfen, ob das aktuelle Kennwort für den angegebenen Benutzernamen gültig ist, und falls ja, das Kennwort ändern.
Sie können es auf viele Arten implementieren. Wenn Sie die Standard-Unix-Authentifizierung verwenden, PHP PAM Paket wird sich als nützlich erweisen. Sie finden viele Tutorials zum Überprüfen und Ändern von Passwörtern mit PHP durch ssh
Verbindungen oder mit expect
, aber es ist eine sehr schlechte Idee - es wird schwierig sein, sich den Argumenten zu entziehen, und Sie werden möglicherweise eine ernsthafte Sicherheitslücke verpassen. Das PAM-Modul ist viel sicherer. Verwenden Sie es nur in einem Daemon, NICHT in Ihrer Webserver-PHP-Anwendung, da es sehr gefährlich ist, von außen zugängliche PHP-Dateien als Root auszuführen.
Natürlich können Sie es auch auf andere Weise implementieren, zum Beispiel in Python oder mit einem bash-basierten Server (mit Netcat). Ich benutze PHP als Beispiel, weil ich einmal genau das gleiche Feature in PHP implementieren musste.
Ich habe einen schnellen und schmutzigen Weg gefunden, es zu tun.
Führen Sie diese Befehle aus:
$ sudo useradd -m -d /home/username -s /usr/bin/passwd -c "login is forbidden for this user" username -N -g users
$ chown root:users /home/username
$ chmod 555 /home/username
Jetzt kann der Benutzer 'Benutzername' sein / ihr Passwort ändern. Er kann nichts anderes tun, als sein Passwort zu ändern.