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