Какой из них безопаснее? sudo dnf update ИЛИ su - ; dnf update

Какой из них безопаснее? sudo dnf update ИЛИ su - ; dnf update

Безопаснее ли сделать:

  1. $ sudo dnf update[введите пароль пользователя]

или

  1. $ su - [enter root password]
    # dnf update
    
    

Я всегда предполагал, что это одно и то же, потому что sudo использует setuid-root, поэтому процесс, запущенный как первый аргумент sudo, запускается с эффективным идентификатором sudo, который является root.

Думаю, мой вопрос таков:Сбрасывает ли sudo в конечном итоге свой эффективный идентификатор до идентификатора обычного пользователя? Тогда в этом случае номер 1 выше будет более безопасной ставкой, потому что если программа, с которой работает sudo, скомпрометирована злоумышленником, то есть вероятность, что злоумышленник не работает как root, потому что привилегия уже была сброшена?

решение1

Эта первая команда (вероятно) потребует ваш правильный пароль, запустится dnf updateкак root, а затем завершится:

$ sudo dnf update [enter user password]

Эта вторая команда потребует пароль root и затем запустит оболочку root. В этой оболочке вы запускаете dnf update:

$ su - [enter root password]
# dnf update

Вы на самом деле не сравниваете подобное с подобным. Вы могли бы сравнить эти две команды, обе из которых запускают оболочку root, в которой вы запускаете (по крайней мере) командуdnf update

sudo -s
dnf update

su -
dnf update

Или вы можете сравнить эти две команды, обе из которых запускают экземпляр с привилегиями root dnf update, а затем возвращаются в оболочку вызывающей стороны.

sudo dnf update

su root -c 'dnf update'

Я думаю, на самом деле вы спрашиваете, что лучше: вызвать одну команду с привилегиями root или запустить оболочку с привилегиями root, в которой можно выполнить одну или несколько команд.

  • Если dnfфункциональность или ее загрузка каким-либо образом скомпрометированы, то неважно, как она запущена, проблема в том, что она вообще запущена.
  • Если вы говорите о компрометации вашей системы, то все сводится к безопасности пароля пользователя ( sudo) по сравнению с паролем root ( su)
  • Если вы размышляете, можете ли вы доверять пользователю, то на самом деле не имеет значения, получите ли вы root-оболочку, в которой вы запускаете несколько команд, или root-оболочку, в которой вы запускаете одну команду за раз; проблема в том, что команды можно запускать как root.

Лично я смешиваю и подбираю свое использование в зависимости от необходимости. Я редко использую su, но использую sudo {command....}для быстрых одноразовых действий или sudo -sдля короткой сессии, когда мне нужно запустить несколько команд (например, Debian package management tools, apt-get updateза которыми следует apt-get upgrade).

решение2

Yes sudoсбрасывает привилегии при завершении дочернего процесса. В этом случае dnf. Где as suсбрасывает привилегии при завершении дочернего процесса. В этом случае интерактивная оболочка. Поэтому sudoпример сбрасывает привилегии раньше.

sudoтакже имеет другие преимущества, не рассмотренные здесь. (например sudoers, файл может быть использован для предоставления большего контроля над тем, что каждый пользователь может делать, а что нет).

Связанный контент