시작하려는 프로세스의 그룹(gid)을 어떻게 설정합니까?

시작하려는 프로세스의 그룹(gid)을 어떻게 설정합니까?

Debian init.d 스크립트를 CentOS로 이식하고 있습니다. 데비안 스크립트에서는 start-stop-daemon을 사용하여 프로세스를 시작합니다. 이 스크립트는 데몬을 시작할 때 start-stop-daemon의 --group 플래그를 사용하여 다른 그룹 ID로 변경합니다.

CentOS의 초기화 스크립트에서 데몬의 그룹 ID를 설정하는 방법은 무엇입니까?

답변1

CentOS가 더 나은 기능을 제공하지 않는 경우(약간 놀랍습니다) su덜 알려진 CentOS를 사용할 수 있습니다 sg.

sg foogroup -c 'exec foodaemon --bar'

답변2

CentOS 초기화 스크립트는 대부분의 다른 초기화 스크립트에서 사용되는 "데몬" 함수를 선언하는 /etc/init.d/functions를 사용합니다. 그러나 데몬은 그룹 플래그를 허용하지 않습니다.

마지막으로 다음을 호출합니다.

$nice runuser -s /bin/bash - $user -c "$corelimit >/dev/null 2>&1 ; $*"

runuser의 빠른 /sbin/runuser --help표시는 지정된 그룹에 대한 플래그를 허용하므로 다음을 시도하십시오.

runuser -g $group; daemon ...

답변3

가지다설정값: "setuidgid는 지정된 계정의 uid 및 gid로 다른 프로그램을 실행합니다."

daemontools의 일부이지만 DJB의 이상한 라이센스로 인해 CentOS 저장소에서 사용하지 못할 수도 있습니다. 따라서 RPM을 찾아야 할 수도 있습니다(예:여기) 또는 소스에서 빌드합니다.

답변4

아주 오래된 질문이지만 몇 가지 사항을 추가할 수 있다고 생각했습니다.

/sbin/runuser를 호출하는 데몬의 본질적으로 결함이 있는 방식을 사용하여 간단히 비용을 지불하고 사용자 이름을 다음과 같이 설정할 수 있습니다.

echo -n "Starting ${prog}"
daemon --user='nobody -Gnogroup' $exec &
echo

작동합니다.

특히 지저분하지만 runuser를 직접(또는 두 번) 호출하지 않고도 데몬을 피기백할 수 있습니다.

관련 정보