sudo还是sudo不错?


53

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

  1. 不错的sudo [这里是密集命令]
  2. sudo nice [密集命令在这里]

顺便说一句,这适用于Linux3.x。


6
为了帮助您进行测试,请参见nice bash -c 'ps -p $$ -o pid,ni,comm'sudo nice bash -c 'ps -p $$ -o pid,ni,comm'nice sudo bash -c 'ps -p $$ -o pid,ni,comm'。所有这三个都应该为您生成衍生外壳程序的进程ID($$)的一个不错的值。
Zoredache 2014年

@Zoredache,虽然我认为您的评论非常有建设性,但我们应该说它们都具有相同的价值,因为它在分叉时会被继承,这应该是问题的实际答案。
FlorinAsăvoaie2014年

3
@FlorinAsavoaie如果您认为这应该是答案,那么请随时添加。我添加了上面的注释作为测试事情的一种方法,因为我个人并不百分百地确定会发生什么,因此我决定找到一个可以通过各种调用显示出不错的价值的命令。我在营地中倾向于实际进行测试,该测试表明事物按照预期的方式运行。
Zoredache 2014年

@FlorinAsavoaie我也会这么想,但是请看serverfault.com/a/626576/117546
emory 2014年

Answers:


104

有一个重要的区别。

如果要降低流程的优先级,顺序无关紧要。另一方面,如果要增加它,则必须放在sudo之前nice

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


21
恭喜,您赢了。
迈克尔·汉普顿

2
这是非常重要的一点,尽管作为答案,它只有在您解释了为什么在基本情况下顺序无关紧要时才是完整的(就像迈克尔在他的答案中一样)。
与莫妮卡(Monica)

16

如果您运行nice sudo该命令,那么输入密码的提示也将很不错,但是由于您将花费更多的时间来键入它,因此实际上并没有多大关系。

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

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


2

使用“最低特权原则”时,仅应在需要根特权的情况下运行该程序,然后在不再需要它们时再次将其删除。

所以是的,这是有区别的,如果存在对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)

2

最新答案:

如果你的sudo访问仅限于某些程序(foobar,例如),那么你将没有权限运行sudo nice foo,但将被允许运行nice sudo foo

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.