Wie führe ich den Sudo-Befehl ohne Passwort aus?

206

Wie hat der Benutzer ubuntu auf den AWS-Images für Ubuntu Server 12.04 für alle Befehle das kennwortlose sudo , wenn in /etc/sudoers keine Konfiguration vorhanden ist?

Ich verwende den Ubuntu-Server 12.04 bei Amazon. Ich möchte einen neuen Benutzer hinzufügen, der das gleiche Verhalten wie der Standardbenutzer von Ubuntu hat. Insbesondere möchte ich für diesen neuen Benutzer kennwortlose sudo .

Ich habe also einen neuen Benutzer hinzugefügt und bin zur Bearbeitung von /etc/sudoers gegangen (natürlich mit visudo). Beim Lesen dieser Datei schien es so, als würde der standardmäßige Benutzer ubuntu sein kennwortloses Konto sudo bekommen, weil er Mitglied der Gruppe admin war. Also habe ich meinen neuen Benutzer hinzugefügt. Was nicht funktionierte Dann habe ich versucht, die NOPASSWD -Anweisung zu sudoers hinzuzufügen. Was auch nicht funktioniert hat.

Jetzt bin ich nur neugierig. Wie erhält der Benutzer ubuntu kennwortlose Berechtigungen, wenn er nicht in /etc/sudoers definiert ist? Was ist der Mechanismus, der dies erlaubt?

    
aychedee 23.09.2012, 11:30

3 Antworten

301

Okay, ich habe die Antwort entdeckt und kann sie hier ebenfalls der Vollständigkeit halber hinzufügen. Am Ende von /etc/sudoers gibt es meiner Meinung nach nur einen Kommentar:

#includedir /etc/sudoers.d

Dies schließt jedoch tatsächlich den Inhalt dieses Verzeichnisses ein. Innerhalb dessen ist die Datei /etc/sudoers.d/90-cloudimg-ubuntu . Welcher hat den erwarteten Inhalt

# ubuntu user is default user in cloud-images.
# It needs passwordless sudo functionality.
ubuntu ALL=(ALL) NOPASSWD:ALL

Hier lebt also die Sudo-Konfiguration für den Standardbenutzer von Ubuntu.

Sie sollten diese Datei mit visudo bearbeiten. Mit dem folgenden Befehl können Sie die korrekte Datei mit visudo bearbeiten.

sudo visudo -f /etc/sudoers.d/90-cloudimg-ubuntu

Und fügen Sie eine Zeile hinzu wie:

aychedee ALL=(ALL) NOPASSWD:ALL

Am Ende.

    
aychedee 23.09.2012, 12:27
79

Ich habe festgestellt, dass das Folgende am einfachsten ist, um dieses Verhalten einfach auf mehrere Server zu replizieren:

sudo visudo

Ändern Sie diese Zeile:

# Members of the admin group may gain root privileges
%admin  ALL=(ALL) ALL

zu dieser Zeile:

# Members of the admin group may gain root privileges
%admin  ALL=(ALL) NOPASSWD:ALL

Und verschieben Sie es unter diese Zeile:

# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL

Sie sollten jetzt Folgendes haben:

# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#

Defaults        env_reset
Defaults        mail_badpass
Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

# Host alias specification

# User alias specification

# Cmnd alias specification

# User privilege specification
root    ALL=(ALL:ALL) ALL

# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL

# Members of the admin group may gain root privileges
%admin  ALL=(ALL) NOPASSWD:ALL

# See sudoers(5) for more information on "#include" directives:

#includedir /etc/sudoers.d

dann für jeden Benutzer, der Sudo-Zugriff benötigt MIT einem Kennwort: :

sudo adduser <user> sudo

und für jeden Benutzer, der Sudo-Zugriff benötigt OHNE Kennwort :

sudo adduser <user> admin

und führen Sie schließlich Folgendes aus:

sudo service sudo restart

Und das ist es!

Bearbeiten: Möglicherweise müssen Sie die Administratorgruppe hinzufügen, da ich nicht glaube, dass sie standardmäßig vorhanden ist.

sudo groupadd admin

Sie können den Standardbenutzer AWS ubuntu der Gruppe admin auch mit diesem Befehl hinzufügen:

sudo usermod ubuntu -g admin

Hinweis: Wie in @hata erwähnt, müssen Sie je nach Name möglicherweise adm als Administratorgruppe verwenden welche Version von Ubuntu verwendet wird.

    
jiminikiz 03.04.2014 23:45
-1

Kurze Antwort ohne Verwendung eines Editors (getestet auf bash, sehr riskant auf entfernten Hosts auszuführen).

Konfigurieren Sie Sudo so, dass es für den aktuellen Benutzer ohne Kennwort funktioniert:

echo "$USER ALL=(ALL) NOPASSWD:ALL" | sudo tee -a /etc/sudoers

Überprüfen Sie die Bearbeitung mit:

sudo visudo -c

Überprüfen Sie, ob Sie Sudo ohne Kennwort verwenden können:

sudo cat /etc/sudoers | grep "$USER"

... oder probieren Sie es einfach mit:

sudo <anything>
    
user315445 14.08.2014 00:25

Tags und Links