그들 사이에 어떤 차이가 있나요? 그 중 하나가 다른 것보다 더 나은 특별한 사용 사례는 무엇입니까?
답변1
일반적으로 명령에 root
권한이 필요하지 않으면 사용자로 실행하지 않습니다 root
.
항상 최소한의 권한으로 실행해 보십시오. <command>
공격자가 코드를 삽입하고 호출하는 사용자의 권한으로 실행할 수 있도록 허용하는 버그가 있다고 상상해 보십시오 <command>
.
오류: 하지만 이 특별한 경우 에는 nohup sudo <command>
. 그래서 저는 을 선택하겠습니다 .sudo
<command>
sudo nohup <command>
man fork
편집: 에 따르면 하위 프로세스의 모든 신호가 상위 프로세스에 의해 상속된다는 사실 nohup
도 영향을 미치는 것으로 보입니다. 이에 대해 언급해 준 Stephen Kitt에게 감사드립니다.
이렇게 하면 행복하게 달릴 수 있습니다 nohup sudo <command>
.
편집: 실제로 다음 테스트 케이스를 만들었습니다.
$ cat /tmp/test1.sh /tmp/test2.sh
#!/bin/sh
/tmp/test2.sh &
sleep 5
#!/bin/sh
echo "test"
kill -HUP $$
nohup /tmp/test1.sh
출력을 실행하면 (nohup.out에 저장됨):
test
이는 kill -HUP $$
nohup에 의해 차단되었음을 의미합니다.