Portál AbcLinuxu, 18. července 2025 09:02


Dotaz: sudo nefunguje v crontab

5.1.2011 13:43 pavel
sudo nefunguje v crontab
Přečteno: 413×
Odpovědět | Admin
Dobrý den,

mám skript v bashi, ve kterém používám příkaz sudo. Pokud jej spustím z konzole, proběhne vše v pořádku. Pokud skript spouštím z cronu, jakýkoliv příkaz se sudo ve skriptu nefunguje. Zkoušel jsem i absolutní cestu k sudo, bez úspěchu.

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

5.1.2011 14:03 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: sudo nefunguje v crontab
Odpovědět | | Sbalit | Link | Blokovat | Admin

A co od nás očekáváte? Že vás politujeme? S informacemi, které jste poskytl, se totiž bohužel víc udělat nedá…

A teď vážně: sudo v úlohách spouštěných přes cron použít lze, takže pokud nenapíšete, co konkrétně jste použil jako úlohu v cron tabulce a jak konkrétně vypadalo pravidlo v sudoers, těžko se dočkáte nějaké užitečné rady.

5.1.2011 15:02 pavel
Rozbalit Rozbalit vše Re: sudo nefunguje v crontab
Pokud mi funguje skript se sudo v konzole a nefunguje v crontab, předpokládám, že sudoers mám v pořádku.

Výpis ze sudoers:
pavel ALL=NOPASSWD: /sbin/ifconfig
Nefunguje mi nic - např. skript:
#!/bin/bash

sudo /sbin/ifconfig >/home/pavel/vypisifconfig
Spustím v konzole, ale nespustí se v cronu.
5.1.2011 15:12 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: sudo nefunguje v crontab
Z jakého cronu to pouštíte? Pokud je to systémový cron, tam se rovnou určuje uživatel, pod kterým bude daná úloha spuštěna, a úlohy z adresářů /etc/cron.* se spouští pod rootem – alespoň to tak myslím platí v běžných implementacích cronu. Takže vaše použití sudo pro získání práv roota mi připadá zbytečné.

Mimochodem, ifconfig se na Linuxu používal naposledy s jádry řady myslím 2.0, takže už je asi deset nebo patnáct let zastaralý a nemusí fungovat správně. Místo toho byste měl používat příkaz ip z balíku iproute2.
5.1.2011 15:25 pavel
Rozbalit Rozbalit vše Re: sudo nefunguje v crontab
ifconfig byl uveden a odzkoušen jako nefunkční příklad. Je to cron spouštěný pod uživatelem pavel, zadávám jej pomocí příkazu crontab -e, edituji ve vimu a uložím. Pokud se zeptám na výpis pomocí crontab -l, vypíše se mi:

55 14 * * * /home/pavel/mujskript
5.1.2011 15:28 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: sudo nefunguje v crontab
A do mailu nepřijde vůbec nic? Zkuste ještě do specifikace interpreteru přidat '-x'.
5.1.2011 15:21 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: sudo nefunguje v crontab

Změnil jsem jen jméno uživatele a domácí adresář a přesně takhle mi to funguje, takže chybu nejspíš děláte někde jinde. Opravdu vypadá váš příklad přesně takto? Máte správně nastavená všechna potřebná práva?

Mimochodem: ifconfig není dobrý příklad. Za prvé by se už dvanáct let neměl v Linuxu používat, za druhé při spuštění bez parametrů funguje i pod normálním uživatelem. A druhá poznámka: pište, prosím, "nespustí se" pouze v případě, že jste si jistý, že se ten skript opravdu nespustí (pak by ale problém nemohl být v použití sudo), ne pokud se spustí, ale nedělá to, co od něj očekáváte.

5.1.2011 15:41 iwk
Rozbalit Rozbalit vše Re: sudo nefunguje v crontab
Odpovědět | | Sbalit | Link | Blokovat | Admin
Nemas v
/etc/sudoers
uvedene

Defaults requiretty

ak hej, staci zakomentovat...
5.1.2011 15:51 pavel
Rozbalit Rozbalit vše Re: sudo nefunguje v crontab
Sakra chlape, kdybys byl blízko, tak bych tě pozval na pivo!

To je ono, po zakomentování to jede.

Mnohokrát děkuji.

Vyřešeno.
5.1.2011 15:54 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: sudo nefunguje v crontab

Tak jsem si tam schválně zkusil tuto direktivu přidat a sudo pak vypíše chybové hlášení:

  sudo: sorry, you must have a tty to run sudo

Takže poučení pro příště zní: číst chybová hlášení a pokud jim nerozumíte, přidat je do dotazu.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.