Есть ли разница между выполнением интенсивной задачи над sudo с помощью следующих команд ?:
- хороший sudo [интенсивная команда здесь]
- sudo nice [интенсивная команда здесь]
Кстати это для Linux 3.x.
Есть ли разница между выполнением интенсивной задачи над sudo с помощью следующих команд ?:
Кстати это для Linux 3.x.
Ответы:
Есть разница, решающая.
Если вы хотите уменьшить приоритет процесса, порядок не имеет значения. С другой стороны, если вы хотите увеличить его, вы должны поставить sudo
раньше nice
.
Поскольку вы запускаете команду как обычный пользователь (иначе вы вообще не будете беспокоиться о sudo), вы можете только уменьшить приоритет своей команды. Но если вы используете sudo
сначала, вы можете увеличить его, если хотите.
Если вы запустите, nice sudo
запрос пароля также будет замечен, но, поскольку вы будете тратить гораздо больше времени на его ввод, это не имеет большого значения.
Как отметил ThoriumBR, если вы понижаете приоритет, то порядок не имеет значения, но если вы хотите повысить приоритет, то (так как это должно быть сделано как root) вы должны использовать sudo nice
.
Иначе я не могу представить никакой реальной разницы.
Используя «принцип наименьших привилегий», вы должны запускать программу с привилегиями суперпользователя только в том случае, если она им нужна, а затем отбрасывать их снова, как только они вам больше не нужны.
Так что да, есть разница: если есть уязвимость для 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
Таким образом, команда 'nice', которую вы запускаете через sudo, может в действительности оказаться другим двоичным файлом.
$ which ash
~/.local/bin/ash
$ sudo which ash
[sudo] password for jens:
which: no ash in (/sbin:/bin:/usr/sbin:/usr/bin)
Поздний ответ:
Если ваш доступ к sudo ограничен определенными программами ( foo
и bar
, например), у вас не будет прав для запуска sudo nice foo
, но вам будет разрешено работать nice sudo foo
.
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'
. Все три должны показать вам хорошее значение для идентификатора процесса ($$) порожденной оболочки.