루트 액세스로 실행되도록 Systemd Service 구성


21

Raspbian Jessie에서 Systemd로 설정된 node.js 응용 프로그램 형식의 서비스가 있으며 자체 사용자 계정을 사용하고 있습니다. 그러나 필요한 권한이 없기 때문에 서비스가 올바르게 실행되지 않는 것으로 나타났습니다. 내가 설치 한 노드 모듈 중 하나에 루트 액세스 권한이 필요합니다. sudo로 응용 프로그램을 수동으로 실행하면 모든 것이 잘 작동합니다.

sudo로 서비스를 실행하도록 systemd에 지시하는 방법이 있습니까?


2
단위 파일은 어떻게 생겼습니까? 질문에 추가 하시겠습니까? 일반적으로 systemd루트 권한으로 장치 파일을 실행합니다.
Thomas

답변:


31

systemd에게 다음과 같이 서비스를 실행하도록 지시하십시오 sudo.

sudo 그것과 아무 관련이 없습니다.

일반적으로 systemd 는 unit 파일 의 섹션에 User=and Group=지시문이 있는 특정 사용자 / 그룹으로 서비스를 실행하도록 지시 [Service]합니다.

그것들을 root로 설정하십시오 (또는 root로 실행하는 것이 기본값이므로 제거하십시오).


가이드를 사용하여 구성 할 때 특정 사용자를 사용하도록 설정했습니다. 그러나 제 경우에는 적절하지 않습니다. 기본적으로 루트로 실행하기 위해 이것을 제거했으며 이제 모든 것이 작동합니다!
Luke

2
루트로 실행하는 것은로 실행하는 것과는 다릅니다 User=root. 내 대답을 참조하십시오.
마크 스 토스 버그

이 파일은 어디에서 편집 할 수 있습니까?
Matthew


15

지우려면 systemd시스템 서비스는 기본적으로 루트로 실행하지만, 기본 동작 및있는 시스템 서비스를 실행 차이가 여전히 존재한다 User=root.

에 설명 된대로 양산 프로세스에 환경 변수 경우,이 변수 만 설정 User=집합입니다 :

$USER, $LOGNAME, $HOME, $SHELL

이 결과를 확인하기 위해 테스트했습니다. 따라서 위의 변수 중 하나가 필요한 루트로 시스템 서비스를 실행하려면을 설정해야합니다 User=root.


감사합니다! 그것이 내가 가진 응용 프로그램에서 나를 위해 일한 유일한 것입니다
Pedro Torres

NB User = root로 설정하면 Group = root도 설정해야합니다 :) superuser.com/a/1452367/39364
rogerdpack

2

임시 솔루션이지만 핀치에서 작동하도록했습니다.

/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가 필요하지 않은지를 설명하고 올바른 방법을 보여줍니다. 둘째, 어쨌든 웹 응용 프로그램을 루트로 실행해서는 안됩니다. 셋째, 웹 응용 프로그램은 nginx와 같은 일반 웹 서버 뒤에 있어야합니다.
Michael Hampton

나는 당신의 어떤 점에서도 당신과 동의하지 않을 것입니다. 그러나 나 자신과 같은 누군가가 서버의 빠른 속도로 서버를 원한다면 이것이 가능한 옵션입니다.
daino3

최대한 빨리. 분명히 사용 sudo하면 시작 속도가 약간 느려집니다. 그리고 불필요합니다.
Michael Hampton

@MichaelHampton 백도어를 작성하려고 하는데이 답변이 도움이된다는 것을 알았습니다!
P. Soutzikevich

1

이 경우 기본적으로 서비스가 루트로 실행중인 시스템 사용자로이를 실행하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.