답변:
systemd에게 다음과 같이 서비스를 실행하도록 지시하십시오
sudo
.
sudo
그것과 아무 관련이 없습니다.
일반적으로 systemd 는 unit 파일 의 섹션에 User=
and Group=
지시문이 있는 특정 사용자 / 그룹으로 서비스를 실행하도록 지시 [Service]
합니다.
그것들을 root로 설정하십시오 (또는 root로 실행하는 것이 기본값이므로 제거하십시오).
User=root
. 내 대답을 참조하십시오.
지우려면 systemd
시스템 서비스는 기본적으로 루트로 실행하지만, 기본 동작 및있는 시스템 서비스를 실행 차이가 여전히 존재한다 User=root
.
에 설명 된대로 양산 프로세스에 환경 변수 경우,이 변수 만 설정 User=
집합입니다 :
$USER, $LOGNAME, $HOME, $SHELL
이 결과를 확인하기 위해 테스트했습니다. 따라서 위의 변수 중 하나가 필요한 루트로 시스템 서비스를 실행하려면을 설정해야합니다 User=root
.
임시 솔루션이지만 핀치에서 작동하도록했습니다.
/usr/bin/sudo /bin/bash -lc 'bundle exec rails server -e demo -p 80'
다음과 같이 시스템 단위 파일에서 sudo 권한이있는 사용자로 실행할 수 있습니다.
[Unit]
Description=Rails Webserver
After=syslog.target
[Service]
Type=simple
User=ubuntu
WorkingDirectory=/var/www/webserver
ExecStart=/usr/bin/sudo /bin/bash -lc 'bundle exec rails server -e demo -p 80'
Restart=always
KillSignal=SIGQUIT
[Install]
WantedBy=multi-user.target
sudo
하면 시작 속도가 약간 느려집니다. 그리고 불필요합니다.
systemd
루트 권한으로 장치 파일을 실행합니다.