Почему Sudo существует? Почему бы не обрабатывать привилегированную систему доступ как разрешение пользователя?

​​

Добавьте - , чтобы отметить конец параметров в stat :

for i in *; do stat -c "%s %n" -- "$i"; done
-1
20.09.2018, 03:53
3 ответа

В Linux существуют «разрешения », известные как возможности Linux . Идея возможностей состоит в том, чтобы разделить привилегии суперпользователя на более мелкие части. Это позволит процессу иметь только необходимое минимальное подмножество привилегий суперпользователя.

Linux 4.3 включает внешние возможности, которые позволяют процессу сохранять действующие возможности после execv . Это можно использовать для создания механизма, позволяющего не -пользователям root иметь эффективные возможности по умолчанию.

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

Как указывалось в других ответах, небезопасно использовать привилегированного пользователя для других задач, кроме системного администрирования. Ущерб, который непривилегированный процесс (и пользователь )могут нанести системе, ограничен. Чтобы система была в некоторой степени защищена, проще повышать привилегии только тогда, когда это необходимо действием пользователя, чем забывать сбрасывать их каждый раз, когда они не требуются.

Кроме того, в некотором смысле sudoсвязывает вашего пользователя с административной ролью через его конфигурацию. Он предоставляет интерфейс для выполнения административных задач, требующих привилегий суперпользователя. Можно настроить sudo, чтобы не запрашивать пароль. О возможных проблемах безопасности см. Information Security SE :Насколько безопасен NOPASSWD в режиме sudo без пароля?

Для дальнейшего чтения,Я рекомендую справочную страницу возможностей для хорошего обзора и [RFC] возможностей :Возможности среды , которая объясняет обоснование возможностей среды и проблемы в более ранних наследуемых возможностях.

0
28.01.2020, 05:07

Это очень плохая идея запускать все как root, потому что если я скажу вам rm -rf /запускать как root, это удалит всю вашу операционную систему, а без root она выйдет из строя. Смысл наличия sudo в том, чтобы позволить вам повышать привилегии только при необходимости. Это сделано для того, чтобы вредоносные скрипты не имели root-права в момент их запуска или ошибки в запущенной вами программе, которая позволила бы кому-то получить права доступа программы (root ).

1
28.01.2020, 05:07

Здесь есть ряд понятий, которые распространены в мире безопасности.

Во-первых, мы всегда хотим, чтобы пользователи работали с «наименее необходимыми привилегиями». Идея, особенно в корпоративной среде (, я вернусь к этому чуть позже ), заключается в том, что мы хотим, чтобы люди имели разрешения, необходимые им для использования компьютера, но не более того. «Бизнес как обычно» (BAU )не требует изменения файлов в /etc; это исключительный случай.

Это ведет к следующей части; «повышение привилегий». Как только определено что-то за пределами BAU, мы хотим, чтобы пользователь знал, что он делает что-то более привилегированное. Поэтому используйте команду sudoи по поводу -введите свой пароль, чтобы подтвердить, что вы знаете, что делаете. Этот повторный -ввод пароля важен, поскольку он означает, что пользователь сознательно одобряет это действие. Это не обязательно должен быть пароль; есть версии, которые могут потребовать двухфакторную аутентификацию, которая будет регистрировать нажатие клавиши и записывать сеанс для последующего воспроизведения...

Итак, теперь мы подошли к «предприятию» и рассмотрели уроки Windows XP Home Edition. При этом пользователь, которого вы создали при установке (или первой -загрузке для OEM ), автоматически имел права администратора. Ты всегда работал как админ. Это означало, что любая ваша ошибка может привести к удалению важных файлов. Или любая из ошибок (, например, в электронной почте, или рендеринге изображений, или... ), которые позволяли злоумышленнику выполнять действия автоматически, имели права администратора. Это одна из причин, почему в старых версиях Windows свирепствовали вирусы и вредоносное ПО.

Таким образом, разделение «BAU» и «привилегированных» действий распространяется за пределы предприятия и на дом, а также на единую -пользовательскую среду. Стоит отметить, что, начиная с Vista, даже в Windows есть концепция «вы пытаетесь сделать что-то привилегированное; повторно -введите свой пароль».

Резюме:sudo— это просто способ переключения контекстов безопасности;от деятельности, которую вы могли бы разумно выполнять каждый день («прочитать электронную почту», «создать документ», «просматривать веб-страницы» )и прочее, что считается привилегированным («создать нового пользователя», «изменить конфигурация системы», «удалить файлы, принадлежащие другому пользователю»… ).

Для большинства домашних пользователей достаточно просто «повторно -введите свой пароль». Для предприятия все может стать намного сложнее; см.https://www.sweharris.org/post/2018-08-26-minimal-sudo/для примера некоторых проблем.

ИЗМЕНИТЬ ДЛЯ ДОБАВЛЕНИЯ:

Я также должен отметить, что в Unix также есть понятие «пользователь-администратор»; это «корневая» учетная запись. В корпоративной среде нам не нравятся люди, использующие это, потому что мы не знаем, использовали ли Том, Дик или Гарри учетную запись root для внесения изменений. sudo— это способ, позволяющий людям повышать свои привилегии проверяемым наименее привилегированным способом. Том может запустить sudo catи прочитать любой файл, но не может перезагрузить машину; Дик и Гарри могут sudo rebootперезагрузить машину, но не могут читать защищенные файлы.

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

3
28.01.2020, 05:07

Теги

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