2009-06-18 30 views
11

我需要Bash文件定期运行,并且它必须是root用户。是否有可能在crontab中以root身份运行Bash文件?

这可能吗?

[[email protected] 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 
[[email protected] nutch-0.9]# 
+1

你也可以尝试在serverfault上询问这个问题。 – 2009-06-18 22:18:46

回答

18

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

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

+0

我列出了所有的crontab文件,你是不是应该修改? – omg 2009-06-18 22:27:10

+3

而不是直接修改一个crontab文件,whatsisname建议你使用“crontab -e”命令,它将编辑正确的crontab。 – ephemient 2009-06-18 23:01:41

0

我相信root的crontab中的所有条目都以root身份运行。你可以使它调用一个Bash脚本作为动作,它应该做你想做的事情。这样做的(通过sudo)的

-1

方式一:

  1. 您需要设置须藤prilvileges的帐户,而无需输入的用户凭据
  2. 添加“须藤/路径/要/命令运行“(不带”)以root身份运行命令也可以添加参数命令
4

只要指定root/etc/crontab用户的条目:。

0 0 * * * root somecommand 

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

+0

谢谢,顺便说一句,你能告诉我其他的crontab文件是什么? – omg 2009-06-18 22:28:05

4

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

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

我的建议是?使用root crontab。这就是它的目的。

此外,还有在crontab中没有用户输入由某事的建议......语法是:

# .---------------- 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 

如果你想在crontab中以root身份进入的东西,只需登录你的root帐户“ crontab -e“和瞧...... root crontab。

相关问题