Каковы реальные преимущества назначения привилегий sudo пользователю вместо использования root?

25

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

Если вновь созданный пользователь может выполнять те же функции, что и пользователь root, какова реальная выгода от этого вообще?

JM4
источник
7
Sudoer не может делать все , что может root, только то, что root позволяет sudoers sudo, и sudoer по-прежнему должен выполнять команду sudo. Наконец, sudoers sudo вещи в качестве своей собственной учетной записи пользователя, во-первых, это означает, что им не нужно входить в систему как root, и, во-вторых, позволяет вам видеть, кто что-то sudid.
KeithS

Ответы:

48

Есть несколько преимуществ использования sudoраздачи пароля root. В произвольном порядке:

  • Вы не даете свой пароль root.
    Как правило, если кто-то покидает вашу компанию и знает пароль (а) root, вам теперь нужно везде менять эти пароли. При правильном управлении конфигурацией это незначительное раздражение. Без этого это огромная рутина.

  • Вы не отдаете ключи королевству,
    sudo позволяя вам указать ограниченный список команд, которые могут запускать пользователи, поэтому, если вы решите, что Алисе нужна только возможность остановить и запустить Apache, но Бобу нужны полные права root, которые вы можете установить их соответственно.

  • Вы можете управлять авторизацией централизованно, sudo поддерживая конфигурацию LDAP, что означает, что каждая система в вашей компании может посмотреть на центральный сервер LDAP, чтобы определить, кому и что разрешено делать.
    Нужно авторизовать (или деавторизовать) кого-то? Измените конфигурацию sudoers в LDAP, и все ваши системы будут обновлены сразу.

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

  • sudoэто хорошо для большего, чем просто root. Каждый концентрируется на sudoтом, чтобы делать что- то, как su peruser, но это еще не все, для чего это хорошо.
    Скажем, Алиса отвечает за конкретную сборку программного обеспечения, но Боб должен иметь возможность запустить скрипт сборки. Вы можете дать Бобу запись в sudoers, которая позволит ему запускать скрипт сборки от имени Алисы. (Да, конечно, есть гораздо лучшие способы справиться с этим конкретным случаем, но принцип Let user A run a program as user Bможет быть полезен ...).
    Вы также получаете все те же преимущества аудита, которые я упоминал выше, когда вы делаете это ...

voretaq7
источник
1
Очень полезный ответ - если я знаю (и я имею в виду со 100% уверенностью), что я буду единственным, кто управляет одним сервером, вы видите много преимуществ в назначении привилегий sudo другому пользователю (который в любом случае был бы мной)? не мешать себе что-то напортачить?
JM4
3
@ JM4 Последовательность и хорошая практика на один день в будущем, когда вы работаете в более обширной среде. С практической точки зрения, вы никогда не должны входить в систему как root напрямую, если только вы не используете физическую консоль, исправляющую что-то по-королевски, так что в sudoотличие suот академического различия - вам придется перепрыгивать через один или другой обруч. Использование sudoдает вам возможность применить принцип наименьших привилегий (мой последний пункт) там, где это целесообразно, и это всегда нужно учитывать.
voretaq7
2
Кроме того, используйте visudo для редактирования файла sudoers.
Джастин Даринг
3
Обратите внимание, что многие интерактивные команды позволят пользователям обходить контрольный журнал. Например, любой пользователь, который sudo viможет :! bashодин раз войти в vi.
Дитрих Эпп
4
@DietrichEpp NOEXECТег помогает в этом случае.
Шейн Мэдден
17

Основное отличие состоит в том, что пользователи аутентифицируются с sudoиспользованием своего собственного пароля, тогда как при использовании suили прямого входа в систему root используется пароль root.

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

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

Майкл Хэмптон
источник
1
Спасибо за помощь. Я вижу выгоду от вашей точки зрения, но я также действительно рассматривал обычного пользователя для пользователя root как точку двойной аутентификации, учитывая, что я отключил вход в систему пользователя root из ssh на моем сервере.
JM4
4

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

gyin
источник
2

Да, действительно - с точки зрения контроля и регистрации sudo намного лучше.

Например - если вы su, единственное событие, зафиксированное в журналах, это вы. Все, что после этого идет как корень. И если вы когда-либо просматривали журналы в Unix / Linux, вы знаете, что root выполняет множество задач.

Судо, с другой стороны, регистрирует почти все, как исходный пользователь.

kd1s
источник
0

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

Профессор МакАнтони
источник