Я пытаюсь запустить приложение ( сервер кода ) как пользователь 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. Вот скриншот доступа к терминалу через работающую службу:
Скриншот окна терминала vscode
Пожалуйста, помогите мне, если у вас есть какое-либо решение проблемы.
Редактировать 01:
Я воспользовался помощью nginx, чтобы выполнить переадресацию портов (обратный прокси-сервер) для решения проблемы, пока сервер кода не станет зрелым и не получит демонизированную поддержку работающий непосредственно на порте 80 или 443. Единственное преимущество, которое я получил с этим подходом, состоит в том, что я могу установить ssl letsencrypt так что нет, все мое окружение работает так, как мне нужно. Есть и другие вопросы, но они не относятся к этой теме.
Какое отношение имеет ваш снимок экрана? Вы показываете пользователя и каталог вашей оболочки. Я мог бы неправильно понять, но я думаю, что здесь есть некоторая путаница.
Служба SystemD, которую вы используете, должна запускаться при загрузке машины от имени пользователя dev001
. Вы можете найти это, используя systemctl
или ps aux | grep vsc.sh
или подобное. Ключ здесь не в том, чтобы взглянуть на вашу оболочку, а на собственника самого процесса.
sudo systemctl enable vsc.service
sudo systemctl start vsc.service
sudo ps aux | grep vsc
Вы должны увидеть, что ваша служба запускается пользователем, заданным в вашем файле vsc.service
.