Когда пользователь может выполнить `sudo su`, но не` sudo su -`?

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

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

Удаление суперпользователя не устранит цель атаки для эксплойтов, оно просто создаст более легкую цель.

4
20.03.2017, 12:18
1 ответ

При указании команд, разрешенных через sudo, в основном есть два простых варианта:

  • разрешить конкретную команду с любыми параметрами или
  • разрешить выполнение определенной команды только с точно указанным набором параметров.

В результате, разрешение как sudo su - superman, так и sudo su supermanтребует двух записей в файле sudoers. Похоже, ваш администратор предоставил вам только один из них.

Синтаксис файла sudoersна самом деле не позволяет администратору указать конкретную команду с ограниченными параметрами подстановочного знака -или регулярного выражения -, потому что этими спецификациями было бы слишком легко злоупотреблять. Как сказал Эндрю, здесь лучше перестраховаться, чем сожалеть .

Однако обратите внимание, что sudo su supermanтребует sudo, чтобы исходный пользователь мог запускатьsu supermanкак root . По сути, будет два перехода идентификатора вместо одного :: сначала от исходного пользователя к root посредством sudo, а затем от root к supermanпосредством su. Спецификация будет выглядеть так в файле sudoers:

original_user ALL=(root) su superman

С другой стороны, синтаксис sudoersимеет гораздо более простой способ разрешить пользователю выполнять любые команды от имени конкретного пользователя, если пользователь не слишком зациклен на использовании команды su.

Если спецификация sudoers написана так:

original_user ALL=(superman) ALL

, то пользователь может использовать sudo -u superman -sдля достижения близкого (, но, возможно, не точного )эквивалентаsudo su supermanиsudo -u superman -iдля достижения точного эквивалента sudo su - superman.

Почему люди не используют это, а настаивают на использовании sudo su -конструкций? Поскольку параметр -iне существовал в более старых версиях sudo!

Он появился только где-то после 2000 года, так что есть много старой литературы, которая до сих пор рекомендует -устаревшую sudo su -конструкцию. И, конечно же, у старых пользователей и администраторов Unix это может быть в мышечной памяти, поэтому они будут использовать его, не задумываясь.

3
27.01.2020, 20:59

Теги

Похожие вопросы