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

8

Ist es möglich, die Kennwortdatenbankdatei ( /etc/passwd) in eine andere Datei zu ändern? Wie funktioniert dieser Authentifizierungsmechanismus intern? Kommt es auf pam an?

Nitine
quelle
4
Ich möchte nur darauf hinweisen, dass es trotz seines Namens /etc/passwdnicht die tatsächlichen Passwörter oder sogar die Hashes enthält - schattierte Passwörter waren de facto ein Standard, seit ich vor zwei Jahrzehnten mit Unix angefangen habe.
Shadur

Antworten:

7

Sie haben Recht: /etc/passwdund /etc/shadowwerden von pam_unix.so, die Teil von PAM sind, konsultiert . Zumindest unter modernen Linuxen. Sie können dies durch Patchen ändern pam_unix.so. Wenn man der Manpage glauben will, kann man den Speicherort der Systemdatenbanken nicht ändern.

Und du willst es 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, der Shell usw. des Benutzers. Der Name und der Ort sind so standardisiert, dass das Verschieben fast definitiv Dinge außerhalb von PAM kaputt machen würde. Sie müssten viel mehr flicken, als Sie erwartet hatten.

Update: Wenn Sie versuchen, die /etc/{passwd,shadow,group}Dateien aus Sicherheitsgründen auszublenden , machen Sie sich darüber keine Sorgen. Sicherheit durch Dunkelheit hilft selten als Politik. Lassen Sie sie dort, wo sie sind, und verschärfen Sie den Rest Ihrer Richtlinien.

Update: eine mögliche Lösung

Wenn Sie einige benutzerdefinierte Software haben Sie einen anderen Satz von Benutzer- / Gruppen - Datenbanken zugreifen müssen, können Sie eine Kopie der entsprechenden PAM und NSS - Module machen und patchen sie Ihre benutzerdefinierten Datenbanken zu verwenden. Die ursprünglichen Unix-Datenbanken bleiben dort, wo sie sich befinden, damit die Software nicht verwechselt wird. Sie können jedoch PAM und NSS so einstellen, dass Ihre benutzerdefinierten Module überall dort verwendet werden, wo Sie sie benötigen, und die für Sie sinnvollen Richtlinien verwenden.

Halten Sie die Unix-Datenbanken im Wesentlichen makellos und Sie haben das, wonach Sie gefragt haben. Dies ist so ziemlich das, was die Module radiusund ldapPAM / NSS tun: Sie bieten eine zusätzliche (nicht ersetzbare) Quelle für Anmeldeinformationen und Benutzer- / Gruppeninformationen.

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

Alexios
quelle
1
Namensauflösung und UID: Namensabgleich werden von nss subsytem durchgeführt, das ebenfalls modular aufgebaut ist (= einfach hackbar). Aber Sie haben teilweise Recht damit - es kann einige Skripte beschädigen, die / etc / passwd direkt lesen, anstatt libnss zu verwenden.
rvs
1
Die Modularität ist willkommen, aber unerheblich: Sie müssen mehr Code patchen, und eine Menge Software (insbesondere älterer Code) wird möglicherweise direkt in die Dateien übertragen. Dies führt zu einem ziemlich bösen Worst-Case-Szenario.
Alexios
Es kann auch vom älteren Schatten gehandhabt werden, da noch nicht jeder gezwungen ist, pam zu verwenden.
Lynxlynxlynx
6

Was Sie suchen, ist das pam_pwdfileModul. Unter Debian / Ubuntu ist das Paket libpam-pwdfile(nicht sicher über von RedHat abgeleitete Distributionen).

Das READMEim Lieferumfang enthaltene Paket erklärt die Verwendung.

Bahamat
quelle
2

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

  1. Optimieren / hacken Sie die nsswitch-Bibliothek (/lib/libnss_files.so oder libnss_db.so - überprüfen Sie Ihre /etc/nsswitch.conf), damit eine andere Datei gelesen wird.
  2. Pune / Hack pam_unix Modul so, dass es einige andere Dateien lesen würde.
rvs
quelle
5
3. Verbringen Sie den Rest des Lebens dieses Systems damit, sich gelegentlich mit zufälligen anderen /etc/passwd
Dingen zu beschäftigen
1

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

jlliagre
quelle