Crontab Permission Denied
Solution 1
Here are some things to check:
rootobviously has read/execute permissions onstart.sh, but what are the permissions oncraftbukkit.jar- canrootread it? You may also want to add an explicitcd /path/to/where/craftbukkit.jar/isin yourstart.shscript.- Is
javainroot's default path withincron? Note that this path is not necessarily the same as the one that you get viasudo,suor directly logging in as root - it's typically much more restricted. Use full path names to bothjavaandcraftbukkit.jarto work around that. - Since
screenwill not start with a terminal available, you may needscreen -d -m ...instead. Hopefully, you intend to eventually attach to eachscreeninstance and terminate it later, or you have arranged for it to terminate automatically when the script is done... - The
/var/log/syslogentry shows thatcrondid in fact execute the script, so it must have failed for one of the above reasons (or something else I haven't noticed yet) - The other errors from
grepare simply due to the fact your non-rootuser does not have permission to read those specific files (this is normal, and a good thing).
Solution 2
start.sh is owned by "eve:eve" and your crontab is running as root.
You can solve this by running following command
chown root:root /opt/craftbukkit/start.sh
Your crontab will be running as root though.
Tip: When running bash in crontab always use absolute paths (it will make debugging a lot easier).
Philip Larson
Updated on June 04, 2022Comments
-
Philip Larson 11 monthsI'm having problem with crontab when I'm running a script.
My sudo crontab -e looks like this:
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 workingAnd the start.sh looks like this:
#!/bin/sh screen java -d64 -Xincgc -Xmx2048M -jar craftbukkit.jar noguiand have these permissions (ls -l output)
-rwxr-xr-x 1 eve eve 72 Nov 24 14:17 start.shI can run the command from the terminal, either using sudo or not
./start.shBut it wont start with crontab. If i do
grep -iR "start.sh" /var/logI get the following output
/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 deniedSo my question is, why isn't it working? And since my script run without using sudo, I don't necessarily need to put it in sudo crontab?
( and I'm using Ubuntu 12.10 )
Thanks in advance, Philip
Answer to twalberg's response1. Changed owner on craftbukkit to root, to see if that fixed the problem.
-rw-r--r-- 1 root root 12084211 Nov 21 02:14 craftbukkit.jarand also added an explicit cd in my start.sh script as such:
#!/bin/sh cd /opt/mcserver/ screen java -d64 -Xincgc -Xmx2048M -jar craftbukkit.jar nogui2. I'm not quite sure what you mean here. Should I use the following path in my start.sh file when i start java? (output from which java)
/usr/bin/java3. When my server closes, screen is terminated. Is it a good idea to start screen in "detached mode" anyway?
Still got the same "Permission denied" error.
Problem solved! By using the proper flag on screen, as below, it is now working as it should!
screen -d -m java -d64 -Xincgc -Xmx2048M -jar craftbukkit.jar noguiThanks a lot to those who answered, and especially twalberg!
-
Philip Larson over 10 yearsThanks for answering, but this didn't help. /var/log/syslog:Nov 27 11:41:01 eve-desk CRON[5445]: (root) CMD (/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 Changed the owner to: -rwxr-xr-x 1 root root 72 Nov 24 14:17 start.sh -
Philip Larson over 10 yearsWhy doesn't sudo crontab have acces to these /var/log files? And how/ (and should) I change them? -
twalberg over 10 yearsNot really relevant, asroothas permission to read and executestart.sh(although we don't know what the permissions are on, e.g.craftbukkit.jarand any other files thatrootwill eventually need to touch as a result of runningstart.sh. -
Philip Larson over 10 yearsAdded response above, due to better formatting possibilities.