내 Upstart 작업이 sudo에서는 작동하지만 setuid에서는 작동하지 않는 이유는 무엇입니까?

내 Upstart 작업이 sudo에서는 작동하지만 setuid에서는 작동하지 않는 이유는 무엇입니까?

nodeNode.js 애플리케이션에 대한 Upstart 작업이 있는데 .js 가 아닌 사용자 로 Node를 실행하고 싶습니다 root. setuid작업 구성에서 사용할 때 작업을 시작하려고 할 때마다 my-app stop/waiting. 그러나 생략 하고 with 를 setuid사용 하면 예상대로 작동합니다.execsudo

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

setuidUpstart의 행동과 sudo하나는 실패하고 다른 하나는 성공하게 만드는 행동 사이에는 어떤 차이점이 있나요 ?

답변1

스탠자 는 블록 setuid안에 있어서는 안 되며 script전역적입니다. 이것이 아마도 당신의 직업이 실패한 이유일 것입니다.

사용 setuid하면모두작업 단계는 사용자가 지정한 대로 실행되며 이를 변경할 수 없습니다. 다른 사용자로 데몬만 실행하려면 피하고 대신 sudo사용하세요 start-stop-daemon. 이는 데몬을 포크할 때 특히 중요합니다. 우분투를 확인하세요신생 요리책, 자세한 내용은 11.43.2장을 참조하세요.

관련 정보