Таким образом, я читал в различия между использованием su
и sudo
, и все, кажется, соглашаются что sudo
подход более безопасен, чем предоставление доступа к самой корневой учетной записи. Они говорят, что с корневой учетной записью Вы могли повредить свою всю систему только с единственной командой. Это я понимаю. НО у исходного пользователя, созданного в системе также, есть доступ ко всем командам с помощью sudo. Это я могу узнать путем выполнения su -l
. Если это верно, затем я могу просто работать sudo <game-ending command>
разрушить мою систему. Таким образом, как этот подход лучше или более безопасен затем разрешение мне прямой доступ к учетной записи суперпользователя? Я могу выполнить все те же команды...
Это потому что использование sudo
на командной строке я явно говорю компьютеру, что думаю, что я знаю то, что я делаю? Они думают, что люди забудут, что они находятся под учетной записью суперпользователя, если они явно не говорят так?
Люди также заявляют, что, если бы система была поставлена под угрозу и введена кем-то внешним, находясь под корневой учетной записью, позволил бы им делать ужасные вещи к моей системе. Но мне кажется, если они уже имеют доступ к моей учетной записи и знают мой пароль, они могут сделать эти те же ужасные вещи при помощи sudo и ввода моего пароля, так как они не должны даже знать пароль суперпользователя. Что я не получаю здесь?
Лично я не считаю это более безопасным и преимущества (sudo) в многопользовательской системе. В однопользовательской системе это, вероятно, промывка.
Преимущества следующие (в произвольном порядке):
sudo -i
, вероятно, лучший способ изолировать переменные среды root от вашего пользователя. Это время от времени возникает, но в умеренной степени эзотерично. См. https://help.ubuntu.com/community/RootSudo#Special_notes_on_sudo_and_shells Вероятно, есть больше преимуществ, но, IMHO, они являются основными.
См. Также - https://help.ubuntu.com / community / RootSudo
Чтобы попытаться ответить на некоторые из ваших мыслей:
Итак, хотя вы наблюдали проблемы или недостатки с sudo, su имеет точно такие же уязвимости, и su не превосходит sudo в этих аспектах, ИМХО
Представьте, что у вас есть 20 минут, чтобы сделать что-то сложное. Вы немного похмелились, и вам нужно спешить. Вы говорите: «Давай воспользуемся su». «Это сэкономит время» - вот ваши доводы.
Вы случайно набираете
rm -rf /*
вместо
rm -rf ./*
. Ваша система блокируется, и у вас есть 10 минут до крайнего срока.
Если вы явно укажете, когда вам нужен root-доступ, вы можете свести к минимуму вероятность этого. Для rm -r ./*
рут может не понадобиться, так зачем его использовать? Зачем рисковать?
Вот что здесь означает «безопасность». Сведение к минимуму риска того, что пользователи (все пользователи, а не только новички) совершат фатальную ошибку.
Конечно, это крайний пример, которого нельзя допускать в производственной среде (я гарантирую, что это произошло в производственной среде). environment).
С точки зрения безопасности есть кое-что, для чего sudo тоже лучше. Как @Panther говорит - ведение журнала, ограничения, пароль root - SPOF и т. Д.)
Я хочу добавить немного исторической перспективы к другим ответам. К сожалению, у меня нет готовых исходников, кроме моих собственных воспоминаний об обсуждениях в Usenet и журнальных статьях.
Некоторое время назад, в 1990-х, дистрибутивы упрощали установку Linux на ваше собственное оборудование, даже с небольшим количеством компьютеров знания ». Таким образом, Linux начал привлекать все больше и больше людей, которые, как ни удивительно, ранее не были обучены системным администраторам на каком-либо диалекте UN * X. Вместо этого многие использовали (однопользовательские) системы, такие как Windows 95/98. И они узнали, что большинство задач системного администрирования Linux вынуждали работать под этой странной учетной записью «root».
Таким образом, некоторые пользователи просто вошли в систему как root и использовали эту учетную запись для всей своей повседневной работы. Почему им нужно снова и снова вводить su
и пароль root или входить в новый tty только для выполнения некоторых команд администратора? Но использовать root для всего, конечно, не очень хорошая идея, так как вы можете нанести гораздо больший вред своей системе, если неучтенная команда окажется в неправильном месте. Это даже привело к тому, что некоторые дистрибутивы (это был SuSE?) Изменили фон рабочего стола для пользователя root , чтобы отобразить большое предупреждение о том, что вы должны использовать эту учетную запись только для задач администратора.
Итак, путь Ubuntu с sudo
имеет некоторые преимущества (в дополнение к тем, которые уже перечислены Panther ).
sudo
кэширует ваши учетные данные, поэтому для нескольких последовательных команд администратора у вас есть только ввести пароль один раз (в отличие от su
). Это уменьшает желание просто открыть оболочку или новый терминал с привилегиями root . ¹ И для тех, кто не осмеливался сделать это сам, были организованы партии.
² Но вы можете использовать команду вроде sudo -i
или sudo su - root
, чтобы получить корневую оболочку после входа в систему как обычный пользователь.
]
³ Но вы, конечно, знаете, что вы не должны просто копировать и вставлять команды из Интернета , верно?
Десятки лет можно было отключить вход в систему с правами root через ssh. Способ Ubuntu отключить учетную запись root и заставить людей судить обо всем - не более чем уловка. Просто "sudo -s", и у вас есть корневая оболочка. Отключите вход root через ssh и оставьте его там.
В зависимости от конфигурации, sudo <команда завершения игры>
не обязательно будет работать. Конечно, если в конфигурации sudoers
указано «user ALL = (ALL) ALL», sudo
не будет предлагать дополнительной защиты. Однако вы можете указать список привилегированных команд, которые вам нужно часто запускать, например, для установки новых пакетов, и исключить опасные команды, такие как rm
.
Таким образом, вы можете запускать все команды, если войдете как ] root
, но, поскольку он понадобится вам только изредка, риск запуска <команда завершения игры>
будет существенно снижен.
То, что sudo позволяет разрешать только определенные команды, - не единственное преимущество sudo перед su.
В большинстве магазинов это даже не самое важное преимущество.
С sudo вы знаете, кто выполнил определенную команду.
Возможно, это не имеет для вас значения. Например, вы можете быть единственным пользователем своего компьютера. Если да, то sudo, возможно, ничем не лучше su.
Но на многих хостах более одного администратора.
sudo становится очень полезным, потому что если кто-то делает что-то не так, sudo позволяет узнать, кто это сделал .
Это позволяет вам понять, почему произошли ошибки, и научить людей предотвращать повторение ошибок или, если необходимо, удалить инструменты у кого-то.
В качестве бонуса, когда люди знают, что их действия записываются, они часто становятся немного более осторожными.
Судо не идеален.
Если два человека выполняют «sudo sh» одновременно, тогда может быть трудно приписать команды одному или другому.
И злонамеренный администратор всегда может удалить или отредактировать журналы - хотя делать это чисто не так. Это всегда так просто, как думают люди, особенно если у вас централизованное ведение журнала.
sudo не обязательно останавливает глупые или злонамеренные действия по всем причинам, указанным в исходном вопросе.
Но это дает гораздо больше шансов предотвратить рецидив.