node
Node.js 애플리케이션에 대한 Upstart 작업이 있는데 .js 가 아닌 사용자 로 Node를 실행하고 싶습니다 root
. setuid
작업 구성에서 사용할 때 작업을 시작하려고 할 때마다 my-app stop/waiting
. 그러나 생략 하고 with 를 setuid
사용 하면 예상대로 작동합니다.exec
sudo
node
저는 시스템 사용자로 생성했습니다 . 내가 아는 한 해당 사용자는 모든 관련 파일과 디렉터리에 액세스할 수 있습니다. 제가 사용하고 있는 Upstart 버전은 1.12.1 입니다.
다음으로 구성 setuid
:
script
setuid node
chdir /var/app/my-app
exec nodejs server.js
end script
다음을 사용한 구성과 비교 sudo
:
script
chdir /var/app/my-app
exec sudo -u node nodejs server.js
end script
setuid
Upstart의 행동과 sudo
하나는 실패하고 다른 하나는 성공하게 만드는 행동 사이에는 어떤 차이점이 있나요 ?
답변1
스탠자 는 블록 setuid
안에 있어서는 안 되며 script
전역적입니다. 이것이 아마도 당신의 직업이 실패한 이유일 것입니다.
사용 setuid
하면모두작업 단계는 사용자가 지정한 대로 실행되며 이를 변경할 수 없습니다. 다른 사용자로 데몬만 실행하려면 피하고 대신 sudo
사용하세요 start-stop-daemon
. 이는 데몬을 포크할 때 특히 중요합니다. 우분투를 확인하세요신생 요리책, 자세한 내용은 11.43.2장을 참조하세요.