linux - Why my sudo command in bash cannot be executed via crontab? -
here's simple runme.sh:
#!/bin/bash /bin/echo 'cbeykfkt' | /usr/bin/sudo -s /bin/su -c "whoami;/etc/init.d/iptables stop" in which, 'cbeykfkt' password current user: samx, has root privilege (have appended "samx all=(all:all) all" in visudo). intend stop iptables @ specific time in crontab, nothing happened iptables service when time up. nevertheless, if execute bash runme.sh, works fine.
my crontab follows:
58 16 * * * /bin/bash /home/data/samx/runme.sh 2>&1 > /home/data/samx/log_cron nothing printed log_cron file. there wrong code? in advance.
p.s. error printed after moved 2>&1 end:
sudo: sorry, must have tty run sudo
does know what's mean?
authentification utilities sudo reading password controlling terminal (e.g. thru /dev/tty, see tty(4)), not standard input. (but pass -s sudo ask read password on stdin)
you use expect (which able deal terminals), configure /etc/sudoers disable password checking.
for example, have line like
%sudo all=nopasswd: in /etc/sudoers file. allow member of sudo group use sudo without typing password.
this of course opens security hole in computer. @ own risk.
at last, carefully wrap script in setuid executable (write carefully such program in c, chmod u+s executable).
Comments
Post a Comment