Jak spustit příkaz sudo bez hesla?

199

Jak má uživatelubuntu na obrázcích AWS pro Ubuntu Server 12.04 bez heslasudo pro všechny příkazy, když v něm není žádná konfigurace v/etc/sudoers?

Používám server Ubuntu 12.04 na Amazonu. Chci přidat nového uživatele, který má stejné chování jako výchozí uživatel Ubuntu. Konkrétně chci pro tohoto nového uživatele bez heslasudo.

Takže jsem přidal nového uživatele a šel upravovat/etc/sudoers (samozřejmě pomocí visudo). Z přečtení tohoto souboru se zdálo, že výchozí uživatelubuntu dostal heslosudo bez hesla z toho, že je členem skupinyadmin. Tak jsem přidal svého nového uživatele. Což nefungovalo. Potom jsem zkusil přidatNOPASSWD direktivu nasudoers. Které také nefungovalo.

Mimochodem, teď jsem jen zvědavá. Jak uživatelubuntu obdrží oprávnění bez hesla, pokud nejsou definována v/etc/sudoers. Jaký mechanismus to dovoluje?

    
dané aychedee 23.09.2012 11:30

3 odpovědi

293

Dobře, objevil jsem odpověď, takže ji mohu dát úplně úplně. Na konci/etc/sudoers je to, co jsem si myslel, že je to jen komentář:

#includedir /etc/sudoers.d

Toto však obsahuje obsah tohoto adresáře. Uvnitř je soubor /etc/sudoers.d/90-cloudimg-ubuntu. Který má očekávaný obsah

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

Takže tam je konfigurace sudo pro výchozí uživatele ubuntu.

Tento soubor byste měli upravit pomocí funkce visudo. Následující příkaz vám umožní upravit správný soubor pomocí visudo.

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

Přidejte řádek jako:

aychedee ALL=(ALL) NOPASSWD:ALL

Na konci.

    
odpověděl aychedee 23.09.2012 12:27
77

Zjistil jsem, že nejjednodušší věc, kterou lze udělat, aby bylo možné toto chování snadno replikovat na více serverech, bylo následující:

sudo visudo

Změňte tento řádek:

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

k tomuto řádku:

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

Přesuňte ji pod tento řádek:

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

Měli byste mít toto:

# 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

pak pro každého uživatele, který potřebuje přístup sudo S heslem :

sudo adduser <user> sudo

a pro každého uživatele, který potřebuje přístup sudo bez hesla :

sudo adduser <user> admin

a nakonec spusťte toto:

sudo service sudo restart

A to je to!

Upravit: Možná budete muset přidat skupinu administrátorů, protože si nemyslím, že je ve výchozím nastavení.

sudo groupadd admin

Můžete také přidat výchozí uživateleubuntu AWS do skupinyadmin pomocí tohoto příkazu:

sudo usermod ubuntu -g admin
    
odpověděl jiminikiz 03.04.2014 23:45
-1

Krátká odpověď bez použití editoru (testován na bash, velmi riskantní pro spouštění na vzdálených počítačích).

Konfigurace sudo pracovat bez hesla pro stávajícího uživatele:

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

Zkontrolujte editaci pomocí:

sudo visudo -c

Ověřte, zda můžete používat sudo bez hesla:

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

... nebo zkuste to jednoduše:

sudo <anything>
    
odpověděl user315445 14.08.2014 00:25