我正在尝试运行一个应用程序(代码服务器) 作为sudo
用户。此应用程序基本上允许我在线运行 Visual Studio Code。我创建了以下服务文件:(vsc.service
)
[Unit]
Description=Running Visual Studio Code Online
[Service]
User=dev001
Group=dev001
WorkingDirectory=/home/dev001/projects
Type=simple
ExecStart=/usr/bin/sudo /usr/bin/vsc.sh
[Install]
WantedBy=multi-user.target
如您所见,服务文件包含用户和组信息。
这是我想要作为服务运行的脚本(/usr/bin/vsc.sh
)
cd /home/dev001/projects
code-server -p 80 --allow-http --password somepassword
它运行良好,但问题是运行该进程的用户仍然保持为 root,但以 dev001 的身份工作。这是通过正在运行的服务进行终端访问的屏幕截图:
如果您对该问题有任何解决方案,请帮助我。
编辑01:
我利用 nginx 的帮助进行了端口转发(反向代理)以解决该问题,直到 code-server 成熟并具有直接在端口 80 或 443 上运行的守护进程支持。我使用这种方法获得的一个好处是,我能够安装 letsencrypt ssl。所以我的环境正在按我需要的方式运行。还有其他问题,但它们与此线程无关。
答案1
您的屏幕截图有什么相关性?您显示的是 shell 的用户和目录。我可能误解了,但我认为这里存在一些混淆。
您拥有的 SystemD 服务应在您以用户身份启动机器时启动。您可以使用或或类似命令dev001
找到它。这里的关键不是查看您的 shell,而是查看实际进程的所有者。systemctl
ps aux | grep vsc.sh
sudo systemctl enable vsc.service
sudo systemctl start vsc.service
sudo ps aux | grep vsc
您应该看到您的服务正在由文件中设置的用户运行vsc.service
。