Search code examples
bashsudochromium

Need to run chromium as normal user from root script


I have a kiosk that shuts down every day using rtcwake, and this uses root user. I've used && to execute the boot script after rtcwake completes, however it then starts the browser as root causing problems.

This is the command I use: echo debian | sudo -S rtcwake -m mem -u -t $(date +%s -d '3 days 7:45') && sudo -u debian -i bash $HOME/kiosk/bin/startup.sh &.

The sudo command does work to some extent. It calls the debian user, and executes the correct script, however, it still screws up my chromium preferences.

Here is the startup script:

echo debian | sudo -S hwclock -w

export HOME=/home/debian

#log boot time

echo "Booting at" $(date) >> $HOME/kiosk/bin/logs/boot.log


#echo debian | sudo -S service connman restart


echo debian | sudo -S at 15:30 -f $HOME/kiosk/bin/shutdown.sh

crontab -u debian crontab.txt

bash $HOME/git.sh

#sudo -i -u debian

#start kiosk

export DISPLAY=:0
chromium-browser --kiosk --disable-gpu 
http://localhost/kiosk/Client/main.html &

#update ip
bash /home/debian/git.sh &

I'm wondering what could be causing chrome to be executed as root. I have no idea what is going wrong.


Solution

  • You must enter a password to log into a new user shell.

    The command needs to be modified as follows:

    echo debian | sudo -S rtcwake -m mem -u -t $(date +%s -d '3 days 7:45') && echo debian | sudo -S -u debian -i bash $HOME/kiosk/bin/startup.sh &
    

    This avoids needing a password to log in as normal Debian user, and executes the script.