Crontab Permission Denied
Solution 1
Here are some things to check:
root
obviously has read/execute permissions onstart.sh
, but what are the permissions oncraftbukkit.jar
- canroot
read it? You may also want to add an explicitcd /path/to/where/craftbukkit.jar/is
in yourstart.sh
script.- Is
java
inroot
's default path withincron
? Note that this path is not necessarily the same as the one that you get viasudo
,su
or directly logging in as root - it's typically much more restricted. Use full path names to bothjava
andcraftbukkit.jar
to work around that. - Since
screen
will not start with a terminal available, you may needscreen -d -m ...
instead. Hopefully, you intend to eventually attach to eachscreen
instance and terminate it later, or you have arranged for it to terminate automatically when the script is done... - The
/var/log/syslog
entry shows thatcron
did 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
grep
are simply due to the fact your non-root
user 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 almost 2 years
I'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 working
And the start.sh looks like this:
#!/bin/sh screen java -d64 -Xincgc -Xmx2048M -jar craftbukkit.jar nogui
and have these permissions (ls -l output)
-rwxr-xr-x 1 eve eve 72 Nov 24 14:17 start.sh
I can run the command from the terminal, either using sudo or not
./start.sh
But it wont start with crontab. If i do
grep -iR "start.sh" /var/log
I 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 denied
So 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.jar
and 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 nogui
2. 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/java
3. 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 nogui
Thanks a lot to those who answered, and especially twalberg!
-
Philip Larson over 11 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 11 yearsWhy doesn't sudo crontab have acces to these /var/log files? And how/ (and should) I change them?
-
twalberg over 11 yearsNot really relevant, as
root
has permission to read and executestart.sh
(although we don't know what the permissions are on, e.g.craftbukkit.jar
and any other files thatroot
will eventually need to touch as a result of runningstart.sh
. -
Philip Larson over 11 yearsAdded response above, due to better formatting possibilities.