Vraag Hoe voer ik specifieke sudo-opdrachten uit zonder een wachtwoord?


Op een bepaalde machine moet ik vaak rennen sudo commando's zo nu en dan. Ik vind het prima om het wachtwoord in te voeren sudo in de meeste gevallen.

Er zijn echter drie sudo commando's ik wil rennen zonder wachtwoord in te voeren:

  • sudo reboot
  • sudo shutdown -r now
  • sudo shutdown -P now

Hoe kan ik deze opdrachten uitsluiten van wachtwoordbeveiliging naar sudo?


187
2017-07-03 08:31


oorsprong


Gelijkwaardig aan Hoe kan de uitvoering worden toegestaan ​​zonder de sudo te gebruiken? - fouric


antwoorden:


Gebruik de NOPASSWD richtlijn

U kunt de NOPASSWD richtlijn in uw /etc/sudoers het dossier.

Als uw gebruiker wordt gebeld user en je gastheer wordt gebeld host je zou deze regels kunnen toevoegen /etc/sudoers:

user host = (root) NOPASSWD: /sbin/shutdown
user host = (root) NOPASSWD: /sbin/reboot

Dit zal de gebruiker toestaan user om de gewenste commando's aan te zetten host zonder een wachtwoord in te voeren. Alle andere sudoed-commando's vereisen nog steeds een wachtwoord.

De opdrachten die zijn opgegeven in de sudoers het dossier moet volledig gekwalificeerd zijn (d.w.z. het absolute pad gebruiken om de opdracht uit te voeren) zoals beschreven in de sudoers man pagina. Het opgeven van een relatief pad wordt beschouwd als een syntaxisfout.

Als het commando eindigt met een volgnummer / karakter en wijst naar een map, de gebruiker kan elke opdracht in die map uitvoeren (maar niet in submappen daarin). In het volgende voorbeeld, de gebruiker user kan elke opdracht in de map uitvoeren /home/someuser/bin/:

user host = (root) NOPASSWD: /home/someuser/bin/

Notitie: Gebruik altijd het commando visudo om de te bewerken sudoers bestand om er zeker van te zijn dat je jezelf niet uit het systeem sluit - voor het geval je per ongeluk iets incorrects schrijft in de sudoers het dossier. visudo zal je gewijzigde bestand opslaan op een tijdelijke locatie en zal dat ook doen enkel en alleen overschrijf het echte sudoers bestand als het gewijzigde bestand zonder fouten kan worden geparseerd.

Gebruik makend van /etc/sudoers.d in plaats van wijzigen /etc/sudoers

Als een alternatief voor het bewerken van de /etc/sudoers bestand, kunt u de twee regels toevoegen aan een nieuw bestand in /etc/sudoers.d bijv. /etc/sudoers.d/shutdown. Dit is een elegante manier om verschillende wijzigingen in de te scheiden sudo rechten en laat ook het origineel sudoers bestand onaangeroerd voor eenvoudiger upgrades.

Notitie: Nogmaals, je zou het commando moeten gebruiken visudo om het bestand te bewerken om er zeker van te zijn dat je jezelf niet uit het systeem sluit:

sudo visudo -f /etc/sudoers.d/shutdown 

Dit zorgt er ook automatisch voor dat de eigenaar en de rechten van het nieuwe bestand correct zijn ingesteld.

Als sudoers is verknald

Als je het niet hebt gebruikt visudo om je bestanden te bewerken en dan per ongeluk verknald /etc/sudoers of verknoeide een bestand in /etc/sudoers.d dan wordt je buitengesloten sudo.

De oplossing zou kunnen zijn om de bestanden te repareren met behulp van pkexec wat een alternatief is voor sudo.

Repareren /etc/sudoers:

pkexec visudo

Repareren /etc/sudoers.d/shutdown:

pkexec visudo -f /etc/sudoers.d/shutdown

Als het eigendom en / of de machtigingen voor welke dan ook onjuist zijn sudoers bestand, wordt het bestand genegeerd door sudo dus je kunt jezelf ook buitengesloten voelen in deze situatie. Nogmaals, je kunt gebruiken pkexec om dit te repareren.

De juiste machtigingen zouden als volgt moeten zijn:

$ ls -l /etc/sudoers.d/shutdown 
-r--r----- 1 root root 86 Jul 16 15:37 /etc/sudoers.d/shutdown

Gebruik pkexec zoals dit om te repareren eigendom en rechten:

pkexec chown root:root /etc/sudoers.d/shutdown
pkexec chmod 0440 /etc/sudoers.d/shutdown

253
2017-07-03 08:43



ik hoop dat dit alleen van toepassing is op deze 2 commando's, en ik zal de rest van het systeem of andere commando's niet verpesten? - Z9iT
De twee regels verwijzen specifiek naar deze twee opdrachten. Als user wordt niet op andere manieren gegeven sudo rechten kunnen door deze gebruiker geen andere opdrachten worden uitgevoerd. Kijk even naar man sudo en man sudoers. - mgd
Aanvankelijk werd ik geconfronteerd met een chmod-probleem .. een work-out toegevoegd in het antwoord .. thanx @mgd - Z9iT
@StanKurdziel Ik heb geprobeerd met deze regel op Mac OS X Yosemite en het werkte prima: mgd ALL=(root) NOPASSWD: /var/root/test. Ik ben gebruiker mgd en ALL middelen "van alle gastheren". /var/root/test is een eenvoudig "Hello World" shellscript met rechten: -rwx------ 1 root wheel 27 12 Jun 09:54 /var/root/test. ik maakte Nee andere wijzigingen aan het systeem. - mgd
@Michael lees alstublieft de man-pagina. Het staat daar allemaal geschreven. Om het te citeren: U kunt echter ook opdrachtregelargumenten opgeven (inclusief jokertekens). Als alternatief kunt u "" opgeven om aan te geven dat de opdracht alleen mag worden uitgevoerd zonder argumenten op de opdrachtregel. - mgd