Vraag Hoe een cron-taak uit te voeren met behulp van de opdracht sudo


Is het mogelijk om een cron baan die de sudo opdracht?

Graag willen:

 sudo rm somefile

98
2017-08-09 17:51


oorsprong


Welkom Sayem Siam, Bekijk de antwoorden op deze vraag askubuntu.com/questions/2368/how-do-i-setup-cron-job. zoals ik denk dat je vraag hier al eerder aan AU is gesteld - stephenmyall
Ik probeer sudo uit te voeren wat wachtwoord vereist maar hoe kan ik wachtwoord van cron- dossier giv - sayem siam
@sayemsiam je hoeft sudo niet te plaatsen, bewerk gewoon de root crontab. - Braiam
Zien dit antwoord. - sampablokuper


antwoorden:


Ik zal niet begrijpen in hoeverre dit een slecht idee is; simpel gezegd, rennen sudoin crontab moet uw wachtwoord ergens in leesbare tekst worden opgeslagen.

Het is een slecht idee.


Het volgende is de voorkeursmethode voor het uitvoeren van administratieve taken via cron. Omdat je niet echt hoeft te schrijven sudo in de crontab, als je de crontab van root aanpast.

Gebruik de crontab van de root

Voer de volgende opdracht uit:

sudo crontab -e

Dit opent roots crontab. sudo is niet nodig om uw opdracht in deze context uit te voeren, omdat deze wordt aangeroepen als root hoe dan ook.

Daarom zou je eenvoudig het volgende toevoegen aan de crontab van root.

@hourly rm somefile

Nu, als u Absoluut wil onveilig zijn en risico's nemen met je wachtwoord, het volgende zal je commando uitvoeren vanuit je eigen crontab, en je wachtwoord automatisch invoeren als daarom wordt gevraagd sudo.

Nog een keer, dit wordt niet aanbevolen.


Schrijf in je eigen crontab je opdracht als volgt:

@hourly echo "password" | sudo -S rm somefile

Het voor de hand liggende nadeel hiervan is dat, als iemand ooit toegang heeft tot uw crontab, uw wachtwoord leesbaar in leesbare vorm kan worden gelezen.

Je zou dit niet moeten doen.


195
2017-08-09 18:03



Ik snap het, heel erg bedankt - sayem siam
Blij dat het werkt! Wees voorzichtig met eventuele beveiligingslekken die je achterlaat. Ze komen misschien later terug om je te achtervolgen. - SirCharlo
@SirCharlo Waarom gebruiken rootgebruikerscrontab in plaats van de systeembrede crontab /etc/crontab? - Eliah Kagan
@Elijah waarom niet? - SirCharlo
Dit antwoord mist het doel omdat het de subtiliteiten die beschikbaar zijn in uw sudoers bestand, zoals sudo-groepen zonder wachtwoordvereisten. - brent


Als u het script uit een van de cron-mappen plaatst (/etc/cron.*) dan hoeft u sudo niet te gebruiken omdat dit als root draait.

Als u crontab gebruikt, dan wilt u de crontab van root gebruiken. Dit zal het als root uitvoeren, en ook geen sudo nodig hebben.

sudo crontab -e

26
2017-08-09 18:02



Ik zou ook het commando in /etc/cron.hourly/something plaatsen. Dat is waar deze mappen voor zijn. - John S Gruber
Nee. Je zou het in /etc/cron.SOMETHING/SCRIPT kunnen plaatsen, maar ik zou niet allebei doen. Beide zouden ongeveer dezelfde functie geven, hoewel je met crontab een beetje meer macht zou hebben over hoe vaak / wanneer dingen lopen. - tgm4883
Ik had duidelijk moeten maken dat ik dat als alternatief bedoelde. Bedankt. - John S Gruber


Voer het volgende commando uit in terminal

sudo visudo

De volgende regel toegevoegd aan het einde van het bestand:

vidyadhar  ALL= NOPASSWD: /bin/rm

In het bovenstaande voorbeeld is vidyadhar de gebruikersnaam en wordt er geen wachtwoord gevraagd als u rm-opdracht uitvoert via vidyadhar.


0
2017-08-09 18:07



Hmm .. Dan elk kwaadaardig commando, zoals sudo rm -rf 'slash' (voer die opdracht niet uit), uitgevoerd vanaf die gebruiker, zou geen wachtwoord vereisen. Ik weet het niet, het voelt onveilig, niet? - SirCharlo
Ya ik weet het. Je aanpak is goed. Maar ik gebruik de bovenstaande benadering voor het geven van rechten aan andere gebruikers om bepaalde services te stoppen / starten. - Vidyadhar
Dit is een uiterst slecht idee. Doe dit alsjeblieft niet. - bkanuka
Kan zijn vidyadhar ALL= NOPASSWD: /bin/rm somefile zou veiliger zijn. - Wernfried Domscheit
Dit is een vreselijk idee. Jij gaf algemene sudo-machtigingen rm. In plaats daarvan geeft u sudo-rechten aan een script dat uw comand, inclusief rm of anderen in dat script, uitvoerbaar maakt en geeft u sudo-rechten aan dat script. <username> ALL=(ALL) NOPASSWD: /home/<username>/bin/<script>, dat zou veel veiliger zijn. - R J