Crontab权限被拒绝

时间:2012-11-27 10:32:13

标签: linux ubuntu permissions crontab minecraft

我在运行脚本时遇到crontab问题。

我的 sudo crontab -e 如下所示:

05 00 * * * /opt/mcserver/backup.sh
10 00 * * * /opt/mcserver/suspend.sh
05 08 * * * /sbin/shutdown -r +1
11 11 * * * /opt/mcserver/start.sh  <--- This isn't working

start.sh 如下所示:

#!/bin/sh
screen java -d64 -Xincgc -Xmx2048M -jar craftbukkit.jar nogui

并拥有这些权限(ls -l output)

-rwxr-xr-x 1 eve eve  72 Nov 24 14:17 start.sh

我可以使用sudo或不使用

从终端运行命令
./start.sh

但它不会从crontab开始。 如果我做

grep -iR "start.sh" /var/log

我得到以下输出

/var/log/syslog:Nov 27 11:11:01 eve-desk CRON[5204]: (root) CMD (eve /opt/mcserver/start.sh)
grep: /var/log/btmp: Permission denied
grep: /var/log/lightdm/x-0-greeter.log: Permission denied
grep: /var/log/lightdm/lightdm.log: Permission denied
grep: /var/log/lightdm/x-0.log: Permission denied

所以我的问题是,为什么它不起作用? 既然我的脚本在不使用sudo的情况下运行,我不一定需要把它放在sudo crontab中吗?

(我正在使用Ubuntu 12.10)

提前致谢, 菲利普

<小时/> 回答twalberg的回应

1。将craftbukkit上的所有者更改为root,以查看是否解决了问题。

-rw-r--r-- 1 root root 12084211 Nov 21 02:14 craftbukkit.jar

并在我的start.sh脚本中添加了一个显式cd:

#!/bin/sh
cd /opt/mcserver/
screen java -d64 -Xincgc -Xmx2048M -jar craftbukkit.jar nogui

2。我不太清楚你的意思。当我启动java时,我应该在start.sh文件中使用以下路径吗? (输出java

/usr/bin/java

3. 当我的服务器关闭时,屏幕终止。最后以“分离模式”启动屏幕是个好主意吗?

仍然得到相同的“权限被拒绝”错误。


问题解决了! 通过在屏幕上使用正确的标志,如下所示,它现在正在工作!

screen -d -m java -d64 -Xincgc -Xmx2048M -jar craftbukkit.jar nogui

非常感谢那些回答的人,特别是twalberg!

3 个答案:

答案 0 :(得分:1)

start.sh归“eve:eve”所有,您的crontab以root身份运行。

您可以通过运行以下命令来解决此问题

chown root:root /opt/craftbukkit/start.sh 

您的crontab将以root身份运行。

提示:在crontab中运行bash时总是使用绝对路径(它会使调试变得更容易)。

答案 1 :(得分:1)

以下是要检查的内容:

  1. root显然拥有start.sh的读取/执行权限,但craftbukkit.jar的权限是什么?root可以读取它吗?您可能还想在cd /path/to/where/craftbukkit.jar/is脚本中添加明确的start.sh
  2. java root的默认路径中cron是否为sudo?请注意,此路径不一定与您通过sujava或直接以root身份登录的路径相同 - 通常更受限制。使用craftbukkit.jarscreen的完整路径名来解决此问题。
  3. 由于screen -d -m ...不会以可用终端开头,因此您可能需要screen。希望您打算最终附加到每个/var/log/syslog实例并稍后终止它,或者您已经安排它在脚本完成后自动终止...
  4. cron条目显示grep确实执行了该脚本,因此出于上述原因之一(或其他我尚未注意到的其他原因)它必定已失败。
  5. 来自root的其他错误仅仅是由于您的非{{1}}用户无权读取这些特定文件(这是正常的,这是一件好事)。

答案 2 :(得分:0)

日志显示用户无法访问dir“/ var / log /”,您应该为cron的所有者设置日志文件的权限。