需要 运行 chromium 作为普通用户从 root 脚本
Need to run chromium as normal user from root script
我有一个每天使用 rtcwake 关闭的信息亭,它使用 root 用户。我在 rtcwake 完成后使用 && 执行启动脚本,但是它随后以 root 身份启动浏览器导致问题。
这是我使用的命令:
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 &
.
sudo 命令在某种程度上确实有效。它调用 debian 用户,并执行正确的脚本,但是,它仍然搞砸了我的 chromium 偏好。
这是启动脚本:
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 &
我想知道是什么导致 chrome 以 root 身份执行。我不知道出了什么问题。
如果您使用 sudo
执行命令,它不会像 $HOME
那样更改环境变量。由于每个用户的设置都存储在 $HOME
中,如果需要这样的配置文件,这会影响执行的程序。例如检查这个:
sudo -u debian bash -c 'echo $HOME'
它将打印调用用户的主文件夹,而不是通过 -u
指定的用户的主文件夹。 sudo
命令支持 -H
命令行选项来处理这个问题,但是它是否有效取决于所使用的安全警察。
在这种情况下,您可以使用 su
命令代替 sudo
作为解决方案:
... && su debian -c chromium
因为 su
本身是由 root
执行的,所以不会要求您输入密码。
您必须输入密码才能登录新用户 shell。
命令需要修改如下:
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 &
这避免了需要密码才能以普通 Debian 用户身份登录并执行脚本。
我有一个每天使用 rtcwake 关闭的信息亭,它使用 root 用户。我在 rtcwake 完成后使用 && 执行启动脚本,但是它随后以 root 身份启动浏览器导致问题。
这是我使用的命令:
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 &
.
sudo 命令在某种程度上确实有效。它调用 debian 用户,并执行正确的脚本,但是,它仍然搞砸了我的 chromium 偏好。
这是启动脚本:
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 &
我想知道是什么导致 chrome 以 root 身份执行。我不知道出了什么问题。
如果您使用 sudo
执行命令,它不会像 $HOME
那样更改环境变量。由于每个用户的设置都存储在 $HOME
中,如果需要这样的配置文件,这会影响执行的程序。例如检查这个:
sudo -u debian bash -c 'echo $HOME'
它将打印调用用户的主文件夹,而不是通过 -u
指定的用户的主文件夹。 sudo
命令支持 -H
命令行选项来处理这个问题,但是它是否有效取决于所使用的安全警察。
在这种情况下,您可以使用 su
命令代替 sudo
作为解决方案:
... && su debian -c chromium
因为 su
本身是由 root
执行的,所以不会要求您输入密码。
您必须输入密码才能登录新用户 shell。
命令需要修改如下:
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 &
这避免了需要密码才能以普通 Debian 用户身份登录并执行脚本。