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


Wie funktioniert das? ubuntu Benutzer auf den AWS-Images für Ubuntu Server 12.04 haben kein Passwort sudo für alle Befehle, wenn es keine Konfiguration dafür gibt /etc/sudoers?

Ich benutze Ubuntu Server 12.04 auf Amazon. Ich möchte einen neuen Benutzer hinzufügen, der das gleiche Verhalten wie der Standard-Ubuntu-Benutzer hat. Insbesondere möchte ich passwortlos sudo für diesen neuen Benutzer.

Also habe ich einen neuen Benutzer hinzugefügt und ging zum Bearbeiten /etc/sudoers (mit visudo natürlich). Beim Lesen dieser Datei schien es der Standard zu sein ubuntu Benutzer bekam es passwortlos sudo von einem Mitglied der admin Gruppe. Also habe ich meinen neuen Benutzer hinzugefügt. Was hat nicht funktioniert. Dann habe ich versucht, das hinzuzufügen NOPASSWD Richtlinie zu sudoers. Was auch nicht funktioniert hat.

Wie auch immer, jetzt bin ich nur neugierig. Wie funktioniert das? ubuntu Benutzer erhalten passwortlose Privilegien, wenn sie nicht definiert sind /etc/sudoers. Was ist der Mechanismus, der dies ermöglicht?


199
2017-09-23 09:30


Ursprung


Verbunden: Sudo ohne Passwort ausführen? - Eliah Kagan


Antworten:


Okay, ich habe die Antwort gefunden, also möge sie hier der Vollständigkeit halber auch hier stehen. Am Ende von /etc/sudoers Da ist, was ich dachte, war nur ein Kommentar:

#includedir /etc/sudoers.d

Dies beinhaltet jedoch tatsächlich den Inhalt dieses Verzeichnisses. Darin befindet sich die Datei /etc/sudoers.d/90-cloudimg-ubuntu. Welches hat den erwarteten Inhalt

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

Das ist der Ort, an dem die sudo-Konfiguration für den Standard-Ubuntu-Benutzer lebt.

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üge eine Zeile hinzu wie:

aychedee ALL=(ALL) NOPASSWD:ALL

Am Ende.


292
2017-09-23 10:27



Ich bin mir ziemlich sicher, dass ich einen vollständigen Neustart durchführen musste. - aychedee
Neue sudo-Regeln werden für jeden neuen angemeldeten Benutzer verwendet - Sie müssen sich also mindestens erneut anmelden - bluszcz
'sudo service sudo restart' funktioniert :) - Laice
In späteren Versionen (zB 14.04) ist die mitgelieferte Datei /etc/sudoers.d/90-cloud-init-users (so zu bearbeiten .. sudo visudo -f /etc/sudoers.d/90-cloud-init-users). Es wäre jedoch sauberer, zusätzliche Dateien zu erstellen, als die generierte zu bearbeiten. Beachten Sie, dass Dateien mit a . oder endend in ~werden nicht enthalten sein. - Molomby
@ Phil_1984_ Am wahrscheinlichsten wurde es als Kommentar hinzugefügt, um die Kompatibilität mit anderen (Standard?) Versionen von sudo zu ermöglichen, die keine Includes zulassen, aber nicht durch einen merkwürdigen Kommentar gestolpert würden. (Standards sind hart! ;-) - jpaugh


Ich fand, dass die einfachste Sache, um dieses Verhalten auf mehreren Servern zu replizieren, das Folgende war:

sudo visudo

Ändern Sie diese Zeile:

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

zu dieser Linie:

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

Und bewege es unter diese Linie:

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

Du solltest 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 Passwort:

sudo adduser <user> sudo

und für jeden Benutzer, der sudo Zugriff benötigt Ohne Passwort:

sudo adduser <user> admin

und schließlich:

sudo service sudo restart

Und das ist es!

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

sudo groupadd admin

Sie können auch das Standard-AWS hinzufügen ubuntu Benutzer zum admin Gruppe über diesen Befehl:

sudo usermod ubuntu -g admin

77
2018-04-03 21:45



Hinweis an mich selbst: Es ist eine Konvention, weniger einschränkende Berechtigungen im Stapel zu verschieben. Wenn Sie es nicht tun, wirkt sich dies nicht auf die Funktionalität aus. - poweratom
Wie jiminikiz erklärte, musste ich die %Administrator nach dem % sudo auf meinem Ubuntu GNOME 16.04 LTS. Plus, die ID der Administratorengruppe ist genau dies nicht Administrator aber adm auf meinem Ubuntu. Es war kein Neustart erforderlich. - hata


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

Konfigurieren Sie sudo so, dass es ohne ein Passwort für den aktuellen Benutzer 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 Passwort verwenden können:

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

... oder probiere es einfach mit:

sudo <irgendetwas>

-1
2017-08-13 22:25



Das ist ein ziemlich gefährlicher Ratschlag ... kopiere und füge das falsch ein und du wirst dich aus deinem eigenen Server aussperren. Daher der Hinweis, visudo zu verwenden. Es prüft, ob die Syntax vor dem Speichern auf Festplatte korrekt ist. Also für jeden, der das nutzen möchte. Tun Sie es nicht auf einem Remote-Server, der Ihnen wichtig ist. Möglicherweise möchten Sie in Ihrer Antwort eine Warnung dazu einfügen. - aychedee
Visudo nicht zu benutzen ist ein schrecklich Idee. Vertrau mir, ich weiß. - Bailey S
IMHO ist ein Copy-Paste sicherer als eine manuelle Bearbeitung. Eine kleine Vereinfachung: echo "$USER ALL=(ALL) NOPASSWD:ALL" | sudo tee -a /etc/sudoers - theartofrain
@theartofrain - Normalerweise würde ich zustimmen, aber visudo ist besonders schön, wenn es dir nicht erlaubt wird, die sudoers-datei zu brechen und dich nicht von deinem Rechner (oder zumindest sudo) zu sperren. - Jon V
@ JonV Du kannst Adminrechte über verlieren visudo Auch, aber normalerweise nicht zufällig, weil visudo speichert nur Änderungen, die nach die Grammatik für Sudoers-Dateien. Die meisten Fehler sind syntaktisch falsch, also verursachen sie keinen Schaden visudo. Ob /etc/sudoers oder eine Datei in /etc/sudoers.d  ist schlecht geformt, sudo Weigert sich, Privilegien für jedermann als Sicherheitsmaßnahme zu erhöhen, weshalb nicht verwendet wird visudo ist gefährlich. (Obwohl manchmal pkexec kann es beheben ohne Neustart.) - Eliah Kagan