Считается ли хорошей практикой избегать использования `sudo su`? [дубликат]

На этот вопрос уже есть ответ:

Пароль root отключен по умолчанию, поэтому никто не может напрямую войти в учетную запись root.

Однако я все еще могу войти в систему root другим способом, выполнив sudo su и введя свой собственный пароль, учитывая, что я являюсь членом группы sudo в / etc / group (насколько мне известно, это единственное необходимое условие).

Считается ли это плохой практикой «лазить» мой путь к учетной записи root с помощью sudo su ? Следует ли этого избегать и вместо этого полагаться на использование команды sudo ?

2
задан 4 October 2017 в 20:16

2 ответа

Это - хорошая практика, чтобы не выполнять больше действий как корень, чем Вы должны. sudo упрощает это, позволяя Вам выполнить отдельные команды как корень, не имея необходимость входить в систему как корень и не нуждаясь в интерактивной корневой оболочке для задач, которые Вы иначе не выполнили бы оболочку, чтобы сделать. Но sudo su не "бэкдор", это - просто несколько менее изящный способ сделать что sudo разработан, чтобы позволить Вам делать с sudo -s. Точно так же sudo -i более изящный путь состоит в том, чтобы достигнуть что sudo su - получил бы Вас: моделируемый начальный вход в систему окружает, чья среда похожа на то, что Вы получили бы, если Вы могли бы войти в систему как корень на командной строке. Посмотрите man sudo.

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

С или не открывая корневую оболочку, возможно использовать sudo способом это вредит Вашей безопасности. Например, не запускайте Firefox или LibreOffice с sudo. Потенциальные проблемы с выполнением корневой оболочки состоят главным образом в том, что можно закончить тем, что выполнили действия, поскольку корень излишне, и в ходе выполнения так мог бы сделать ошибки, которые намного более вредны, когда корень делает их. Поэтому не достаточно решить, "я просто избегу этой проблемы полностью, не выполняя корневую оболочку". Довольно разумно постараться не выполнять корневые оболочки, но что общий выбор все еще не устраняет необходимость быть внимательным, когда Вы действительно используете sudo.


Справка Ubuntu страница Wiki о sudo списки девять преимуществ использования sudo. Большинство, но не все эти преимущества применяется полностью к использованию sudo открыть оболочку, если Вы столь же остерегаетесь того, что Вы делаете в той оболочке, как Вы имеете то, что Вы делаете в отдельных командах, с которыми Вы используете sudo. Это исключения - преимущества sudo то, что Вы не полностью наслаждаетесь при использовании его для открытия корневой оболочки:

  1. sudo добавляет запись в журнале выполненной команды (команд) (в /var/log/auth.log). Если Вы портите, можно возвратиться и видеть, какие команды были выполнены.

См. также ответ bodhi.zazen. Одна команда, которую Вы используете для открытия той оболочки, все еще зарегистрирована к auth.log, но команды, которые Вы выполняете от него, не.

  1. Аутентификация автоматически истекает после короткого времени (который может быть установлен на так мало как желаемый или 0); таким образом, если Вы убежите от терминала после выполнения команд как корень с помощью sudo, то Вы не будете оставлять корневой терминал открытым неограниченно долго.

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

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

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

Если бы необходимо было притвориться, что Вы были корнем и не имели никакой другой учетной записи пользователя при использовании этой корневой оболочки, то, конечно, Вы потеряли бы это преимущество полностью. Однако, когда Вы работаете sudo -s, sudo -i, или другая команда, которая дает Вам оболочку, Вы уже были в некорневом входе в систему (если Вы не делаете это от режима восстановления или включили корневые логины), таким образом, этого искушения намного легче избежать.

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

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

  1. sudo может быть установкой с намного более мелкомодульной политикой безопасности.

Выполнение корневой оболочки не уменьшает это преимущество вообще, потому что это может только быть сделано пользователями, которые настроены, чтобы смочь выполнить любые действия, и таким образом не позволяет Вам сделать что-либо, что Вы не могли сделать прежде дизайном. (Это - другая причина, глубже, чем простое присутствие -s и -i опции, это sudo su не действительно подобный бэкдору вообще.)

Технически, это могло также быть сделано пользователями, в которых Вы настроили sudoers "только" быть позволенным выполнить корневые оболочки и ничто иное! Но это было бы очень глупой конфигурацией, с тех пор если пользователь может выполнить оболочку как корень, они могут выполнить любое действие как корень. (Необходимо было бы предпринять определенное действие для создания этой глупой и опасной ситуации для пользователя, которого Вы намереваетесь практически ограничить.) Существует много команд, которые неожиданно опасны, чтобы позволить любому not-fully-trusted пользователю работать как корень - больше, чем просто оболочки и текстовые редакторы. Любая команда, которая генерирует выходной файл в местоположении пользователь, указывает, может использоваться для осуществления нападения расширения полномочий, если она может быть выполнена пользователем, Вы не намереваетесь уже смочь сделать независимо от того, что они выбирают как корень.


Если Вы принимаете решение выполнить интерактивную оболочку как корень, очень осторожны. Рассмотрите, помогает ли это действительно Вам, и если Вы закончите тем, что делали больше как корень, чем Вы предназначаете. Помните, что, даже в системе со всего одним пользователем - человеком, даже при том, что можно сделать плохие вещи как удаление всех персональных файлов без использования sudo вообще выполняя действия, поскольку корень просто не позволяет Вам вредить Вашей системе Ubuntu большим количеством способов. Если Вы делаете вещи как корень, которые не должны быть сделаны как корень, Вы мешаете рассуждать о том, какой вред возможен (или произошли).

После этих слов существуют многочисленные общие альтернативы использованию корневой оболочки, которые являются одинаково или более опасны. Например, Вы могли бы выполнить команду без sudo, но это перестало работать, так как необходимо было выполнить его как корень, затем используйте расширение истории для выполнения его с sudo. Но действительно ли Вы уверены, что выполнили правильную команду? Со сложной историей расширение создает как надежда sudo !f выполнит Ваше последнее foo команда, ошибки чрезвычайно легки. Но даже с основным !! для выполнения последней команды ошибки происходят. Если Вы работали foo; bar и затем выполненный sudo !!, это foo или bar это работает как корень? Если Вы собираетесь использовать расширение истории с sudo, недостаточно знать ответ - необходимо успешно выполниться при хранении, это возражает каждый раз, когда Вы делаете это.

Для большинства ситуаций способ, которым я рекомендую Вам, старается не перепечатывать при добавлении sudo к командам должен просто нажать Up Arrow, пока Вы не добираетесь до команды, которую необходимо было выполнить sudo, тесните, чтобы получить начало команды, считать команду тщательно, чтобы гарантировать, что это действительно, что Вы хотите сделать, затем введите sudo и пространство. Если ситуации, которые заставляют Вас выполнять корневую оболочку - или использовать более опасные методы - являются ситуациями, где довольно удобно просто сделать это, то Вам не нужна корневая оболочка. И если Вы забываете для ввода sudo (как многие из нас иногда, самостоятельно включенный), действительно помнят, что Вы могли бы также забывать другие вещи, вещи, которые сделают Вас довольными, что Вы забыли выполнять команду как корень.

1
ответ дан 2 December 2019 в 02:45

Вы подвергаете сомнению, больше мнение, чем что-либо еще.

лучшая практика IMO должна использовать sudo, каждый раз как sudo зарегистрирует Ваши команды, в то время как sudo su не будет (после того как Вы - корень).

, Если это слишком утомительно, я предлагаю sudo -i для лучшей изоляции между пользователем, и корневые учетные записи (переменные окружения)

Видят https://help.ubuntu.com/community/RootSudo#Special_notes_on_sudo_and_shells

2
ответ дан 2 December 2019 в 02:45

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

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