nice sudo 还是 sudo nice?

nice sudo 还是 sudo nice?

使用以下命令通过 sudo 运行密集任务有什么区别吗?:

  1. nice sudo [此处为密集命令]
  2. sudo nice [此处强化命令]

顺便说一下,这是适用于 Linux 3.x 的。

答案1

这两者之间存在着一个差异,而且是一个至关重要的差异。

如果你想减少进程的优先级,顺序并不重要。另一方面,如果你想增加它,你必须放在sudo之前nice

由于您以普通用户身份运行该命令(否则您根本不会理会 sudo),因此您只能降低命令的优先级。但是如果您sudo先使用,则可以根据需要增加它。

答案2

如果您运行,nice sudo那么输入密码的提示也会很好,但由于您将花费更多的时间来输入密码,所以这实际上并不重要。

正如 ThoriumBR 所指出的,如果您降低优先级,那么顺序就无关紧要了,但如果您想提高优先级,那么(因为这必须以 root 身份完成)您必须使用sudo nice

否则我无法想象任何真正的区别。

答案3

使用“最小特权原则”仅当程序需要 root 权限时才应运行该程序,一旦不再需要它们,就应立即删除它们。

所以是的,是有区别的,如果 nice 存在漏洞,攻击者就可以使用与 nice 程序相同的权限运行代码。

此外,sudo 会重置你的环境,因此可能会产生副作用,请尝试

$ echo 'echo $PATH' | sh
/usr/lib64/qt-3.3/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/home/jens/.local/bin:/home/jens/bin:/home/jens/.local/bin
$ echo 'echo $PATH' | sudo sh
[sudo] password for jens: 
/sbin:/bin:/usr/sbin:/usr/bin

因此,您通过 sudo 运行的“nice”命令实际上可能最终成为不同的二进制文件。

$ which ash
~/.local/bin/ash
$ sudo which ash
[sudo] password for jens: 
which: no ash in (/sbin:/bin:/usr/sbin:/usr/bin)

答案4

迟来的回答:

如果您的 sudo 访问权限仅限于某些程序(例如foobar),那么您将无权运行sudo nice foo,但可以运行nice sudo foo

相关内容