glarry Asked: 2017-12-27 03:05:56 +0800 CST2017-12-27 03:05:56 +0800 CST 2017-12-27 03:05:56 +0800 CST 推荐使用`nohup sudo <command>`和`sudo nohup <command>`中的哪一个,为什么? 772 它们之间有什么区别吗,一些特殊的用例会使它们中的一个比另一个更受欢迎? sudo command-line 1 个回答 Voted Best Answer thecarpy 2017-12-27T04:04:26+08:002017-12-27T04:04:26+08:00 通常,如果命令不需要root特权,则不要以 user 身份运行它root。 始终尝试以最少的权限执行。想象一下,有一个漏洞<command>允许攻击者注入代码以使用调用<command>. 错误:但是,在这种特定情况下,我认为nohup sudo <command>可以防止在sudo, NOT中挂断<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拦截了。
通常,如果命令不需要
root
特权,则不要以 user 身份运行它root
。始终尝试以最少的权限执行。想象一下,有一个漏洞
<command>
允许攻击者注入代码以使用调用<command>
.错误:但是,在这种特定情况下,我认为
nohup sudo <command>
可以防止在sudo
, NOT中挂断<command>
。所以我会去sudo nohup <command>
。编辑:事实上,根据
man fork
,子进程的任何信号都由父进程继承,这似乎也有影响nohup
。感谢 Stephen Kitt 提到这一点。这样你就可以愉快地奔跑了
nohup sudo <command>
。编辑:实际上,我创建了以下测试用例:
当我运行
nohup /tmp/test1.sh
输出(存储在 nohup.out 中)是:这意味着
kill -HUP $$
被nohup拦截了。