Ist es möglich, die Kennwortdatenbankdatei (/etc/passwd) in Linux zu ändern?

Ist es möglich, die Kennwortdatenbankdatei (/etc/passwd) in Linux zu ändern?

Ist es möglich, die Kennwortdatenbankdatei ( /etc/passwd) in eine andere Datei zu ändern? Wie funktioniert dieser Authentifizierungsmechanismus intern? Hängt er von PAM ab?

Antwort1

Sie haben Recht: /etc/passwdund /etc/shadowwerden von konsultiert pam_unix.so, die Teil von PAM sind. Zumindest auf modernen Linux-Systemen. Sie könnten dies ändern, indem Sie patchen pam_unix.so. Wenn man der Manpage Glauben schenken darf, können Sie den Speicherort der Systemdatenbanken nicht ändern.

Und das möchten Sie wirklich nicht. /etc/passwdwird nicht nur zur Authentifizierung verwendet, sondern auch zur (umgekehrten) Namensauflösung und zum Nachschlagen von Dingen wie dem vollständigen Namen des Benutzers, der Shell usw. Der Name und der Speicherort sind so standardisiert, dass eine Verschiebung mit ziemlicher Sicherheit Dinge außerhalb von PAM beschädigen würde. Sie müssten viel mehr patchen, als Sie erwartet haben.

Aktualisieren:Wenn Sie versuchen, die /etc/{passwd,shadow,group}Dateien aus Sicherheitsgründen zu verstecken, machen Sie sich darüber keine Gedanken. Security by Obscurity ist als Strategie selten hilfreich. Lassen Sie die Dateien dort, wo sie sind, und verschärfen Sie Ihre übrigen Strategien.

Update: eine mögliche Lösung

Wenn Sie eine benutzerdefinierte Software haben, die auf einen anderen Satz von Benutzer-/Gruppendatenbanken zugreifen muss, können Sie eine Kopie der relevanten PAM- und NSS-Module erstellen und diese patchen.ihnenum Ihre benutzerdefinierten Datenbanken zu verwenden. Die ursprünglichen Unix-Datenbanken bleiben dort, wo sie sind, damit die Software nicht durcheinander gerät. Sie können PAM und NSS jedoch so einstellen, dass sie Ihre benutzerdefinierten Module überall dort verwenden, wo Sie sie benötigen, und dabei die Richtlinie verwenden, die für Sie sinnvoll ist.

Halten Sie die Unix-Datenbanken im Wesentlichen makellos und Sie haben, was Sie wollten. Das ist im Wesentlichen das, was die radiusModule ldapPAM/NSS tun: Sie bieten einezusätzlich(kein Ersatz) Quelle von Anmeldeinformationen und Benutzer-/Gruppeninformationen.

Gehen Sie noch einen Schritt weiter: Sie können zu PAM und NSS zurückkehren und die Unix-Datenbanksuche vollständig deaktivieren. Lassen Sie die Dateien für alte Software dort (natürlich sind ihre Ansichten der Benutzer-/Gruppendatenbanken ungenau, aber zumindest werden sie nicht kaputt gehen).

Antwort2

Was Sie suchen, ist das pam_pwdfileModul. Unter Debian/Ubuntu ist das Paket libpam-pwdfile(bei von RedHat abgeleiteten Distributionen bin ich mir nicht sicher).

Im Lieferumfang ist eine READMEGebrauchsanweisung enthalten.

Antwort3

Ich bin mir nicht sicher, ob das sofort möglich ist, aber mit etwas Hacking ist es definitiv möglich. Dazu müssen Sie Folgendes tun:

  1. Optimieren/hacken Sie die nsswitch-Bibliothek (/lib/libnss_files.so oder libnss_db.so – überprüfen Sie Ihre /etc/nsswitch.conf), sodass eine andere Datei gelesen wird.
  2. Optimieren/hacken Sie das pam_unix-Modul, damit es einige andere Dateien lesen kann.

Antwort4

Verwenden Sie NIS oder LDAP, um Ihre Benutzer zu authentifizieren. Ihre Passwörter werden nicht in den Dateien /etc/{password/shadow} gespeichert.

verwandte Informationen