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


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

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

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

Является ли это неправильной практикой для «бэкдора» в моем корневом аккаунте, используя sudo su? Этого следует избегать и вместо этого полагаться на использование sudo command вместо?


2
2017-10-04 17:16


происхождения




ответы:


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

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

С открытием или без открытия корневой оболочки можно использовать sudo таким образом, что это вредит вашей безопасности. Например, не запускайте Firefox или LibreOffice с помощью sudo, Потенциальные проблемы с запуском корневой оболочки в основном состоят в том, что вы можете в конечном итоге выполнять действия как root без необходимости, и при этом могут возникнуть ошибки, которые намного вредны, когда root их делает. Поэтому недостаточно решить: «Я просто полностью исключу эту проблему, не запуская корневую оболочку». Разумно избегать запуска корневых оболочек, но этот пустой выбор по-прежнему не устраняет необходимость помнить, когда вы делать использование sudo,


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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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


1
2017-10-04 19:20





Вы сомневаетесь, это скорее мнение, чем что-либо другое.

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

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

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


2
2017-10-04 17:22



Где регистрируется sudo? /var/log/auth.log? Корневая активность не определена? - Aruka J
Из help.ubuntu.com/community/RootSudo#Advantages_and_Disadvantages «4. sudo добавляет запись в журнал команд (-ов) (в /var/log/auth.log). Если вы испортились, вы можете вернуться и посмотреть, какие команды были запущены». - Panther
Но когда вы говорите, что sudo su не регистрируется (потому что вы root), означает ли это, что активность root не регистрируется нигде? - Aruka J
зависит. root после запуска sudo su не регистрируется в системных журналах вообще. Он может быть зарегистрирован в .bash_history, но не всегда. - Panther