Passwortprobleme beim Ändern von Benutzern im Terminal

Ich möchte zwischen dem Standardbenutzer in Terminal und dem Benutzer „postgres“ wechseln, der bei der Installation von PostgreSQL 9.2 erstellt wurde.

Wenn ich tippe su postgres, werde ich zur Eingabe eines Passworts aufgefordert, das ich nicht kenne und an das ich mich nicht erinnern kann. Ich versuche das Root-Passwort und es funktioniert nicht.

Wenn ich tippe sudo su postgres, werde ich nach meinem Root-Passwort gefragt, das ich eingebe, und das funktioniert.

Aber wenn ich jetzt versuche, mit zurück zum Standardbenutzer zu wechseln sudo su user, werde ich zur Eingabe eines Passworts aufgefordert, und das Root-Passwort funktioniert nicht. Auch nicht das Passwort, mit dem ich mich bei diesem Benutzer in OSX anmelde.

Ich verstehe nicht, was hier vor sich geht - ich habe immer nur ein Passwort festgelegt, aber der einzige Kontext, in dem es zu funktionieren scheint, ist der Wechsel vom normalen Benutzer zu "postgres". Was ist los und wie kann ich es beheben?

Mussten Sie wirklich das Passwort für den rootBenutzer für eingeben sudo su postgres? Wenn ja, wie hast du das überhaupt eingestellt?

Antworten (2)

  • Um zu user zu wechseln postgres, geben Sie Terminal ein:

    sudo su - postgres
    

    Wenn Sie nach einem Passwort gefragt werden, geben Sie Ihres ein.

    (Das -in sudo su -ändert die Umgebung in die des neuen Benutzers, und wahrscheinlich ist es das, was Sie wollen. Siehe man su für Details.)

  • Um nun wieder zu Ihrem Benutzer zu wechseln, geben Sie einfach Folgendes ein:

    exit
    

    , um die aktuelle Bash-Sitzung zu beenden und zu Ihrer ursprünglichen Bash-Sitzung zurückzukehren.

Beachten Sie, dass Sie sich bei der Eingabe sudo su <user>als Benutzer postgresidentifizieren sudound das Passwort von eingeben müssen postgres, aber wie Sie sagen, es hat keines, also wird es nicht funktionieren. Es kann sogar sein, dass der Benutzer überhaupt nicht verwenden darf postgres.sudo

Siehe meinen Kommentar oben; Ich habe meine Linux- und OSX-Nutzung verwirrt. Danke euch beiden für die Klarstellung.

Ich denke, Sie vermischen hier mehrere Konzepte, was zu einiger Verwirrung führt.

  • sudobenötigt das Passwort des aktuellen Benutzers zur Autorisierung. Wenn Sie es also als Sie selbst ausführen, geben Sie Ihr eigenes Passwort ein. Wenn Sie es als ausführen (z. B. nachdem Sie zu diesem Benutzer gewechselt haben), wird postgresdas Passwort des Benutzers benötigt. postgresDa dies höchstwahrscheinlich nicht gesetzt ist (und auch postgresnicht darin enthalten ist /etc/sudoers), postgreskann es nicht ausgeführt werdensudo
  • In der Art und Weise, wie Sie es verwenden, sudowird eine neue Shell erstellt, die mit dem neuen Benutzer ausgeführt wird. Um zum vorherigen Benutzer zurückzukehren, verlassen Sie einfach die Shell ( Ctrl-D)
  • Anstatt zu verwenden, sudo su <username>ist es möglicherweise einfacher, den Teil zu überspringen suund einfach zu verwenden sudo -su <username>(oder nur, sudo -swenn Sie es werden möchten root)

In der Praxis fand ich es viel einfacher, mehrere Tabs in Terminal zu öffnen und sich in jedem Tab bei verschiedenen Benutzern anzumelden. Auf diese Weise müssen Sie sich nicht ständig um das Hin- und Herschalten kümmern.


Von sudo(8):

Wenn der aufrufende Benutzer root ist oder wenn der Zielbenutzer mit dem aufrufenden Benutzer identisch ist, ist kein Passwort erforderlich. Andernfalls erfordert sudo, dass Benutzer sich standardmäßig mit einem Passwort authentifizieren (HINWEIS: In der Standardkonfiguration ist dies das Passwort des Benutzers, nicht das Root-Passwort ). Sobald ein Benutzer authentifiziert wurde, wird ein Zeitstempel aktualisiert und der Benutzer kann sudo für einen kurzen Zeitraum ohne Passwort verwenden (5 Minuten, sofern nicht in sudoers überschrieben).

sudoDie Standardkonfiguration (zumindest in einigen Linux-Varianten) erfordert, dass der Benutzer das Root-Passwort eingibt . Zum Beispiel /etc/sudoersunter SUSE Linux Enterprise Server:In the default (unconfigured) configuration, sudo asks for the root password.
OS X != Linux :-)
Ich weiß, habe auch die Manpage gesehen, aber als ich dies in der Frage des OP las: I'm prompted for my root passwordIch dachte, er meinte das Passwort für den Root-Benutzer.
Guter Punkt, aber basierend auf der Frage wäre ich überrascht, wenn das OP das Root-Konto wirklich aktiviert und Sudoers entsprechend geändert hätte.
Stimme voll und ganz zu. Habe meine Antwort entsprechend bearbeitet.
Vielen Dank. Ich glaube, ich war verwirrt, weil ich es gewohnt bin, solche Dinge unter Linux zu tun, und ich dachte, es wäre dasselbe unter OSX. Aber Sie haben Recht - ich wurde noch nie aufgefordert, ein Root-Passwort zu erstellen, daher machte meine Frage nicht so viel Sinn.