TL; DR: Делайте вещи как root только тогда, когда вам нужно. sudo
делает это довольно легко Если вы включаете root-логины, вы все равно можете следовать этому правилу, вам просто нужно соблюдать осторожность. Хотя включение корневых учетных записей на самом деле небезопасно, если все сделано правильно, вам не нужно включать корневые учетные записи, потому что у вас есть sudo
.
Здесь действительно два связанных вопроса.
- Почему плохо входить в систему как пользователь root для повседневного использования компьютера (просмотр веб-страниц, электронная почта, обработка текстов, игры и т. Д.)?
- Почему Ubuntu по умолчанию вообще отключает входы в систему root и использует
sudo
и polkit, чтобы позволить администраторам запускать определенные команды от имени пользователя root?
Почему бы не запустить все как root, все время?
Большинство других ответов покрывают это. Это сводится к:
- Если вы используете полномочия root для задач, которые не требуют их, и в конечном итоге вы делаете то, что не хотели делать, вы можете изменить или повредить свою систему так, как вам не нужно.
- Если вы запускаете программу с правами root, когда вам это не нужно, и она в конечном итоге делает что-то, чего вы не хотели делать - например, из-за уязвимости в системе безопасности или другой ошибки - она может измениться или нанести вред ваша система так, как вы не хотите.
Это правда, что даже не делая рута, вы можете причинить вред. Например, вы можете удалить все файлы в вашем собственном домашнем каталоге, который обычно включает в себя все ваши документы, без запуска от имени root! (Надеюсь, у вас есть резервные копии.)
Конечно, у пользователя root есть дополнительные способы случайно уничтожить те же данные. Например, вы можете указать неверный of=
аргумент для dd
команды и записать необработанные данные поверх ваших файлов (что делает их более трудными для восстановления, чем если бы вы просто удалили их).
Если вы единственный человек, который использует ваш компьютер, то вред, который вы можете нанести только пользователю root, на самом деле может быть не выше, чем вред, который вы можете нанести своим привилегиям обычного пользователя. Но это по-прежнему не является причиной для расширения вашего риска, чтобы включить дополнительные способы испортить вашу систему Ubuntu.
Если работа с учетной записью без полномочий root не позволяет вам осуществлять контроль над своим компьютером, то это, конечно, будет плохим компромиссом. Но это не так - всякий раз, когда вы действительно хотите выполнить действие от имени пользователя root, вы можете сделать это с помощью sudo
других методов .
Почему бы не сделать возможным вход в систему как root?
Идея о том, что возможность входа в систему от имени пользователя root небезопасна, является мифом. В некоторых системах учетная запись root включена по умолчанию; другие системы используют sudo
по умолчанию, а некоторые настроены с обоими.
- Например, OpenBSD , которая широко и разумно считается самой безопасной ОС общего назначения в мире, поставляется с корневой учетной записью, включенной для локального входа на основе пароля.
- Другие уважаемые ОС, которые делают это, включают RHEL , CentOS и Fedora .
- Debian (из которого происходит Ubuntu ) предлагает пользователю решить, какой подход будет настроен во время установки системы.
Это не объективно неправильно иметь систему, в которой включена корневая учетная запись, при условии, что
- вы все еще используете его только тогда, когда вам действительно нужно, и
- вы ограничиваете доступ к нему соответствующим образом.
Часто новички спрашивают, как включить учетную запись root в Ubuntu. Мы не должны скрывать эту информацию от них, но обычно, когда люди спрашивают об этом, это потому, что у них ошибочное впечатление, что им нужно включить учетную запись root. На самом деле в этом почти никогда нет необходимости, поэтому, отвечая на такие вопросы, важно объяснить это. Включение учетной записи root также облегчает самоуспокоенность и выполнение действий от имени root, для которых не требуются привилегии root. Но это не означает, что включение учетной записи root само по себе небезопасно.
sudo
поощряет и помогает пользователям запускать команды от имени пользователя root только тогда, когда это необходимо. Чтобы выполнить команду от имени пользователя root, введите sudo
пробел, а затем команду. Это очень удобно, и многие пользователи всех уровней квалификации предпочитают такой подход.
Короче говоря, вам не нужно включать root-логины, потому что у вас есть sudo
. Но до тех пор, пока вы используете его только для административных задач, которые в этом нуждаются, он примерно одинаково безопасен для включения и входа в систему как root, при условии, что это только так :
- Локально, из неграфической виртуальной консоли .
- С помощью
su
команды при входе в систему с другой учетной записи.
Однако существенные дополнительные риски безопасности возникают, если вы входите в систему как root следующими способами:
Графически. Когда вы входите в систему графически, для обеспечения графического интерфейса запускается множество вещей, и вы в конечном итоге запускаете еще больше приложений с правами root, чтобы использовать этот интерфейс для чего угодно. Это идет вразрез с принципом запуска только программ с правами root, которым действительно нужны привилегии root. Некоторые из этих программ могут содержать ошибки, в том числе ошибки безопасности.
Кроме того, есть причина, не связанная с безопасностью, чтобы избежать этого. Графический вход в систему как root не поддерживается - как отмечает loevborg , разработчики настольных сред и графических приложений не часто тестируют их как root. Даже если они это сделают, вход в графическую среду рабочего стола в качестве пользователя root не будет проходить реальное альфа- и бета-тестирование пользователями, поскольку почти никто не пытается это сделать (из соображений безопасности, описанных выше).
Если вам нужно запустить определенное графическое приложение от имени пользователя root, вы можете использоватьgksudo
или sudo -H
. Это запускает гораздо меньше программ с правами суперпользователя, чем при графическом входе с учетной записью root.
Дистанционно. По root
сути, учетная запись может делать что угодно, и она имеет одинаковое имя практически во всех Unix-подобных системах. Войдя в систему как root с помощью ssh
или с помощью других удаленных механизмов, или даже настроив удаленные службы, чтобы позволить это , вы значительно упростите для злоумышленников, включая автоматизированные сценарии и вредоносные программы, работающие в бот-сетях, доступ через грубую силу, атаки по словарю (и, возможно, некоторые ошибки безопасности).
Возможно, риск не очень высок, если вы разрешаете только основанные на ключе , а не основанные на пароле корневые учетные записи.
По умолчанию в Ubuntu не разрешены ни графические входы в систему root, ни удаленные входы через SSH, даже если вы включаете вход в систему как root . То есть, даже если вы включите root-вход, он по-прежнему будет активен только в достаточно безопасных режимах.
- Если вы запускаете ssh-сервер в Ubuntu и не изменились
/etc/sshd/ssh_config
, он будет содержать строку PermitRootLogin without-password
. Это отключает основанный на пароле вход в систему root, но разрешает вход на основе ключа. Однако по умолчанию ни один ключ не настроен, поэтому, если вы его не настроите, он тоже не будет работать. Кроме того, удаленный вход в систему на основе ключей гораздо менее опасен, чем удаленный вход в систему на основе пароля, отчасти потому, что он не создает риск атак методом перебора и словарных атак.
- Несмотря на то, что настройки по умолчанию должны защищать вас, я думаю, что все же будет хорошей идеей проверить вашу конфигурацию ssh, если вы собираетесь включить учетную запись root. И если вы используете другие сервисы, которые предоставляют удаленный вход в систему, например, ftp, вы должны также проверить их.
В заключение:
- Делайте вещи как root только тогда, когда вам нужно;
sudo
поможет вам сделать это, и в то же время предоставит вам все возможности root в любое время, когда вы этого захотите.
- Если вы понимаете, как работает root, и опасно злоупотреблять им, включение учетной записи root не является проблематичным с точки зрения безопасности.
- Но если вы понимаете это, вы также знаете, что вам почти наверняка не нужно включать учетную запись root .
Для получения дополнительной информации о root и sudo
, в том числе о некоторых дополнительных преимуществах, sudo
которые я здесь не освещал, я настоятельно рекомендую RootSudo в справочной вики Ubuntu.