Vraag Sudoers-bestand, schakel NOPASSWD in voor gebruiker, alle opdrachten


Voorwoord

Dit is een vrij complexe vraag met betrekking tot het Sudoers-bestand en de sudo-opdracht in het algemeen.

OPMERKING: Ik heb deze wijzigingen aangebracht op een speciale machine waarop Ubuntu Desktop 13.04 draait, die ik louter voor leerdoeleinden gebruik. Ik begrijp dat het een enorm beveiligingsrisico is om NOPASSWD sudo in te schakelen.

Vraag

Aanvankelijk was mijn enige wijziging in het sudoers-bestand (/ etc / sudoers) één regel, een gebruikersspecificatie die 'nicholsonjf' had moeten inschakelen om alle opdrachten met sudo uit te voeren zonder een wachtwoord in te voeren (zie de regel die begint met 'nicholsonjf '):

# 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
nicholsonjf    ALL=NOPASSWD: ALL

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

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

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

#includedir /etc/sudoers.d

Dit werkte echter niet, en ik werd steeds om mijn wachtwoord gevraagd telkens als ik een opdracht uitvoerde als 'nicholsonjf'. Ik kon sudo-opdrachten alleen als 'nicholsonjf' uitvoeren nadat ik 'nicholsonjf' uit de sudo- en beheerdersgroepen had verwijderd.

Kan iemand uitleggen waarom dit werkte?

Is het omdat de gebruiker 'nicholsonjf' sudo-rechten overnam van de twee groepspecificaties van 'admin' en 'sudo' (hieronder weergegeven in het sudoers-bestand), die de 'nicholsonjf'-gebruikersspecificatie negeerden omdat ze verder in de configuratiebestand?


105
2017-08-19 00:45


oorsprong


opmerking: ALL = NOPASSWD: ALL moet ALL = (ALL) NOPASSWD: ALL of anders werkt het niet ... - André Verwijs
zie ook dit antwoord: askubuntu.com/questions/139723/sudo-does-not-ask-for-password/... - JB.
Mogelijk duplicaat van Waarom werkt de optie sudoers NOPASSWD niet? - Anwar
@ AndréVerwijs bedankt, het werkt voor mij - netawater


antwoorden:


Je toegevoegde regel is overschreven. Van man sudoers:

Wanneer meerdere vermeldingen overeenkomen voor een gebruiker, worden ze in volgorde toegepast.   Waar er meerdere overeenkomsten zijn, wordt de laatste overeenkomst gebruikt (wat niet het geval is)   noodzakelijkerwijs de meest specifieke match).

In jouw geval nicholsonjf was lid van de groep sudo dus gold voor hem deze regel:

%sudo   ALL=(ALL:ALL) ALL

Als u items in wilt overschrijven /etc/sudoers zet gewoon de nieuwe items achter hen aan.

De nieuwe invoer zou eruit moeten zien

myuser ALL=(ALL) NOPASSWD:ALL voor een enkele gebruiker, of

%sudo ALL=(ALL) NOPASSWD:ALL voor een groep.


102
2017-09-03 00:55



Voor een complete oplossing zou ik graag iets willen zien NOPASSWD in dit antwoord ... - Daniel Alder
Ik denk dat de oplossing zou moeten zijn: %sudo ALL=(ALL) NOPASSWD:ALL - Daniel Alder
@DanielAlder: de specificatielijn van de vraag nicholsonjf ALL=NOPASSWD: ALL is juist. Het was gewoon op een verkeerde plaats zoals ik in het antwoord heb uitgelegd. ------ De Runas specificatie - in jouw geval (ALL) - is optioneel. Als u de specificatie weglaat, kunt u de opdrachten uitvoeren als root en je kunt niet gebruiken -u en -g opties van sudo. - pabouk
Dit is een slechter veiligheidsrisico omdat het meerdere gebruikers zonder wachtwoord toegang geeft. Als het jouw persoonlijke pc is, dan is dat niet belangrijk - misschien. Ik zou gewoon de persoonlijke lijn verplaatsen, om mee te gaan. - Mark Williams
Een toevoeging, in plaats van correctie, als je iets gebruikt dat gebaseerd is op debian / ubuntu (kan over het algemeen worden toegepast, niet elders te zien). Je absolute beste practice-inzet is om aangepaste commando's toe te voegen aan een bestand in /etc/sudoers.d/ en sudoers te verlaten zelf te beheren door de pakketbeheerder. - Aquarion


Voor één gebruiker:

superuser ALL=(ALL) NOPASSWD:ALL

Voor een groep:

%supergroup  ALL=(ALL) NOPASSWD:ALL

109
2018-01-16 15:28



Voordat ik dit antwoord las, deed ik het %sudo ALL=NOPASSWD: ALL en het werkt. Ben ik de enige die de uitgebreide Backus-Naur-vorm echt moeilijk te begrijpen vindt? - Vince
@Vince Als je je commando gebruikt, kan ik het niet sudo zonder wachtwoord als gebruiker zonder sudo-privileges. Bijv. sudo -u root -i werkt, maar sudo -u git -i niet. - NeverEndingQueue
Dit is een veel nuttiger antwoord dan het geaccepteerde, dat hoewel het de vraag van het OP beantwoordt, waarschijnlijk niet is wat de meeste mensen op deze pagina bereiken via Google. - Mahmoud Al-Qudsi


Als Vince heeft vermeld in een opmerking, je kunt deze regel gebruiken:

%sudo ALL=NOPASSWD: ALL

(Dit wijkt af van de regels die worden weergegeven in die  antwoorden, en het loste het probleem voor mij op.)


-1
2017-10-04 09:53



@Eliah dit is niet zo verschillend van de andere antwoorden. Het enige dat het doet is de tijdelijke aanduiding vervangen supergroup in het antwoord van Fedir met sudo. Wat nu, een andere gebruiker voor de groep wheel? Of een andere groep die de gebruiker toevallig gebruikt? - muru
@muru "Het vervangt alleen de tijdelijke aanduiding supergroup in het antwoord van Fedir met sudo."  Wat? Vervangen supergroup met sudo in de rij %supergroup ALL=(ALL) NOPASSWD:ALL opbrengsten %sudo ALL=(ALL) NOPASSWD:ALL, niet %sudo ALL=NOPASSWD: ALL. - Eliah Kagan
Dat is aantoonbaar erger, omdat NOPASSWD nu alleen voor root is als de doelgebruiker. Dus, het beantwoordt de vraag zelfs niet correct! - muru
@muru Wat is is zelfs niet betwistbaaris echter een vervanging van supergroup met sudo. Dit is zijn eigen antwoord, geen dankbericht of een kopie van een ander antwoord. Maar ja, ik ben het ermee eens: tenzij ze dat bedoelen, dit zal voor de meeste gebruikers niet zo goed zijn als de methoden in de andere antwoorden. (Maar, gelet op de vraag die zegt: "alle commando's", niet "alle doelgebruikers", denk ik niet dat dit effectief is, zelfs niet om de gestelde vraag te beantwoorden.) - Eliah Kagan
Dit werkte voor mij en ik wilde delen met andere gebruikers :) (verwijder mijn commentaar indien gewenst). - E. Fortes