Ich bin mit einem normalen Benutzerkonto angemeldet, das kein Mitglied der Gruppen istsudoUndAdministrator. Wenn ich den folgenden Beispielbefehl ausführe …
su -c 'sudo some_command_that_needs_sudo' sudo-user
..es ist notwendig, das Passwort einzugebenzweimal. Das erste Mal, wenn Sie sich anmelden alsSudo-Benutzerund das zweite Mal, weil wir Root-Rechte anfordern mitsudo.
Wissen Sie, wie Sie eine zweite Eingabe des Passwortes verhindern können?
Bitte bedenke..
- ..möchte keine Benutzerrechte ändern
- ..möchte das Passwort nur einmal eingeben
- ..auf der Suche nach einem einfachen Einzelbefehl
Antwort1
Ihre Konfiguration ist ein wenig ungewöhnlich. Normalerweise würden Sie Ihren Benutzernamen zu sudoers hinzufügen und die Anwendungen einschränken, die auf diese Weise ausgeführt werden können, falls erforderlich. Ohne weitere Einzelheiten zu kennen, sehe ich keinen Vorteil darin, ein drittes Konto einzuführen. Es führt nur zu mehr Indirektion, und das ist es, was Sie jetzt erleben.
Das erste Passwort, das Sie eingeben, ist das des Sudo-Benutzers. Das können Sie nicht vermeiden, denn Sie wechseln den Benutzer. Hier sind einige verrückte Workarounds, die mir einfallen und die Sie nicht verwenden sollten.
- Sie könnten ein leeres Passwort für den Benutzer festlegen, um die Anmeldung zu vereinfachen, aber das wäre eineverrücktSicherheitsrisiko. Tun Sie das nicht.
- Sie könnten die Anmeldung mit einem fest codierten Passwort automatisieren
expect
. Dies ist nicht sicherer als der vorherige Vorschlag. Tun Sie dies nicht. - Sie könnten ssh verwenden. Sie würden als Sudo-Benutzer einen SSH-Schlüssel erstellen, ihn in das .ssh-Verzeichnis Ihres Benutzers kopieren, ihm die Berechtigung für Ihren Benutzer erteilen, ihn an die .ssh/authorized_keys des Sudo-Benutzers anhängen und dann Folgendes verwenden:
ssh -i .ssh/sudouser_id_rsa sudouser@localhost <command>
. Es könnte funktionieren, aber es ist verrückt.
Das zweite Passwort kann einfach entfernt werden, indem Sie die sudoers-Datei bearbeiten visudo
und den sudouser als NOPASSWD festlegen. Dies ist eine häufigere Vorgehensweise. Sie können sogar die Befehle einschränken, die kein Passwort erfordern, was natürlich empfohlen wird, wenn Sie nur wenige Befehle auf diese Weise ausführen möchten. Beachten Sie jedoch, dass eine NOPASSWD-Richtlinie keine gute Idee ist, es sei denn, dieser sudo-Benutzer wird sehr ernst genommen. Generell ist es sowieso keine gute Idee.
Eine Konfiguration, die alle Befehle ohne Kennwortabfrage ausführen kann, sähe folgendermaßen aus:
sudouser ALL= NOPASSWD: ALL
Fazit: Ich verstehe nicht, warum Sie diese Konfiguration mit drei Konten verwenden. Wenn man das einmal beiseite lässt, ist es im Hinblick auf das, was Sie verlangt haben, am sinnvollsten, dem Sudo-Benutzer zu erlauben, bestimmte Befehle auszuführen, ohne nach einem Passwort gefragt zu werden.
Sie müssen jedoch vorsichtig sein – dadurch wird die Einrichtung weniger sicher.
Abgesehen davon ist es technisch möglich, innerhalb Ihrer Richtlinien eine Lösung ohne Authentifizierung zu erreichen, indem Sie sowohl die schlüsselbasierte SSH-Authentifizierung als auch NOPASSWD für den Sudo-Benutzer verwenden. Ihre Befehle würden also etwa so aussehen:
ssh -i .ssh/sudouser_id_rsa sudouser@localhost sudo whatever_i_like
Das geht offensichtlich weit über Unsicherheit hinaus – das ist einfach offen. Ich muss es eigentlich nicht sagen, aber tu das nicht.