Задний план
Я знаю разницу между su -
, sudo su -
, и sudo <command>
:
su -
- переключает пользователя на root, требует пароль rootsudo su -
- переключает пользователя на root, требует только пароль текущего пользователяsudo <command>
- предоставляет root-доступ только для определенной команды; требуется только пароль текущего пользователяМой вопрос в том, использовать ли sudo su -
это безопасная практика в производственной среде.
Некоторые мысли:
Похоже, что позволяет sudo su -
представляет угрозу безопасности, делая доступ к учетной записи root зависимым от индивидуальных паролей пользователей. Конечно, это можно смягчить, установив строгую политику паролей. Я не думаю su -
лучше, так как для этого потребуется, чтобы администратор поделился фактическим паролем root.
Разрешение пользователям полностью переключиться на учетную запись root затрудняет отслеживание того, кто вносит изменения в систему. Я видел случаи на своей основной работе, когда нескольким пользователям давали sudo su -
доступ. Первое, что делают пользователи при входе в систему, запускается sudo su -
, перед началом работы. Затем однажды что-то сломается, и никто не сможет отследить, кто бежал. rm -rf *
в неправильном каталоге.
Вопросы
Учитывая вышеупомянутые проблемы, стоит ли разрешить пользователям использовать sudo su -
или даже su -
вообще?
Есть ли причины, по которым администратор настраивал учетные записи пользователей для sudo su -
или su -
вместо того sudo <command>
(кроме лени)?
Примечание: Я игнорирую случай, когда пользователь запускает sudo su -
или su -
Администратору необходимо внести изменения в систему, если для пользователя root отключен прямой доступ по ssh.
Давайте посмотрим на ваши кейсы:
su -
запустит / bin / sh от имени пользователя root, используя корневую среду. Требуется пароль root, и запись МОЖЕТ регистрироваться в журнале в зависимости от настроек системного журнала (обычно по умолчанию это /var/log/auth.log).
sudo /bin/sh
запустит оболочку от имени пользователя root, используя текущий набор переменных среды (с некоторыми исключениями, которые будут определены в файле sudoers). Пароль является паролем исходного пользователя, а НЕ паролем пользователя root. sudo обычно регистрируется.
sudo su -
запустит оболочку (обычно / bin / sh) как пользователь root, настроив среду как пользователь root. Для этого потребуется пароль исходного пользователя, и он обычно регистрируется.
Иногда необходимо иметь корневую среду поверх вашей собственной среды, поэтому su - подходящий метод. Помните, что sudo все равно будет регистрировать использование команды оболочки в любом случае.
OP, похоже, предоставляет множество веских причин, чтобы не разрешать / поощрять общее использование для запуска sudo bash
или sudo su -
поскольку это переключает их во всесильный режим, внутренняя часть которого обычно не регистрируется. И они могут забыть, что находятся в этом режиме, и сделать что-то ... достойное сожаления.
Таким образом, кажется более безопасным ограничить большинство пользователей запуском sudo on/a/particular/command/
или список команд. Таким образом регистрируется каждая команда sudo.
Будете ли вы сталкиваться с исключениями на практике? Конечно. Будет ли реакция на такие исключения возвращаться к ленивой практике неограниченного sudo su
--возможно нет.
* Учитывая вышеупомянутые проблемы, можно ли когда-либо разрешить пользователям использовать sudo su *
Нет, на мой взгляд, нет. У него нет практических преимуществ перед тем, чтобы разрешить им использовать su, за исключением того, что для этого им не нужен пароль root.
или су - вообще?
Поскольку я всегда отключаю вход в систему с правами root, su необходим и, по сути, делает сервер более безопасным.