是否可以在crontab中以root身份运行Bash文件?

时间:2009-06-18 22:15:51

标签: bash crontab

我需要定期运行Bash文件,并且必须以root身份运行。

这可能吗?

[root@file nutch-0.9]# locate crontab
/etc/crontab
/etc/sysconfig/crontab
/usr/bin/crontab
/usr/share/man/man1/crontab.1.gz
/usr/share/man/man1p/crontab.1p.gz
/usr/share/man/man5/crontab.5.gz
/usr/share/vim/vim71/syntax/crontab.vim
[root@file nutch-0.9]# 

6 个答案:

答案 0 :(得分:19)

是的,只需将其添加到root用户crontab;运行crontab -e命令。

cron存储其文件的地方可能有点眩晕,所以使用crontab -e命令确保它在正确的位置,我相信它会检查语法。

答案 1 :(得分:12)

你可以做到

crontab -e

以root身份。

答案 2 :(得分:7)

只需指定root作为/etc/crontab中的条目的用户:

0 0 *  * *  root  somecommand

或者,您也可以使用crontab -e作为root将命令添加到root的个人crontab中。

答案 3 :(得分:5)

无论如何,您都需要有权访问root用户帐户。

  1. 您可以按照建议
  2. 将其添加到根crontab
  3. 你可以按照建议使用sudo
  4. 你可以使用setuid位。 setuid位的问题是它需要是一个已编译的程序。如果它已编译,您可以“chmod 4755”并将文件的所有者设置为root,它将以root身份运行。如果没有编译,你可以用C(或任何其他编译的编程语言)编写一个简单的包装器,只需调用你的脚本,并在包装​​器上设置setuid,并确保包装器由root拥有。
  5. 我的建议?使用root crontab。这就是它的用途。

    此外,crontab中没有用户输入,如sth所示......语法为:

    # .---------------- minute (0 - 59) 
    # |  .------------- hour (0 - 23)
    # |  |  .---------- day of month (1 - 31)
    # |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ... 
    # |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7)  OR sun,mon,tue,wed,thu,fri,sat 
    # |  |  |  |  |
    # *  *  *  *  *  command to be executed
    

    如果你想以root用户身份在crontab中输入内容,只需登录你的root帐号,“crontab -e”和voila ... root crontab。

答案 4 :(得分:0)

我相信root的crontab中的所有条目都以root身份运行。你可以让它调用一个Bash脚本作为动作,它应该做你想要的。

答案 5 :(得分:-2)

这样做的一种方式(通过sudo):

  1. 您需要为帐户设置sudo prilvileges,而无需输入用户凭据
  2. 添加“sudo / path / to / command”(不带“)以root身份运行命令。您还可以向命令添加参数。