Linux не пускает под root

Обновлено: 06.07.2024

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

В командной строке shell/SSH введите команду:

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

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

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

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

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

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

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

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

В меньшей степени наличие пользователя без полномочий 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.

После внезапного отключения электричества, неудачного обновления или добавления нового диска в /etc/fstab вы можете столкнуться с проблемой, что ваша система не загружается, а точнее говоря, загружается в консоль или в чёрный экран. Иногда проблема усугубляется тем, что системный администратор не может попасть даже в аварийную консоль. Рассмотрим, как решить следующую ошибку:


После нажатия Enter всё может повториться.

Как разблокировать пользователя root в аварийном режиме

Тем не менее, выход из данной ситуации есть. Начните с того, что загрузитесь в однопользовательский режим — это тот же самый режим, который используется для сброса пароля Linux. Ниже приведена обобщённая инструкция, если у вас что-то не получается, то отдельные инструкции для разных дистрибутивов по загрузке в однопользовательский режим вы найдёте здесь.

Остановите загрузку удерживая клавишу SHIFT при запуске компьютера, вы увидите:


Нажмите клавишу «e» и вы перейдёте к редактированию настроек загрузки:

Найдите строку, начинающуюся с linux.


Перейдите в конец этой строки, поставьте пробел и допишите:

Должно получиться примерно так (номер ядра может отличаться):


Когда всё готово нажмите Ctrl+x или F10, чтобы загрузка продолжилась с установленными опциями.

Вы увидите приглашение оболочки, также обратите внимание, что мы вошли как root, т.е. у нас имеются повышенные привилегии, в том числе на использование команды passwd:

устанавливаем пароль пользователя root.

Если команда passwd завершилась ошибкой:

то скорее всего файловая система смонтирована только для чтения. Чтобы в этом убедиться введите команду:

Буквы ro говорят о том, что файловая система смонтирована только для чтения и по этой причине сделанные изменения не могут быть сохранены. Перемонтируем файловую систему:

После этого смена пароля должна пройти успешно.

Снимаем блокировку с входа по паролю для пользователя root:

Если пользователь root заблокирован, то этого может быть недостаточно. Проверьте, какая оболочка установлена для root:

Если для root в качестве оболочки указана строка «/usr/sbin/nologin», то выполните одну из следующих команд.

  • Чтобы назначить пользователю root оболочку Bash:
  • Чтобы назначить пользователю root оболочку ZSH:

Для выхода наберите:

Чтобы выключить компьютер выполните:

Или перезагрузите компьютер командой:

Если после перезагрузки вы увидели «Give root password for maintenance», то это означает, что первый этап восстановления прошёл успешно — мы активировали пользователя root и теперь может приступить к восстановлению системы.


Как восстановить компьютер, попавший в аварийном режиме

Теперь у нас появилась возможность восстановить систему. Если у вас нет идей, что именно вызвало ошибку, то выполните команду

и попробуйте найти причину проблемы там.

Проверка дисков на ошибки

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

Номер раздела и имя диска могут отличаться от «sda2», чтобы узнать точное имя, используйте команду

Неудачное обновление

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

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

Эта команда проведёт повторную конфигурацию уже установленного пакета.

Например, следующая команда выполнит повторную конфигурацию ядра Linux:

Система не загружается из-за неправильной записи в /etc/fstab

Закомментируйте или удалите проблемную строчку. Сохраните файл (Ctrl+o), закройте его (Ctrl+x) и перезагрузитесь:

Как восстановить доступ к Debian Linux в случае проблем с sudo или утратой root-пароля


В некоторых ситуациях может получиться так, что мы потеряем административный доступ к серверу на базе Debian GNU/Linux. Например, к такому исходу могут привести некорректные действия администратора по настройке механизма sudo (ошибки при правке файлов /etc/sudoers и/или /etc/sudoers.d/* ) и, как следствие, получение ошибки «Username is not in the sudoers file» при любых дальнейших попытках использования sudo. Иногда бывают ситуации, когда локальный доступ к серверу есть, а данные административной учётной записи недоступны и требуется восстановить административный доступ к серверу.

Загрузка в recovery mode

Для того, чтобы попасть в меню загрузки, в процессе запуска ОС Debian нажимаем кнопку Shift. В появившемся меню загрузчика GRUB выбираем расширенный режим загрузки:


Затем выбираем интересующее нас ядро Linux в режиме recovery mode…



В таком случае мы можем прибегнуть к приёму изменения параметров загрузки ядра.

Нестандартная загрузка

В процессе загрузки в GRUB выбираем в списке ядер нужное нам ядро (режим recovery mode здесь уже не важен) и нажимаем «e» для редактирования параметров загрузки.


Находим строку начинающуюся с «linux …»


В конце строки меняем значение « ro » на « rw », а в самом конце строки дописываем вызов оболочки « init=/bin/bash ».


После чего для продолжения загрузки жмём F10


Дополнительные источники информации:

Проверено на следующих конфигурациях:


Автор первичной редакции:
Алексей Максимов
Время публикации: 13.06.2018 15:45

Root sudo Linux

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

Давайте детально обсудим, что может суперпользователь в Linux, как настроить root и для чего нужна команда sudo .

Предназначение root-прав в Linux

Права обычного пользователя в Linux крайне ограничены. Он может управлять только своим каталогом и открывать для чтения определенные файлы из корня. Доступ для их изменения или установки программ отсутствует, что делает привилегии суперпользователя крайне важными при настройке ОС и решении разных проблем. Обычный пользователь ограничивается следующим набором прав:

  • чтение, запись и изменение любых атрибутов пользовательской папки;
  • то же самое и для каталога /tmp ;
  • выполнение программ в любом месте, где нет ограничений;
  • чтение файлов с соответствующим атрибутом для всех пользователей.

При наличии рут-прав у юзера появляется гораздо больше возможностей и расширяются границы взаимодействия с операционной системой. Становятся доступными любые действия со всеми папками и файлами.

Безопасность использования прав суперпользователя

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

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

Команда sudo и примеры ее использования

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

Использование команды sudo в Linux

Самый простой пример использования sudo – запуск программы от имени суперпользователя. Для этого вводится:

Еще sudo применяется для установки софта, команда в таком случае обретает вид:

Если же вы желаете использовать сразу несколько команд, например, введя sudo cat file.txt | grep text > file.txt , появится ошибка, поскольку при выполнении второй команды права суперпользователя отсутствуют, а значит, запись в файл невозможна. Решается такая ситуация добавлением sudo перед каждым выражением.

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

VDS Timeweb арендовать

Переключение на суперпользователя

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

Примерно так же работает и команда su , но она обладает дополнительными аргументами, которые следует уточнить:

  • -c – позволяет выполнить команду;
  • -g – устанавливает группу для пользователя;
  • -G – дополнительные группы для юзера;
  • - , -l , --login – один из режимов входа, при котором происходит переключение домашнего каталога;
  • -p – сохранение переменных окружения;
  • -s – выбор оболочки для выхода.

Есть вариант выполнить вход в оболочку под суперпользователем, но он имеет свои неудобства. Он заключается в переключении в доступную виртуальную консоль, что осуществляется комбинацией Ctrl + Alt + F1-F6 . Там понадобится ввести логин и пароль root для получения доступа. Главный недостаток этого метода – потеря возможности взаимодействия с графическим интерфейсом операционной системы.

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

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

Предоставление и отзыв прав суперпользователя

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

Создание нового пользователя с root

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

sudo Linux

  1. Откройте Терминал и введите команду sudo adduser user (user замените на нужное имя пользователя).
  2. В консоли появятся инструкции по созданию нового пользователя. Присвойте пароль и подтвердите действие, чтобы завершить создание.
  3. Добавьте новую учетную запись в группу sudo, введя sudo usermod -aG sudo user ( user здесь тоже понадобится заменить).
  4. Проверьте выполненные действия, переключившись на новую учетную запись через su testuser . Для подтверждения введите пароль (при вводе символы не отображаются на экране).
  5. Выполните любую команду с sudo и убедитесь, что все прошло успешно.

Для существующей учетной записи

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

Предоставление прав суперпользователя существующей учетной записи в Linux

Используйте предыдущую инструкцию для проверки внесенных изменений.

Откат прав суперпользователя

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

Измените user на необходимое имя. Можете переключиться на эту учетную запись и убедиться в том, что теперь команды с sudo она выполнять не может.

Откат прав суперпользователя в Linux

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

Читайте также: