【问题标题】:Is it possible to make a Bash file run as root in crontab? [closed]是否可以让 Bash 文件在 crontab 中以 root 身份运行? [关闭]
【发布时间】:2010-11-04 04:03:01
【问题描述】:

我需要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]# 

【问题讨论】:

  • 你也可以尝试在 serverfault 上问这个问题。

标签: bash crontab


【解决方案1】:

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

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

【讨论】:

  • 我已经列出了所有的 crontab 文件,你的意思是我应该修改哪个?
  • whatsisname 建议您使用“crontab -e”命令来编辑正确的 crontab,而不是自己直接修改 crontab 文件。
【解决方案2】:

你可以这样做

crontab -e

作为根用户。

【讨论】:

  • 应该是sudo crontab -e? @FreeMemory
  • @Alper 你不需要sudo 而成为root
【解决方案3】:

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

【讨论】:

    【解决方案4】:

    一种方法(通过 sudo):

    1. 您需要设置 sudo 权限才能在不输入用户凭据的情况下运行帐户
    2. 添加“sudo /path/to/command”(不带“)以root身份运行命令。您还可以向命令添加参数。

    【讨论】:

      【解决方案5】:

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

      0 0 *  * *  root  somecommand
      

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

      【讨论】:

      • 谢谢,顺便说一句,你能告诉我其他 crontab 文件的用途吗?
      • /usr/bin 中的 crontab 文件是在您键入“crontab -e”时打开编辑器的可执行文件。 /usr/share/man 下面的文件是您在键入“man crontab”时获得的手册页。 /usr/share/vim*/sytax/crontab.vim 是 vim 的特殊语法高亮(为 crontab 文件激活)。
      • 这对我不起作用。我收到消息 /bin/sh:1root: not found
      • 这会导致 cron 将“root”解释为命令。
      【解决方案6】:

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

      1. 您可以按照建议将其添加到根 crontab 中
      2. 您可以按照建议使用 sudo
      3. 您可以使用 setuid 位。 setuid 位的问题是它需要是一个已编译的程序。如果已编译,您可以“chmod 4755”并将文件的所有者设置为root,它将以root身份运行。如果它没有被编译,你可以用 C(或任何其他编译的编程语言)编写一个小型包装器,它只调用你的脚本,并在包装​​器上设置 setuid,并确保包装器归 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”,然后瞧...root crontab。

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-08-15
      • 1970-01-01
      • 2014-05-21
      • 1970-01-01
      • 2014-06-23
      • 1970-01-01
      • 2012-08-28
      • 1970-01-01
      相关资源
      最近更新 更多