Как sudo более безопасный, чем прямое использование su, если пользователь является предоставленным доступом ко всем командам?

Таким образом, я читал в различия между использованием su и sudo, и все, кажется, соглашаются что sudo подход более безопасен, чем предоставление доступа к самой корневой учетной записи. Они говорят, что с корневой учетной записью Вы могли повредить свою всю систему только с единственной командой. Это я понимаю. НО у исходного пользователя, созданного в системе также, есть доступ ко всем командам с помощью sudo. Это я могу узнать путем выполнения su -l. Если это верно, затем я могу просто работать sudo <game-ending command> разрушить мою систему. Таким образом, как этот подход лучше или более безопасен затем разрешение мне прямой доступ к учетной записи суперпользователя? Я могу выполнить все те же команды...

Это потому что использование sudo на командной строке я явно говорю компьютеру, что думаю, что я знаю то, что я делаю? Они думают, что люди забудут, что они находятся под учетной записью суперпользователя, если они явно не говорят так?

Люди также заявляют, что, если бы система была поставлена под угрозу и введена кем-то внешним, находясь под корневой учетной записью, позволил бы им делать ужасные вещи к моей системе. Но мне кажется, если они уже имеют доступ к моей учетной записи и знают мой пароль, они могут сделать эти те же ужасные вещи при помощи sudo и ввода моего пароля, так как они не должны даже знать пароль суперпользователя. Что я не получаю здесь?

41
задан 22 February 2018 в 09:44

6 ответов

Лично я не считаю это более безопасным и преимущества (sudo) в многопользовательской системе. В однопользовательской системе это, вероятно, промывка.

Преимущества следующие (в произвольном порядке):

  • sudo имеет превосходное ведение журнала. sudo регистрирует каждую команду.
  • sudo позволяет более тонко управлять. Можно настроить sudo для предоставления root-доступа некоторым, но не всем командам.
  • sudo использует пароль для входа. Это защищает от необходимости указывать пароль root (как и в случае с su) и связано с вышеупомянутым пунктом относительно более тонкого управления / доступа к root.
  • В Ubuntu по умолчанию учетная запись root заблокирована. Это удерживает взломщиков от входа в систему (удаленного, скажем, через ssh), они должны угадывать как имя пользователя, так и пароль. Если учетная запись root не заблокирована, как в случае с su, то им нужно только взломать пароль root.
  • sudo -i , вероятно, лучший способ изолировать переменные среды root от вашего пользователя. Это время от времени возникает, но в умеренной степени эзотерично. См. https://help.ubuntu.com/community/RootSudo#Special_notes_on_sudo_and_shells
  • некоторые люди считают, что необходимость вводить sudo перед каждой командой, которую они хотят выполнить от имени пользователя root, или тайм-аут sudo позволяет им выполнять остановитесь и подумайте более ясно и уменьшите количество своих ошибок или выполнение ошибочных команд. Если это поможет вам, это тоже будет преимуществом.

Вероятно, есть больше преимуществ, но, IMHO, они являются основными.

См. Также - https://help.ubuntu.com / community / RootSudo

Чтобы попытаться ответить на некоторые из ваших мыслей:

  • Ни в su, ни в sudo нет ничего, что могло бы предотвратить запуск вредоносного кода, если вы знаете пароль. Ни то, ни другое не может быть лучше и безопаснее.
  • Взломщики могут получить доступ к оболочке с помощью ряда методов. Когда вы видите «запустить произвольный код» в уведомлении о безопасности - https://usn.ubuntu.com/usn/ - это означает, что взломщик может запускать / bin / bash или любой другой код.Таким образом, взломщик с помощью различных эксплойтов может получить доступ к оболочке, не зная вашего имени пользователя или пароля. Ни sudo, ни su не помогают с этим.
  • Если взломщик имеет доступ к оболочке, он может нанести большой ущерб без доступа root. Например, программа-вымогатель, которая шифрует все ваши личные данные.
  • Если взломщик имеет доступ к оболочке учетной записи с корневым доступом через su или sudo, взломщик может получить root-доступ с помощью ряда методов, выходящих за рамки этого обсуждения . Ни sudo, ни su не превосходят в этом отношении.

Итак, хотя вы наблюдали проблемы или недостатки с sudo, su имеет точно такие же уязвимости, и su не превосходит sudo в этих аспектах, ИМХО

40
ответ дан 23 November 2019 в 00:09

Представьте, что у вас есть 20 минут, чтобы сделать что-то сложное. Вы немного похмелились, и вам нужно спешить. Вы говорите: «Давай воспользуемся su». «Это сэкономит время» - вот ваши доводы.

Вы случайно набираете

rm -rf /*

вместо

rm -rf ./*

. Ваша система блокируется, и у вас есть 10 минут до крайнего срока.

Если вы явно укажете, когда вам нужен root-доступ, вы можете свести к минимуму вероятность этого. Для rm -r ./* рут может не понадобиться, так зачем его использовать? Зачем рисковать?

Вот что здесь означает «безопасность». Сведение к минимуму риска того, что пользователи (все пользователи, а не только новички) совершат фатальную ошибку.

Конечно, это крайний пример, которого нельзя допускать в производственной среде (я гарантирую, что это произошло в производственной среде). environment).

С точки зрения безопасности есть кое-что, для чего sudo тоже лучше. Как @Panther говорит - ведение журнала, ограничения, пароль root - SPOF и т. Д.)

10
ответ дан 23 November 2019 в 00:09

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

Некоторое время назад, в 1990-х, дистрибутивы упрощали установку Linux на ваше собственное оборудование, даже с небольшим количеством компьютеров знания ». Таким образом, Linux начал привлекать все больше и больше людей, которые, как ни удивительно, ранее не были обучены системным администраторам на каком-либо диалекте UN * X. Вместо этого многие использовали (однопользовательские) системы, такие как Windows 95/98. И они узнали, что большинство задач системного администрирования Linux вынуждали работать под этой странной учетной записью «root».

Таким образом, некоторые пользователи просто вошли в систему как root и использовали эту учетную запись для всей своей повседневной работы. Почему им нужно снова и снова вводить su и пароль root или входить в новый tty только для выполнения некоторых команд администратора? Но использовать root для всего, конечно, не очень хорошая идея, так как вы можете нанести гораздо больший вред своей системе, если неучтенная команда окажется в неправильном месте. Это даже привело к тому, что некоторые дистрибутивы (это был SuSE?) Изменили фон рабочего стола для пользователя root , чтобы отобразить большое предупреждение о том, что вы должны использовать эту учетную запись только для задач администратора.

Итак, путь Ubuntu с sudo имеет некоторые преимущества (в дополнение к тем, которые уже перечислены Panther ).

  • Вы не можете напрямую войти в учетную запись root .² :-)
  • В процессе установки у вас не будет запрашиваться (дополнительный) пароль root, вам понадобится только один пароль (вашего пользователя).
  • sudo кэширует ваши учетные данные, поэтому для нескольких последовательных команд администратора у вас есть только ввести пароль один раз (в отличие от su ). Это уменьшает желание просто открыть оболочку или новый терминал с привилегиями root .
  • И это упрощает информирование пользователей в Интернете и в документации, какие команды они должны вводить как администраторы, а какие нет. ³

¹ И для тех, кто не осмеливался сделать это сам, были организованы партии.
² Но вы можете использовать команду вроде sudo -i или sudo su - root , чтобы получить корневую оболочку после входа в систему как обычный пользователь.
] ³ Но вы, конечно, знаете, что вы не должны просто копировать и вставлять команды из Интернета , верно?

9
ответ дан 23 November 2019 в 00:09

Десятки лет можно было отключить вход в систему с правами root через ssh. Способ Ubuntu отключить учетную запись root и заставить людей судить обо всем - не более чем уловка. Просто "sudo -s", и у вас есть корневая оболочка. Отключите вход root через ssh и оставьте его там.

3
ответ дан 23 November 2019 в 00:09

В зависимости от конфигурации, sudo <команда завершения игры> не обязательно будет работать. Конечно, если в конфигурации sudoers указано «user ALL = (ALL) ALL», sudo не будет предлагать дополнительной защиты. Однако вы можете указать список привилегированных команд, которые вам нужно часто запускать, например, для установки новых пакетов, и исключить опасные команды, такие как rm .

Таким образом, вы можете запускать все команды, если войдете как ] root , но, поскольку он понадобится вам только изредка, риск запуска <команда завершения игры> будет существенно снижен.

0
ответ дан 23 November 2019 в 00:09

То, что sudo позволяет разрешать только определенные команды, - не единственное преимущество sudo перед su.

В большинстве магазинов это даже не самое важное преимущество.

С sudo вы знаете, кто выполнил определенную команду.

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

Но на многих хостах более одного администратора.

sudo становится очень полезным, потому что если кто-то делает что-то не так, sudo позволяет узнать, кто это сделал .

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

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

Судо не идеален.

Если два человека выполняют «sudo sh» одновременно, тогда может быть трудно приписать команды одному или другому.

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

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

Но это дает гораздо больше шансов предотвратить рецидив.

0
ответ дан 23 November 2019 в 00:09

Другие вопросы по тегам:

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