it-swarm.com.de

Wie führe ich eine Anwendung mit Sudo ohne Passwort aus?

... aber dennoch für Anwendungen benötigt werden, die Administratorrechte benötigen?

Um Folgendes zu ermöglichen:

$ Apache2ctl restart
httpd not running, trying to start
(13)Permission denied: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
Unable to open logs

$ Sudo !!
Sudo Apache2ctl restart             #no password asked
$                                   #works!

Als Referenz habe ich dieses Setup auf Amazon e3-Instanzen gesehen

Irgendeine Idee?

40
tutuca

Sie müssen die sudoers-Datei bearbeiten. Seien Sie darauf hingewiesen, dass der Erfolg Ihnen ein weniger sicheres System gibt und ein Misserfolg Sudo kaputt machen kann. Bearbeiten Sie die sudoers-Datei IMMER mit Sudo visudo, da visudo nach Fehlern sucht und die Datei nicht speichert, wenn welche gefunden werden.

Es ist eine schlechte Idee, allen Benutzern die Erlaubnis zu geben, als root ohne Passwort zu laufen. Lassen Sie einfach die ausführbare Datei durch, die Sie benötigen (Apache2ctl). Fügen Sie Folgendes ganz unten in die Datei ein:

YOURNAME ALL = NOPASSWD: /usr/bin/Apache2ctl

Wenn Sie möchten, können Sie den Pfad zu einer ausführbaren Datei durch "ALL" ersetzen und erhalten so ein vollständiges Sudo ohne Passwort.

Ersetzen Sie YOURNAME durch Ihren Benutzernamen und drücken Sie Ctrl + X zu speichern und zu beenden. Wenn ein Fehler aufgetreten ist, wird das Zurücksetzen, Bearbeiten oder Speichern trotzdem angeboten.

Stellen Sie sicher dass Sie den vollständigen Pfad zu einer ausführbaren Datei verwenden:
dh. /usr/bin/Apache2ctl statt nur Apache2ctl. Dies ist wichtig, da Sudo ohne explizite Angabe des Pfads jedem Programm namens apachectl auf dem aktuellen Pfad des Benutzers die Ausführung als root ermöglicht.

51
Mark Paskal

Die eigentliche Antwort auf diese Frage kann kompliziert sein, da Sudo sehr leistungsfähig ist und so konfiguriert werden kann, dass es coole Dinge ausführt. Dies wird ausführlich in der Dokumentation erklärt.

Die kurze Antwort lautet Sudo visudo in einem Terminal. Wenn Sie visudo zum ersten Mal ausführen, werden Sie gefragt, welchen Editor Sie bevorzugen. nano ist im Allgemeinen am einfachsten zu bedienen, wählen Sie jedoch den Editor aus, mit dem Sie am besten vertraut sind. Sie müssen entscheiden, auf wen Sie Zugriff gewähren möchten. es könnte ALL für jeden sein (eine sehr schlechte Idee) , ein Benutzer, oder eine Systemgruppe. Gruppen wird ein% -Zeichen vorangestellt. Wenn Sie beispielsweise allen Benutzern in der Gruppe steroid_users Root-Rechte gewähren möchten, ohne dass für alle Befehle ein Kennwort erforderlich ist, fügen Sie Folgendes hinzu:

%steroid_users ALL=(ALL) NOPASSWD: ALL

beenden Sie die Datei und speichern Sie sie. Wenn alles gut geht und Sie Mitglied der Gruppe steroid_users sind, können Sie Sudo *some-command* ausgeben, ohne dass Sie Ihr Passwort eingeben müssen.

Denken Sie daran, dass jeder, der Zugriff auf Ihr Terminal hat, während Sie angemeldet sind - oder wenn Sie ssh für die schlüsselbasierte Authentifizierung eingerichtet haben, oder (noch schlimmer) das Passwort aktiviert haben Kostenlose Sitzungs-Logins - vollständiger und uneingeschränkter Zugriff auf Ihr gesamtes System. Wenn Sie mehrere Benutzer auf Ihrem System haben oder wenn dies ein Dateiserver ist, können alle Benutzerdateien gefährdet sein, da root alles tun kann!

Wenn Sie einen Fehler machen, gibt visudo eine Fehlermeldung aus und speichert keine Änderungen an der Datei. Dies verhindert, dass Sudo komplett zerstört wird. Sie sollten unbedingt die Dokumentation lesen. Sudo ist so konzipiert, dass Benutzer nur so viel Zugriff haben, dass sie ihre Arbeit erledigen können, ohne dass das gesamte System verfügbar gemacht werden muss. Es kann vorteilhaft sein, nur für bestimmte Befehle einen kennwortfreien Zugriff zu gewähren.

Ich hoffe das hilft.

25
Chris

Sie müssen die Datei '/ etc/sudoers' bearbeiten (dazu gibt es den Befehl 'visudo'.), Um NOPASSWD hinzuzufügen, bevor Sie die Liste der zulässigen Befehle für Ihren Benutzer oder Ihre Gruppe anzeigen. Wenn sich Ihr Benutzer in der Gruppe "admin" befindet, müssen Sie Folgendes tun:

%admin ALL=(ALL) NOPASSWD: ALL

Überprüfen Sie https://help.ubuntu.com/community/Sudoers , übrigens.

5
korjjj

Sie KÖNNTEN das Flag nopasswd zur Benutzerliste hinzufügen, aber dies entfernt nicht alle Fragen zu Kennwörtern. Nur der erste wird gefragt.

  1. Sudo bearbeiten: Sudo visudo (Sie MÜSSEN Sudo verwenden. Dies ist eine Admin-Datei.)
  2. Fügen Sie Ihren Benutzer mit dem Flag nopasswd nach der Admin-Zeile (am Ende) hinzu. Zum Beispiel:
    cyrex ALL = NOPASSWD: ALL oder cyrex ALL = (ALL) NOPASSWD: ALL
3
Luis Alvarado
Sudo visudo
%<GROUP> ALL = NOPASSWD: Apache2ctl

oder

Sudo visudo
%<GROUP> ALL = NOPASSWD: /etc/init.d/Apache2

Ich denke, das würde es tun.

Aber seien Sie vorsichtig beim Entfernen von Passwörtern für Sudo.

2
Alex

Nun zur einfachen Antwort! Keine Möglichkeit, irgendetwas durcheinander zu bringen oder Ihre Installation zu verfälschen.

Geben Sie einfach ein paar Mal Ihr Passwort ein und Sie müssen es nie wieder eingeben! Auf diese Weise können Sie der Gruppe "root" ein lokales Administratorkonto hinzufügen, das in einer Vorlage, die die Superuser-Berechtigungen der gesamten Gruppe "root" gewährt, nicht kommentiert wird. Sie können meine Sicherheitsbedenken/-lösung für dieses Verfahren im späteren Teil dieses Beitrags lesen.

% username & ist die globale Variable für Ihren Benutzernamen (ersetzen Sie sie durch den gewünschten Benutzernamen)

Schritt 1: Öffnen Sie ein Terminalfenster und geben Sie "Sudo usermod -a -G root %username%" ein

Schritt 2: Dann kopieren/einfügen ...

Sudo sed -i 's/# auth       sufficient pam_wheel.so trust/auth       sufficient pam_wheel.so trust/g' /etc/pam.d/su`

Schritt 2 OR

Sudo nano /etc/pam.d/su`

Gehe zu Zeile 19 und entferne das "#" vor # auth sufficient pam_wheel.so trust (kann bei manchen eine andere Zeilennummer sein)

* Mit dem ersten Befehl wird% username% zur Gruppe "root" hinzugefügt.

Mit dem zweiten/dritten Befehl können alle Mitglieder der Gruppe "root" Superuser ohne Kennwort sein, statt nur dem Benutzer "root" die Berechtigungen für Authentifizierungen zu erteilen.


Endnote:

Spielen Sie nicht mit /etc/sudoers ... Es gibt eine Menge Checks/Balances, die die 'su'-Authentifizierung durchlaufen muss. Die Superuser-Authentifizierung verwendet das gleiche Verfahren wie alle anderen Anmeldungsauthentifizierungen. "/etc/security/access.conf" enthält das Layout für die Zugriffskontrolle über TCP/IP (192.168.0.1) und über Telnet-Dienste (tty1 & tty2 & tty3 ... etc). Dies ermöglicht eine genauere Filterung pro Anwendung über das Transportprotokoll. Wenn Sicherheit Ihr Anliegen ist, sollte Ihr Anliegen auf Bedrohungen durch Fernzugriff/Code gerichtet sein, im Gegensatz dazu, dass jemand Ihren Computer berührt, wenn Sie den Raum verlassen !!!

Essen für Paranoia (schreibe dieses nicht einfach in die Rezension):

Sudo sed -i 's/#-:ALL EXCEPT (wheel) shutdown sync:LOCAL/-:ALL EXCEPT (wheel) shutdown sync:LOCAL/g' /etc/security/access.conf

^ Dies blockiert den Zugriff auf die Konsole für alle Benutzer, die nicht Mitglied des Systems oder von root sind. Manchmal installieren Programme Benutzernamen/Gruppen, die ausgenutzt werden!

0