How to I automate a script to run as a different user with cron?

Red Squirrel

No Lifer
May 24, 2003
66,962
11,917
126
www.anyf.ca
I am trying to automate acme.sh (to renew Let's Encrypt certs) through cron but for whatever reason it's not working for other users except for the main one. I split up some of my sites into a few users and it works fine for the main user but all the others the script always fails. It's hard to tell how it's failing because it's not running in a way that I can see the output. If I login as that user and run it manually it works, but when I try to have it run through cron as that user, it fails.

Is there a way to simulate me actually running it manually, but do it through cron? Ex: I need the environment to be exactly the same as if I was logged in. When I log in as that user and run the script, it works fine.

I keep being burned by expired certs since the scripts are not running right.
 

Red Squirrel

No Lifer
May 24, 2003
66,962
11,917
126
www.anyf.ca
Ok so looks like I did in fact fix it. I was being thrown off by an email that says it was failing. Turns out there was a rogue cron job I had no idea bout. Aparantly you can put cron jobs in /var/spool/cron. Had no idea of this or how the job got there. Got rid of it so that should get rid of the email saying it fails. The OTHER jobs are still in /etc/crontab and I'm pretty sure they work now but I will need to wait a few months to know for sure as there is no easy way of getting output out of those due to the way the script runs, it's not standard output. If I go as root then su as each user and run it, it works, and before, it didn't. Though that does not prove if it will work in the cron environment.
 
  • Like
Reactions: ch33zw1z