Vraag Hoe een sudo-commando uitvoeren zonder wachtwoord?


Hoe doet de ubuntu gebruiker op de AWS-afbeeldingen voor Ubuntu Server 12.04 heeft wachtwoordloos sudo voor alle opdrachten wanneer er geen configuratie voor is /etc/sudoers?

Ik gebruik Ubuntu-server 12.04 op Amazon. Ik wil een nieuwe gebruiker toevoegen die hetzelfde gedrag vertoont als de standaard Ubuntu-gebruiker. Specifiek wil ik zonder wachtwoord sudo voor deze nieuwe gebruiker.

Dus ik heb een nieuwe gebruiker toegevoegd en ben gaan bewerken /etc/sudoers (met behulp van visudo natuurlijk). Vanaf het lezen van dat bestand leek het de standaard ubuntu gebruiker kreeg het wachtwoordloos sudo van lid zijn van de admin groep. Dus ik heb mijn nieuwe gebruiker daaraan toegevoegd. Wat niet werkte. Toen probeerde ik het toevoegen van de NOPASSWD richtlijn aan sudoers. Wat ook niet werkte.

Hoe dan ook, nu ben ik gewoon nieuwsgierig. Hoe doet de ubuntu gebruiker krijgt wachtwoordloze privileges als deze niet zijn gedefinieerd in /etc/sudoers. Wat is het mechanisme dat dit mogelijk maakt?


199
2017-09-23 09:30


oorsprong


Verwant: Sudo uitvoeren zonder wachtwoord? - Eliah Kagan


antwoorden:


Oké, ik heb het antwoord ontdekt en kan het net zo goed hier voor de volledigheid stellen. Aan het einde van /etc/sudoers er is wat ik dacht dat slechts een opmerking was:

#includedir /etc/sudoers.d

Maar dit omvat eigenlijk de inhoud van die map. Binnenin is het bestand /etc/sudoers.d/90-cloudimg-ubuntu. Welke de verwachte inhoud heeft

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

Dus dat is waar de sudo-configuratie voor de standaard ubuntu-gebruiker leeft.

Je zou dit bestand moeten bewerken met visudo. Met de volgende opdracht kunt u het juiste bestand met visudo bewerken.

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

En voeg een regel toe als:

aychedee ALL=(ALL) NOPASSWD:ALL

Aan het einde.


292
2017-09-23 10:27



Ik ben er vrij zeker van dat ik een volledige herstart moest doen. - aychedee
nieuwe sudo-regels worden gebruikt voor elke nieuwe aangemelde gebruiker - dus je moet opnieuw inloggen - bluszcz
'sudo service sudo restart' werkt :) - Laice
In latere versies (bijvoorbeeld 14.04) is het bestand inbegrepen /etc/sudoers.d/90-cloud-init-users (dus bewerken ... sudo visudo -f /etc/sudoers.d/90-cloud-init-users). Hoewel het schoner zou zijn om extra bestanden te maken dan het bewerken van de gegenereerde bestanden. Merk op dat bestanden die een bevatten . of eindigend in ~zullen niet worden opgenomen. - Molomby
@ Phil_1984_ Hoogstwaarschijnlijk is het toegevoegd als commentaar om compatibiliteit met andere (standaard?) Versies van sudo mogelijk te maken, die geen include bevatten, maar niet zouden worden onderbroken door een rare opmerking. (Normen zijn moeilijk! ;-) - jpaugh


Ik vond dat het eenvoudigste om te doen, om dit gedrag gemakkelijk te repliceren over meerdere servers, het volgende was:

sudo visudo

Verander deze regel:

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

naar deze regel:

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

En verplaats het onder deze lijn:

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

je zou nu dit moeten hebben:

# 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

dan voor elke gebruiker die sudo-toegang nodig heeft MET een wachtwoord:

sudo adduser <user> sudo

en voor elke gebruiker die sudo-toegang nodig heeft GEEN wachtwoord:

sudo adduser <user> admin

en ten slotte, voer dit uit:

sudo service sudo restart

En dat is het!

Bewerk: Mogelijk moet u de beheerdersgroep toevoegen omdat ik denk dat deze standaard niet bestaat.

sudo groupadd admin

U kunt ook de standaard AWS toevoegen ubuntu gebruiker van de admin groeperen via deze opdracht:

sudo usermod ubuntu -g admin

77
2018-04-03 21:45



Opmerking voor zichzelf: het is een conventie om minder beperkende rechten lager in de stapel te plaatsen. Maar het niet doen heeft geen invloed op de functionaliteit. - poweratom
Zoals jiminikiz uitlegde, moest ik de %beheerder na de % sudo op mijn Ubuntu GNOME 16.04 LTS. Bovendien is de groeps-id van de beheerder precies niet beheerder maar adm op mijn Ubuntu. Opnieuw opstarten was niet nodig. - hata


Kort antwoord zonder gebruik van een editor (getest op bash, erg riskant om uit te voeren op externe hosts).

Configureer sudo om te werken zonder wachtwoord voor de huidige gebruiker:

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

Controleer de bewerking met:

sudo visudo -c

Controleer of u sudo zonder een wachtwoord kunt gebruiken:

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

... of probeer het gewoon met:

sudo <Iets>

-1
2017-08-13 22:25



Dit is een behoorlijk gevaarlijk advies ... kopieer en plak dit verkeerd en je sluit jezelf af van je eigen server. Vandaar het advies om visudo te gebruiken. Het controleert of de syntaxis correct is voordat deze op schijf wordt opgeslagen. Dus voor iedereen die dit wil gebruiken. Doe het niet op een externe server waar u om geeft. Misschien wilt u daar een waarschuwing in opnemen in uw antwoord. - aychedee
Geen gebruik maken van visudo is een verschrikkelijk idee. Vertrouw me, ik weet het. - Bailey S
IMHO, een copy-paste is veiliger dan een handmatige bewerking. Een kleine vereenvoudiging: echo "$USER ALL=(ALL) NOPASSWD:ALL" | sudo tee -a /etc/sudoers - theartofrain
@theartofrain - Normaal gesproken ben ik het daarmee eens, maar visudo is vooral leuk omdat je het sudoers-bestand niet kunt verbreken en je dus niet uit je computer kunt blokkeren (of op zijn minst sudo). - Jon V
@JonV U kunt beheerdersrechten verliezen via visudo ook, maar meestal niet per ongeluk, omdat visudo slaat alleen wijzigingen op die volgens goed zijn gevormd de grammatica voor sudoers-bestanden. Meest fouten zijn syntactisch verkeerd, dus veroorzaken ze geen schade visudo. Als /etc/sudoers of een bestand in /etc/sudoers.d  is slecht gevormd, sudo weigert privileges voor iedereen op te waarderen als beveiligingsmaatregel, daarom niet gebruiken visudo is gevaarlijk. (Hoewel soms pkexec kan het repareren zonder opnieuw op te starten.) - Eliah Kagan