简体   繁体   中英

Running python cron script as non-root user

I have a small problem running a python script as a specific user account in my CentOS 6 box.

My cron.d/cronfile looks like this:

5 17 * * * reports /usr/local/bin/report.py > /var/log/report.log 2>&1

The account reports exists and all the files that are to be accessed by that script are chowned and chgrped to reports . The python script is chmod a+r . The python script starts with a #!/usr/bin/env python .

But this is not the problem. The problem is that I see nothing in the logfile. The python script doesn't even start to run! Any ideas why this might be?

If I change the user to root instead of reports in the cronfile, it runs fine. However I cannot run it as root in production servers.

If you have any questions please ask :)

/e: If I do sudo -u reports python report.py it works fine.

Cron jobs run with the permissions of the user that the cron job was setup under. IE Whatever is in the cron table of the reports user, will be run as the reports user.

If you're having to so sudo to get the script to run when logged in as reports , then the script likely won't run as a cron job either. Can you run this script when logged in as reports without sudo ? If not, then the cron job can't either. Make sense?

Check your logs - are you getting permissions errors?

There are a myriad of reasons why your script would need certain privs, but an easy way to fix this is to set the cron job up under root instead of reports . The longer way is to see what exactly is requiring elevated permissions and fix that. Is it file permissions? A protected command? Maybe adding reports to certain groups would allow you to run it under reports instead of root .

*be ULTRA careful if/when you setup cron jobs as root

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM