Права суперпользователя root в linux: полный обзор

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

Теперь мы подошли к более интересному и практичному. С помощью специальных утилит вы можете переключить текущий эмулятор терминала в окружения суперпользователя и выполнять все следующие команды не от своего имени, а от его, таким образом, дав программе права root linux. Для этого существует утилита su. Вообще говоря, эта утилита позволяет не только переключаться на пользователя root но и на любого другого пользователя, но по умолчанию используется именно root. Рассмотрим ее подробнее. Команда su linux имеет следующий синтаксис:

$ su опции пользователь

Вот ее основные опции:

  • -c, —command — выполнить команду
  • -g, —group — установить основную группу пользователя (только для root)
  • -G —supp-group — дополнительные группы пользователя (только для root)
  • -, -l, —login — режим входа, будут очищены и инициализированы с учетом нового пользователя все переменные окружения, а также изменен домашний каталог
  • -p, —preserve-environment — сохранить переменные окружения
  • -s, —shell — задать оболочку для входа
  • —version — отобразить версию программы.

Теперь немного поэкспериментируем, чтобы понять как работает команда su linux.

Сначала выполним su без параметров, но для начала создадим переменную окружения, чтобы проверить как с ними обходится эта команда:

Теперь смотрим что получилось:

whoami $ pwd $ echo $VAR $ echo $PATH $ exit

Из этих команд мы видим, что теперь мы пользователь root, но домашней директорией считается директория нашего предыдущего пользователя и наша переменная не сохранилась также изменилась переменная PATH, теперь там добавлен путь /sbin.

Теперь используем вход в режиме логина:

И повторим ту же комбинацию:

whoami $ pwd $ echo $VAR $ echo $PATH $ exit

Та же ситуация, только на этот раз изменена ко всему еще и домашняя директория на директорию root. Но мы можем сохранить наши переменные окружения, если это нужно, для этого есть опция -p:

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

Получение прав суперпользователя таким способом используется во многих дистрибутивах, например, Debian, OpenSUSE, ArchLInux, Gentoo и т д. Но в Ubuntu, как дистрибутиве для начинающих вход под пользователем root отключен. Это сделано потому, что это тоже не очень безопасно, вы можете забыть что выполняете команду от root и что-то натворить в системе. Поэтому переходим к следующей программе.

Как стать пользователем root в Ubuntu?

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

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

sudo -i

user@nuc:~$ sudo -i password for user:root@nuc:~# whoamirootroot@nuc:~#

Вы заметите, что когда вы переключаетесь на root, командная строка оболочки меняется с $ (знак доллара) на # (знак ключа решетка).

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

Вы можете использовать команду su для переключения пользователей в Ubuntu . Вы можете использовать его с sudo для временного переключения на пользователя root:

sudo su

Если вы попытаетесь использовать команду su без sudo, вы столкнетесь с ошибкой su authentication failure.

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

exit

Типы пользователей

В ОС Linux существует три типа пользователей:

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

Системные пользователи — системные процессы у которых есть учетные записи для управления привилегиями и правами доступа к файлам и каталогам. Создаются системой автоматически.

Обычные пользователи — учетные записи пользователей, допущенных к управлению системой. Создаются системным администратором.

Каждый пользователь помимо имени имеет числовой идентификатор пользователя UID (User IDentificator). Пользователь root имеет идентификатор 0. Системные пользователи имеют идентификаторы от 1 до 100. Обычные пользователи имеют UID от 100.

Пользователи могут объединяться в группы. Каждый пользователь обязательно входит в ту или иную группу. Группы имеют числовой идентификатор группы GID (Group IDentificator).

Настройка sudo и прав доступа на выполнение различных команд

sudo позволяет разрешать или запрещать пользователям выполнение конкретного набора программ. Все настройки, связанные с правами доступа, хранятся в файле /etc/sudoers . Это не совсем обычный файл. Для его редактирования необходимо (в целях безопасности) использовать команду

По умолчанию, в нём написано, что все члены группы admin имеют полный доступ к sudo , о чём говорит строчка

Подробнее о синтаксисе и возможностях настройки этого файла можно почитать выполнив

Разрешение пользователю выполнять команду без ввода пароля

Для того, что бы система не запрашивала пароль при определенных командах необходимо в sudoers после строки # Cmnd alias specification добавить строку, где через запятую перечислить желаемые команды с полным путём(путь команды можно узнать, выполнив which имя_команды:

И в конец файла дописать строку

Создание синонимов (alias`ов)

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

и добавьте в конец файла строки

Работа с текстом

Парочка полезных команд для взаимодействия с любыми видами текстов на сервере через SSH.

cat — показывает текст из выбранного файла. В качестве аргумента передаем этой утилите текстовый документ, и cat выведет в консоль его содержимое. Синтаксис:

cat путь до файла, содержимое которого надо осмотреть

Чтобы взглянуть на содержимое файла timeweb.txt, который лежит на рабочем столе, напишем в терминал:

cat ~/Desktop/timeweb.txt

head — это «голова». Она работает по схожему с cat принципу. Отображает текст из файлов, где он имеется. Разница заключается в количестве отображаемого контента. Пользователь сам выбирает, сколько строчек текста вывести на экран, поставив аргумент -n. Команда head -n 4 ~/Documents/timeweb.txt покажет только первые четыре строки документа timeweb.txt из папки Documents.

tail — это «хвост». Работает, как head, но с противоположной стороны. Команда tail -n 8 ~/Documents/timeweb.txt покажет только первые восемь строк документа timeweb.txt из папки Documents.

touch — одна из множества команд для SSH, которую используют не по назначению. У нее весьма специфичная задача по изменению времени последнего открытия отдельных элементов файловой системы. Но ее быстро перепрофилировали чуть ли не в стандартный метод создания файлов. touch ~/Desktop/timeweb.html создаст HTML-документ с именем Timeweb на рабочем столе.

vi — используя с дополнительными аргументами, можно создавать новые текстовые файлы. Например vi /путь до директории, где нужно создать новый текстовый файл/. Или же редактировать уже существующие. Чтобы изменить содержимое какого-нибудь файла в домашней папке, надо ввести: vi /home/имя учетной записи/kakoy-to-tekstoviy-file.txt. Альтернативой vi может служить nano. Более современный и лояльный к новичкам редактор. К сожалению, может отсутствовать в системе по умолчанию и требовать установки.

wc путь до файла — показывает количество символов, количество строк и слов в выбранном текстовом документе.

grep — ищет конкретный кусочек текста в большом документе или распечатке из консоли. Чтобы дать понять, как он работает, покажу пример. Буду искать слово «немного» в файле timeweb.txt, лежащем у меня на рабочем столе. Сделаю это одной командой cat ~/Desktop/timeweb.txt | grep немного. Перед grep я использовал cat, чтобы вывести содержимое документа в консоль, а потом отфильтровать.

diff — сравнивает два файла и наглядно показывает строки, в которых обнаружились различия. Синтаксис: diff название первого файла название второго файла. Это может выглядеть так:

diff timeweb-1.html timeweb-2.html

Суперпользователь в Ubuntu

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

Но есть и более простой и правильный вариант, вы можете использовать опцию -i утилиты sudo чтобы перейти в терминал суперпользователя:

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

Вход в систему как Root

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

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

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

Использование sudo или su вместо входа в систему как root поможет предотвратить непреднамеренный ущерб при входе в систему как root.

Использование этих команд дает пользователю возможность подумать о команде до нанесения серьезного ущерба.

Некоторые дистрибутивы, такие как Ubuntu, оставляют корневую учетную запись заблокированной, пока вы не разблокируете ее вручную.

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

Введите . root как пользователь при входе в Linux.

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

Введите пароль пользователя root в качестве пароля пользователя.

Избегайте запуска сложных программ при входе в систему как root.

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

Восстановление root пароля в Ubuntu

Быстрое восстановление доступа

Забыли рутовый пароль для входа в Ubuntu Linux? Не беда. Сейчас расскажем, как быстро восстановить доступ.

Упомянутый здесь метод работает для сброса пароля Ubuntu в VMware, двойной загрузки или одиночной установки. Все, что вам нужно, это немного терпения и выполнить пару команд. Вы сбросите пароль root в течение пары минут.

Если нужна другая сборка, то мы также рассказывали про восстановление пароля в CentOS и Debian

Сброс пароля Ubuntu из режима восстановления (recovery mode)

Шаг 1. Загрузитесь в режиме восстановления

Включите компьютер. Зайдите в меню Grub. Как правило, оно появляется автоматически, а если нет, то удерживайте клавишу Shift, пока не появится меню загрузки.

Если вы используете Oracle VirtualBox или VMWare, вы должны удерживать клавишу Shift при появлении логотипа Oracle или VMWare.

В меню grub выберите «Дополнительные параметры для Ubuntu» (Advanced Options for Ubuntu) :

Здесь вы увидите возможность перейти в режим восстановления (recovery mode) :

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

Шаг 2. Переходим в командный интерпретатор суперпользователя

Теперь вам будут представлены различные варианты режима восстановления. Здесь вам нужно выбрать «Root Drop to root shell prompt» («Перейти в командный интерпретатор суперпользователя» по-русски) . Просто нажмите клавишу Enter, чтобы выбрать эту опцию.

После этого у вас внизу появится командная строка.

Шаг 3: Перемонтировать рут с правами записи

У вас должен быть доступ на запись к корневому разделу. По умолчанию он имеет доступ только для чтения. Используйте команду ниже, чтобы перемонтировать ее с правами записи:

Шаг 4: Сбросьте имя пользователя или пароль

Здесь вам будет представлен root-доступ. Используйте следующую команду, чтобы получить список всех доступных пользователей:

Из предыдущей команды выберите пользователя (username), для которого вы хотите сбросить пароль. Теперь используйте следующую команду для сброса пароля для выбранного пользователя (вместо username указываем имя нашего пользователя):

У нас запросят новый пароль и подтверждение. Введите новый пароль дважды:

Готово! Вы только что успешно сбросили пароль. Теперь выйдите из командной строки root:

Когда вы выйдете, вы вернетесь в меню режима восстановления. Выберите нормальный вариант загрузки — Resume.

Может появится предупреждение о совместимости графического режима, но не волнуйтесь. Полная перезагрузка решит проблему, если таковая имеется.

После перезагрузки вы сможете войти с новым паролем.

Альтернативный метод сброса пароля Ubuntu

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

Перезагрузите компьютер. Удерживайте Shift, чтобы открыть экран grub (если он не работает автоматически). Нажмите E в приглашении grub для редактирования экрана grub.

Найдите строку, начинающуюся с linux , измените ro на rw и добавьте init=/bin/bash в конце этой строки.

Нажмите Ctrl-X , чтобы сохранить изменения и загрузиться. Теперь вы загружаетесь в ядро Linux с правами на чтение и запись, и вместо графического интерфейса пользователя вы будете использовать оболочку bash. Другими словами, ваша система будет загружаться в корневой пароль без пароля.

Введите команду passwd с вашим именем пользователя. Если вы не знаете имя пользователя, проверьте с помощью команды ls/home (как в первом методе).

Теперь установите новый пароль. После того, как вы установили новый пароль, выйдите из терминала. Просто введите reboot в терминал или используйте команду выключения.

Готово! Пароль изменен.

Возможные проблемы и их решение

Ошибка “Authentication token manipulation error”

При вводе нового пароля у вас может появиться сообщение об ошибке манипулирования токеном (Authentication token manipulation error):

Причиной этой ошибки является то, что файловая система монтируется только с доступом для чтения. Измените доступ и перемонтируйте файловую систему следующим образом:

Нет пункта “recovery mode”

Если нет пункта recovery mode, то вам нужно выбрать строчку с вашей системой, нажать E и допишите в конец опций ядра слово single . Затем нужно нажать B чтобы загрузился тот же терминал с правами суперпользователя.

Вы можете увидеть такой вывод:

Убедитесь, что вы удалили опцию splash boot при редактировании пункта меню grub.

Ошибка “Failed to connect to bus”

При попытке перезагрузиться с помощью команды reboot вы можете получить:

Чтобы избавиться от этой ошибки перезагрузитесь так:

Заблуждения

  • Разве sudo не менее безопасно, чет su?

    Основая модель безопасности одинакова в обоих случаях, поэтому и уязвимость будет одинаковой. Любой пользователь, использующий su или sudo рассматривается как привилегированный пользователь. If that user’s account is compromised attby an attacker, the attacker can also gain root privileges the next time the user does so. The user account is the weak link in this chain, and so must be protected with the same care as root.
    On a more esoteric level, sudo provides some features which encourage different work habits, which can positively impact the security of the system. sudo is commonly used to execute only a single command, while su is generally used to open a shell and execute multiple commands. The sudo approach reduces the likelihood of a root shell being left open indefinitely, and encourages the user to minimize their use of root privileges.

  • Я не буду иметь возможность загрузиться в однопользовательском режиме! Программа sulogin в Ubuntu изменена для того чтобы можно было войти в однопользовательский режим, даже если пользователь root отключен.

  • Я могу получить права администратора из консоли без ввода пароля!

    Вам потребуется ввести пароль для этого. Console users have access to the boot loader, and can gain administrative privileges in various ways during the boot process. For example, by specifying an alternate init(8) program. Linux systems are not typically configured to be secure at the console, and additional steps (for example, setting a root password, a boot loader password and a BIOS password) are necessary in order to make them so. Note that console users usually have physical access to the machine and so can manipulate it in other ways as well.

Вход под суперпользователем

Чтобы войти под пользователем root можно переключиться в одну из виртуальных консолей, например, с помощью сочетания клавиш Ctrl+Alt+F1 и затем ввести логин root и пароль root пользователя.

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

Можно поступить полностью противоположным путем, ввести логин root и его пароль в графическом менеджере входа, чтобы окружение рабочего стола работало от имени root, и мы получаем все права root linux, но такой вариант крайне не рекомендованный, и очень опасный, вы можете случайно повредить всю систему. Поэтому этот способ был отключен во многих менеджерах входа.

Как зайти под root в Ubuntu Desktop GUI

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

Откройте фаил /etc/gdm3/custom.conf . Здесь Вам надо будет добавить AllowRoot = true в блоке . Вот так:

Затем откройте файл /etc/pam.d/gdm-password и найдите такую строку:

Закомментируйте её, поставив знак # перед ней:

Далее перезагрузите компьютер. Когда он перезапустится и появится экрану входа в систему — кликните на ссылку «Нет в списке?». Остаётся лишь ввести root в поле username и указать пароль для суперпользователя. Вот и всё!

Запуск графических программ с правами администратора

Для запуска графических программ с правами администратора можно воспользоваться диалогом запуска программ, вызываемым по умолчанию сочетанием клавиш Alt + F2 .

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

Вместо gksudo можно подставить gksu , кроме того, пользователи KDE должны вместо gksudo писать kdesu . У вас попросят ввести свой пароль, и, если вы обладаете нужными правами, Nautilus запуститься от имени администратора. Запуск любого графического ПО можно производить с правами администратора, просто написав в диалоге запуска

Как запускать команды от имени пользователя root в Ubuntu?

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

apt updateReading package lists… DoneE: Could not open lock file /var/lib/apt/lists/lock — open (13: Permission denied)E: Unable to lock directory /var/lib/apt/lists/W: Problem unlinking the file /var/cache/apt/pkgcache.bin — RemoveCaches (13: Permission denied)W: Problem unlinking the file /var/cache/apt/srcpkgcache.bin — RemoveCaches (13: Permission denied)

Итак, как вы запускаете команды от имени пользователя root? Простой ответ — добавить sudo перед командами, которые необходимо запускать от имени пользователя root.

sudo apt update

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

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

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

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

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

user@nuc:~$ sudo apt update password for user:

Как вы можете видеть в приведенном выше примере, пользователь user пытался запустить команду apt update с помощью sudo, и система запросила пароль для user.

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

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

Добавление пользователя в Sudoers

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

В дистрибутивах на основе RedHat, таких как CentOS и Fedora, имя группы sudo . Чтобы добавить пользователя в группу, выполните:

   В Debian, Ubuntu и их производных членам группы предоставляется доступ sudo:

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

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

Например, чтобы позволить пользователю запускать только команду sudo, введите:

   и добавьте следующую строку:

В большинстве систем команда открывает файл в текстовом редакторе vim. Если у вас нет опыта работы с vim, проверьте нашу статью о том, как сохранить файл и выйти из редактора vim .

Вы также можете разрешить пользователям запускать команды sudo без ввода пароля :

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Все про сервера
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: