Почему нет возможности войти в систему как root?

39

Почему Ubuntu не позволяет пользователям GUI входить в систему как root во время запуска системы как администратор в Windows?

Почему они ограничивают нас, чтобы войти только через терминал?

Renjith G
источник
4
Также обратите внимание на «gksu», который позволяет запускать графические приложения от имени пользователя root. Т.е. "гксу наутлиус"
Джереми
1
Некоторые дистрибутивы позволяют вам войти в X как root. CentOS6.2 является одним из них.
Джангофан

Ответы:

42

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

Давайте посмотрим на пример.

Что если кто-нибудь проникнет в вашу систему и скажет ей стереть ваши диски? Если вы работаете как обычный пользователь, вы можете (должны) удалять только те файлы, которые принадлежат вам, а не кому-либо еще. Если, скажем, у вас были другие люди, использующие компьютер, их файлы не будут затронуты вообще, как бы вы ни старались. Это означает, что вы не сможете изменить какие-либо системные файлы, и, следовательно, ваша система останется надежной и незатронутой / незараженной.

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

Взгляните на http://everyjoe.com/technology/explain-why-not-log-on-as-root/ , это хорошая статья, которая может объяснить это лучше, чем я.

РЕДАКТИРОВАТЬ: вот еще один http://ihazomgsecurityskillz.blogspot.nl/2010/09/running-as-root.html

EDIT2: вы всегда можете использовать sudo commandили gksu commandдля запуска в commandкачестве суперпользователя, оба из которых работают с графическими утилитами и утилитами командной строки. sudoобычно используется для CLI, и gksuявляется графическим запросом пароля, который делает то же самое.

В некоторой степени они позволяют вам стать rootвременно - намного, намного лучше, чем постоянно работать с правами root и рисковать нестабильностью.

евгений
источник
1
Но почему Fedora разрешает эту опцию при запуске?
Renjith G
5
Ubuntu спроектирован так, чтобы быть удобным для пользователя, и я подозреваю, что, запретив root, они снимают искушение у обычных пользователей (читай: новичков в Linux), работающих от имени root.
Евгений
Я не понял тебя.
Renjith G
2
Мой комментарий был немного неправильным. Допустим, вместо этого: запретив графический вход в систему root, он не позволяет людям работать от имени root, ЕСЛИ ОНИ НЕ ЗНАЮТ, ЧТО ОНИ ДЕЛАЮТ. То есть, на мой взгляд, это должно быть разрешено только опытным пользователям, которые знают и понимают все риски.
Евгений
1
Это должно быть немного агрессивно, просто чтобы вывести читателей обратно в реальность и действительно подчеркнуть.
евгений
11

В стандартной Ubuntu rootвход в систему запрещен ни из диспетчера входа GDM (графического), ни из текстовой консоли (т. Е. Той, которую вы получаете, если нажать Ctrl+ Alt+ F1).

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

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

Пример может помочь уточнить. Предположим, вы хотите установить новый сервис (демон) на вашем компьютере; это относительно новое, и вам нужно прочитать об этом и о том, как настроить его в соответствии с вашими потребностями. В конечном итоге вы будете часто просматривать веб-страницы, чтобы найти информацию, примеры конфигураций и т. Д., Возможно, вам понадобится IRC-чат, чтобы запросить дополнительную информацию - ни одно из этих действий не требует rootполномочий! В конце вам нужен только привилегированный доступ для двух операций:

  1. установить новую программу (т.е. sudo apt-get install ...), и
  2. изменить конфигурацию по умолчанию

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

Настройка Ubuntu по умолчанию идет в этом направлении; rootвместо этого, если бы вы использовали логин, вы бы в конечном итоге занялись серфингом в Интернете, выполнив IRC (и, возможно, все другие действия, которые вы выполняете одновременно) из rootучетной записи, таким образом, без необходимости подвергая систему угрозе.

Обновление: для вашего примера компилятора я бы поступил следующим образом:

  1. Войдите в систему через SSH как обычный пользователь и из другого узла Ubuntu или GNU / Linux, где у вас работает графический дисплей X11. Обязательно включите пересылку X11 через SSH:

    ssh -X myuser@remotemachine.example.org
    
  2. В командной строке shell / SSH введите команду:

    sudo /path/to/the/compiler/install/program
    

    Это запустит установщик компилятора с rootпривилегиями и получит доступ (через пересылку SSH) к графическому дисплею перед вами.

Риккардо Мурри
источник
Хорошо. Предположим, я использую один Linux-компьютер (10 пользователей подключены через putty). Я хочу установить одно программное обеспечение (например: один компилятор, также необходимо установить переменные среды для одного и того же) в качестве пользователя root, чтобы быть доступным для всех пользователей. Но установщик работает только в режиме графического интерфейса и не использует установщик командной строки и будет работать только при входе в систему с правами root. Как я могу управлять установкой? Я сталкивался с этой ситуацией при установке arm-linux-gcc в мою Ubuntu, но я успешно установил то же самое на своей машине fedora (версия RedHat Shrike)
Renjith G
@Renjit G: ну, это хороший вопрос сам по себе, почему бы тебе просто не задать его?
Риккардо Мурри
1
@Renjit G: Я хотел предложить вам задать новый вопрос. Задавать много конкретных вопросов лучше, чем задавать один многогранный вопрос, потому что он позволяет получить подробные и точные ответы. Редактируя текущий вопрос, ответы, которые вы уже получили, выглядят так, как будто они отвечают только на половину вашего вопроса ...
Риккардо Мурри,
Спасибо, Мурри. Я точно так и буду следовать, начиная с моих следующих постов.
Renjith G
1
Учитывая такой компилятор, я думаю, большинству из нас было бы любопытно, какой это компилятор. Для любого программного обеспечения, распространяемого через источники APT или автономные файлы .deb, установки через командную строку с использованием «sudo» достаточно (да, даже для всех пользователей). Также возможно установить такие файлы из GUI для всех пользователей, не будучи root. Запрос пароля GUI, который вы получаете, является эквивалентом "sudo".
вредит
8

Причины использования sudo в Ubuntu можно найти здесь . Если вам когда-нибудь понадобится быстрый способ «получить права», я использую sudo -sили sudo -i.

Хорхе Кастро
источник
9
И чтобы уточнить, я считаю, что sudo -s создает корневой сеанс в качестве пользователя, а sudo -i создает корневой сеанс в качестве корневого пользователя. Самый простой способ определить разницу - выполнить команду, а затем выполнить команду «echo $ HOME», чтобы узнать, какая среда используется. Или "cd ~", тогда "pwd" тоже подойдет.
Scaine
6

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

sudo passwd

Сначала вам будет предложено ввести пароль, затем вам будет предложено изменить пароль UNIX. Пароль, который вы введете, будет для rootучетной записи.

В Ubuntu Wiki есть отличная статья о глубине root и sudo в Ubuntu - предостережения и подводные камни.

Марко Чеппи
источник
5

Здесь есть два вопроса. Во-первых, почему в Ubuntu по умолчанию отключен вход в систему root? Об этом уже говорилось в нескольких постах.

Второй вопрос: почему графические корневые логины особенно оскорблены?

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

Вход в систему как root вообще не рекомендуется в Ubuntu, но в сообществе безопасности нет единого мнения, что это повсеместно плохая практика. Однако графические корневые учетные записи являются просто плохой практикой, и почти все операционные системы отказались от них или настоятельно рекомендуют против них.

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

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

Даже если вы решите включить root-вход, не входите графически как root. Включение корневых учетных записей может привести к немного более высокому риску безопасности; запуск всей графической среды от имени пользователя root повышает риск.

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

Наконец, даже некоторые графические инструменты администрирования, напримерusers-admin , не будут работать, если они запускаются от имени пользователя root, поскольку они ожидают, что они будут запускаться обычными пользователями и выполнять действия от имени пользователя root (даже не работая от имени пользователя root) с помощью PolicyKit.

Элия ​​Каган
источник
4

Откройте Терминал ( Ctrl+ Alt+ Tили Dash home> Дополнительные приложения> Установлено (разверните)> Терминал).

АКТИВИРОВАТЬ УЧЕТНЫЙ УЧЕТ

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

ДОБАВИТЬ НОВЫЙ ЛОГИН, ПОДПИСЫВАЙТЕ, ЧТО ВЫ МОЖЕТЕ ВХОДИТЬ В ROOT И ЕГО ПАРОЛЬ

В терминале наберите или вставьте. gksudo gedit /etc/lightdm/lightdm.conf, Это открывает окно графического текстового редактора, где вы можете редактировать файл конфигурации для экрана входа в систему.

Добавьте строку greeter-show-manual-login=trueв конец файла.

Теперь файл должен выглядеть следующим образом:

[SeatDefaults]
greeter-session=unity-greeter
user-session=ubuntu
greeter-show-manual-login=true

Сохраните lightdm.confфайл и выйдите из gedit.

Перезагрузите Ubuntu 12.04, и вы увидите новое окно «Login» (заменяет предыдущее окно «Other»), которое позволяет вводить имя пользователя и пароль. Введите rootимя пользователя, а затем введите пароль, назначенный для учетной записи root.

Я надеюсь, что это поможет другим, которые нуждаются / хотят rootполучить доступ.

Пит
источник
2

что касается Ubuntu 12.04 LTS, вы можете сделать это, используя привилегию root:

echo "greeter-hide-users=true" >> /etc/lightdm/lightdm.conf

Затем вас попросят ввести имя пользователя и пароль для графического входа. Я предполагаю, что вы уже установили пароль для root :)

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

Аллан Руин
источник
1

Потому что пользователь root и Администратор (в Windows) являются эквивалентом Бога для компьютера. Этот пользователь может настроить что угодно, от прав доступа к файлу до удаления всей файловой системы. Обычный домашний пользователь довольно часто запускается от имени администратора (либо под этим именем, либо под другим именем, заданным при первой загрузке). Поскольку любая программа, выполняемая от имени этого пользователя, является общесистемной, она становится опасной.

Отсутствие контроля над административными привилегиями допускает наличие вирусов / вредоносных программ или даже самоуничтожение. Именно из-за этого многие дистрибутивы, в том числе Ubuntu, ограничили переход к высокой мощности дополнительным шагом (несколько познавательный шаг, который помогает утверждать, что «любые изменения, которые я делаю здесь, являются изменениями, более масштабными по объему»).

Кейси Келлер
источник
хе хе ... "любые изменения, которые я делаю здесь, более масштабны".
EMF
1

Хотя вы не можете войти в систему напрямую как root (по причинам, которые другие уже хорошо объяснили), вы можете запускать приложения с графическим интерфейсом как root. Например, Система → Администрирование → Synaptic Package Manager - это графическое приложение, работающее с правами суперпользователя.

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

sudo name-of-the-application
gksu name-of-the-application

Они почти идентичны. Основное отличие состоит в том, что первый запрашивает ваш пароль на терминале, второй использует графическое диалоговое окно.

Андреа Корбеллини
источник
1
Разница между sudoи gksuболее значительна, чем когда вы вводите свой пароль. gksuпредпочтительнее для приложений с графическим интерфейсом и sudoдля командной строки, смотрите здесь и здесь
Уоррен Хилл
1

Root действительно не рекомендуется для обычного использования, но иногда у вас есть длинный список команд терминала, которым нужны привилегии root, и просто удобнее войти в систему как root. Я использую sudo xtermили gksu xtermчтобы открыть корневой терминал, я думаю, что немного проще отличить, какое окно термина имеет привилегии root, когда у вас есть удобная подсказка термина «root @»

Барри К
источник
0

Дополнительное примечание: Ubuntu не позволяет пользователям графического интерфейса входить в систему как root, потому что Ubuntu предотвращает случайное удаление или удаление важных файлов с помощью приложений GUI (например, nautilus).

Только с пользовательским интерфейсом CLI это может снизить риск нашей ошибки. Но раньше мы не могли войти в систему как root даже в режиме CLI, потому что Ubuntu создает случайный пароль для root. Корневая административная задача может быть выполнена только с использованием пароля пользователя с командой sudo или gksu.

Он основан на правиле Debian.

squallbayu
источник
что значит команда gksu?
Renjith G
1
man gksu: gksu - GTK + внешний интерфейс для su и sudo
squallbayu 13.10.10
1
Извините. Снова, не достаточно ясно для меня
Renjith G
Я имею в виду «gksu» означает GTK + внешний интерфейс для su и sudo.
squallbayu 13.10.10
1
Да, ты прав. попробуйте 'gksu nautilus' в терминале. Наутилус с рут правами появится.
squallbayu
0

Учитывая, что нет веских причин для входа в систему как root , я бы предположил, что разница между RH (разрешить root-вход) и ubuntu (делать все, используя sudo / gksu) является вопросом предпочтений.

Что касается другой части вашего вопроса, вы сможете запустить графическую установку, войдя в систему как обычный пользователь, нажав ALT-F2и введя gksu. В появившемся диалоговом окне просто введите команду, которая запускает ваш установщик.

agnul
источник
0

Root не рекомендуется для повседневных ежедневных задач. Поскольку он предоставляет вам привилегии суперпользователя, он может быть использован не по назначению. Таким образом, при входе в систему нет возможности для пользователя root.

Ашу
источник
0

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

Кто-то, кто может войти в систему как root, может быть очень плохим с точки зрения безопасности.

Эй гэри
источник