Введение
Добавление и удаление пользователей – это одна из базовых задач, с которой вы можете столкнуться при работе на новом сервере с ОС семейства Linux. Как правило, после того, как вы установили новую систему, у вас есть только один пользователь – суперпользователь.
С одной стороны, использовать суперпользователя удобно, так как он обладает широкими возможностями; с другой стороны, из-за этого вы можете случайно нанести вред только что установленной системе. Поэтому для выполнения стандартных действий лучше создать еще одного пользователя, но на этот раз не обладающего такими привилегиями. Также рекомендуется создать дополнительных пользователей для всех людей, которые будут пользоваться системой. У каждого пользователя должен быть свой аккаунт.
При этом вы сможете выполнять административные задачи при помощи пользователя с sudo правами. Из этого руководства вы узнаете, как создавать пользователей, наделять их правами sudo и удалять их.
Введение
sudo это сокращение от английского
Что по-русски звучит как
sudo является программой для системного администрирования UNIX-систем, позволяющая делегировать те или иные привилегированные ресурсы
пользователям с ведением протокола работы.
Основная идея — дать пользователям как можно меньше прав, при этом достаточных для решения поставленных задач.
Программа поставляется для большинства UNIX и UNIX-подобных операционных систем.
Команда sudo предоставляет возможность пользователям выполнять команды от имени суперпользователя root либо других пользователей.
Правила, используемые sudo для принятия решения о предоставлении доступа, находятся в файле
/etc/sudoers
(для редактирования файла можно использовать специальный редактор visudo,
запускаемый из командной строки без параметров, в том числе без указания пути к файлу); язык их написания и примеры использования подробно изложены в
man sudoers(5).
В большинстве случаев грамотная настройка sudo делает небезопасную работу от имени суперпользователя ненужной.
Все действия оказываются выполнимы из-под аккаунта пользователя, которому разрешено использовать sudo без ограничений.
Имеется возможность запрещать и разрешать определённым пользователям или группам выполнение конкретного набора программ, а также разрешить выполнение
определённых программ без необходимости ввода своего пароля.
Как восстановить доступ к Debian Linux в случае проблем с sudo или утратой root-пароля
В некоторых ситуациях может получиться так, что мы потеряем административный доступ к серверу на базе Debian GNU/Linux. Например, к такому исходу могут привести некорректные действия администратора по настройке механизма sudo (ошибки при правке файлов и/или ) и, как следствие, получение ошибки «Username is not in the sudoers file» при любых дальнейших попытках использования sudo. Иногда бывают ситуации, когда локальный доступ к серверу есть, а данные административной учётной записи недоступны и требуется восстановить административный доступ к серверу.
Загрузка в recovery mode
В типичных ситуациях в Linux имеется режим восстановления Recovery Mode, который, как правило, доступен из загрузчика ОС. В этом режиме наша Linux-система доступна в режиме супер-пользователя root, и мы можем исправить в ней имеющиеся у нас проблемы, например внести корректировки в файлы sudo или добавить/изменить учётные данные локального администратора.
Для того, чтобы попасть в меню загрузки, в процессе запуска ОС Debian нажимаем кнопку Shift. В появившемся меню загрузчика GRUB выбираем расширенный режим загрузки:
Затем выбираем интересующее нас ядро Linux в режиме recovery mode…
Однако в случае с Debian, где супер-пользователь root в конфигурации по умолчанию выключен, мы можем получить сообщение о невозможности загрузки консоли восстановления «Cannot open access to console, the root account is locked»:
В таком случае мы можем прибегнуть к приёму изменения параметров загрузки ядра.
Нестандартная загрузка
В процессе загрузки в GRUB выбираем в списке ядер нужное нам ядро (режим recovery mode здесь уже не важен) и нажимаем «e» для редактирования параметров загрузки.
Находим строку начинающуюся с «linux …»
В конце строки меняем значение «» на «», а в самом конце строки дописываем вызов оболочки «».
После чего для продолжения загрузки жмём F10
Теперь мы получили беспарольный root-доступ к нашему серверу. Здесь можно исправить имеющиеся у нас проблемы, например внести корректировки в файлы sudo. После внесения нужных правок система может быть загружена обычным образом (все сделанные нами ранее изменения в GRUB были временными).
Дополнительные источники информации:
- Ubuntu Wiki — Lost Password?
- How to Fix “Username is not in the sudoers file. This incident will be reported” in Ubuntu
Проверено на следующих конфигурациях:
Версия ОС |
---|
Debian GNU/Linux Stretch 9.4 |
Автор первичной редакции:Алексей Максимов
Время публикации: 13.06.2018 15:45
Поменялся IP-адрес
Как это проверить? В консоли откройте просмотр своей ВМ и внизу страницы найдите публичный IPv4 адрес. Если это не тот адрес, который вы указываете в параметрах подключения , то логично почему подключение не работает — вы подключаетесь не к своей ВМ.
Так как IP-адреса в Yandex.Cloud переиспользуются, то после того как он был освобожден вашей ВМ, адрес может быть выделен какой-то другой виртуалке, которая создается в данный момент.
Почему это происходит? Если IP-адрес машины был динамическим, то он не сохранится после остановки. Чтобы он сохранялся, нужно его сделать статическим. Например, в попапе, появляющемся при остановке ВМ.
Важное напоминание про ip-адрес. Если же ваша ВМ была остановлена из-за того, что биллинг аккаунт был заблокирован за неуплату, то никто за вас не сделает ip статическими и они слетят
Если же ваша ВМ была остановлена из-за того, что биллинг аккаунт был заблокирован за неуплату, то никто за вас не сделает ip статическими и они слетят.
Вывод: если вам важно, чтобы ip не менялся (например, на него указывает A запись DNS) сделайте его статическим
Что такое «/etc/shadow»?
Фактические данные о паролях хранятся в файле с именем «/etcshadow.
Данный файл на самом деле не содержит паролей в виде простого текста. Вместо этого, он использует функцию выведения ключей для создания случайных данных. Вот что хранится в данном файле.
Функция выведения ключей – это алгоритм, создающий при вводе одних и тех же данных определенный хэш. Такой же алгоритм выполняется на пароль, который дается в процессе аутентификации, и это значение сравнивается со значением в этом файле.
Имейте в виду, данный файл, в отличие от файла «/etc/passwd», не доступен дл прочтения непривилегированными пользователями.
Пользователь root имеет привилегии читать и писать в файлах; группа «shadow», содержащая пользователей, которым необходима аутентификация, имеет права на чтение.
Инструкция как подключиться по SSH
Я мог бы перепечатать официальную доку, но лучше просто дам на нее ссылку. Если коротко, то подключиться так:
ssh -i <путь_к_ключу/имя_файла_ключа> <имя_пользователя>@<публичный_IP-адрес_виртуальной_машины>
Если подставить значения команда будет выглядеть примерно так.
ssh -i ~/.ssh/id_rsa [email protected]
Также стоит убедиться, что создавая ВМ вы передали публичный ключ одной строкой, без переносов.Если ключ использует алгоритмы RSA, то он должен выглядеть примерно так. (Ключ сгенерирован для примера)
К сожалению Medium форматирует ключ так, что он выглядит многострочным, поэтому вставил gist.
Просто все пересоздадим
Отличный подход к облачным ресурсам. Если у вас stateless VM, то пересоздать ее и накатить все заново может быть быстрее, чем восстанавливать. Для этого все операции по-хорошему должны быть автоматизированы. Если вы еще не пробовали заниматься автоматизацией, то советую посмотреть вам в сторону инструмента HashiCorp Terraform. Yandex.Cloud поддерживает провайдер для него.
Вы можете декларативно описать необходимые ресурсы в облаке, запустить пару команд и Terraform приведет все к требуемому состоянию.
Вот мой пост как при помощи Terraform создать одну ВМ на Ubuntu и установить туда необходимое ПО. Официальную документацию вы можете найти здесь.
Вход под суперпользователем
Чтобы войти под пользователем root можно переключиться в одну из виртуальных консолей, например, с помощью сочетания клавиш Ctrl+Alt+F1 и затем ввести логин root и пароль root пользователя.
Вы получите полноценное окружение root с возможностью выполнять все действия, но такой способ очень непрактичный, так как вы теряете все преимущества использования графического интерфейса.
Можно поступить полностью противоположным путем, ввести логин root и его пароль в графическом менеджере входа, чтобы окружение рабочего стола работало от имени root, и мы получаем все права root linux, но такой вариант крайне не рекомендованный, и очень опасный, вы можете случайно повредить всю систему. Поэтому этот способ был отключен во многих менеджерах входа.
Создание нового пользователя
Нового пользователя можно создать при помощи нескольких команд.
Самый простой способ – использовать команду «adduser. В системах Ubuntu данная команда связана со скриптом «perl», который обрабатывает создание пользователя.
Команду можно вызвать следующим образом:
На данном этапе появится несколько вопросов, которые помогут внести необходимую информацию в файлы «/etc/passwd» и «/etc/shadow».
Можно просмотреть внесенную в файл «/etc/passwd» запись, введя:
Как можно видеть, данная команда использует поле для примечаний в своих интересах. Остальные поля заполнены должным образом.
Можно запустить похожую команду для того, чтобы просмотреть изменения, внесенные в файл «/etc/shadow».
Повышение пользовательских прав командой sudo
Существует более современный способ повышения пользовательских прав с помощью команды sudo (substitute user and do — подменить пользователя и выполнить).
Sudo является программой системного администрирования, дающей возможность выполнять команды от имени root. Если для выполнения команды su все пользователи должны были знать пароль root, что само по себе небезопасно, то sudo его не требует. В sudo нужен пароль самого пользователя.
Sudo работает следующим образом, перед командой которую необходимо выполнить, нужно добавить sudo, например:
От имени root: yum install -y wget При помощи sudo: sudo yum install -y wget
Sudo определяет пользователя сверяясь с настройками находящимися в файле /etc/sudoers, если пользователь внесен в sudoers, то команда выполняется. Если выполнить команду sudo от имени пользователя не внесенного в sudoers, то можно увидеть такую картину:
$ sudo yum install -y wget password for test: test is not in the sudoers file. This incident will be reported.
При попытке выполнить команду sudo, от имени пользователя test, выдается ответ что такого пользователя в файле sudoers не обнаружено. О событии создается запись в лог файле, также высылается электронное письмо root-пользователю с уведомлением о случившемся.
From [email protected] Sat Feb 11 20:19:12 2017 Return-Path: <[email protected]> X-Original-To: root Delivered-To: [email protected] Received: by test2.localdomain (Postfix, from userid 0) id CD2AF8051BC; Sat, 11 Feb 2017 20:19:12 +0300 (MSK) To: [email protected] From: [email protected] Auto-Submitted: auto-generated Subject: *** SECURITY information for test2 *** Message-Id: <[email protected]> Date: Sat, 11 Feb 2017 20:19:12 +0300 (MSK) test2 : Feb 11 20:19:12 : test : user NOT in sudoers ; TTY=pts/0 ; PWD=/home/test ; USER=root ; COMMAND=/bin/yum install wget
Для того чтобы пользователь мог выполнять sudo, его надо внести в файл sudoers. Сделать это можно двумя способами.
Первый способ — внесение имени пользователя непосредственно в сам файл /etc/sudoers. Для изменения файла sudoers, требуется обладать правами root.
nano /etc/sudoers Находим строку: root ALL=(ALL) ALL Добавляем под нее имя пользователя, которому будет разрешен доступ к sudo: root ALL=(ALL) ALL test ALL=(ALL) ALL Сохраняем и выходим.
После того как пользователь будет внесен в список допущенных к использованию, он может выполнять команду sudo.
Вторым способом разрешить пользователям выполнять команду sudo, является внесение пользователя в группу wheel, точно так же как в случае с командой su.
Вносим пользователя в группу wheel: usermod -a -G wheel techlist_1 Проверяем: id techlist_1 uid=1001(techlist_1) gid=1004(techlist_1) группы=1004(techlist_1),10(wheel) Перезагружаем систему: reboot
После перезагрузки системы, пользователь внесенный в группу wheel, сможет выполнять sudo.
Для того чтобы полностью сменить окружение пользователя на окружение root, используется команда sudo -i, что равносильно использованию команды su —
$ sudo -i password for test: #
Возвращение в свое пользовательское окружение, происходит при помощи команды exit.
Каждый раз при использовании sudo, требуется ввод пароля пользователя. При вводе пароля, происходит обновление временной метки, что позволяет выполнять sudo без ввода пароля на протяжении некоторого времени. По умолчанию ввод пароля не требуется на протяжении пяти минут, после чего пароль опять будет затребован. Временной промежуток можно изменить при помощи опции timeout в файле sudoers. Существует возможность отключения ввода пароля.
Отключить ввод пароля для пользователей принадлежащих к группе wheel:
Открываем для внесения изменений: nano /etc/sudoers Находим строку: # %wheel ALL=(ALL) NOPASSWD: ALL Раскомментировать строку: %wheel ALL=(ALL) NOPASSWD: ALL Сохраняем изменения и выходим.
Отключить ввод пароля для пользователей добавленных вручную:
Открываем для внесения изменений: nano /etc/sudoers Находим строку с нужным пользователем: test ALL=(ALL) ALL Изменяем ее: test ALL=(ALL) NOPASSWD: ALL Сохраняем изменения и выходим.
Sudo гибкая в настройке и позволяет настроить множество различных параметров. Грамотный администратор знающий sudo может творить настоящие чудеса с пользователями.
Для просмотра руководства по настройке sudo, выполняется команда:
Посмотреть руководство sudo: man sudoers Выйти из руководства: q Посмотреть список дополнительных опций команды: sudo -h
Предназначение root-прав в Linux
Права обычного пользователя в Linux крайне ограничены. Он может управлять только своим каталогом и открывать для чтения определенные файлы из корня. Доступ для их изменения или установки программ отсутствует, что делает привилегии суперпользователя крайне важными при настройке ОС и решении разных проблем. Обычный пользователь ограничивается следующим набором прав:
- чтение, запись и изменение любых атрибутов пользовательской папки;
- то же самое и для каталога /tmp;
- выполнение программ в любом месте, где нет ограничений;
- чтение файлов с соответствующим атрибутом для всех пользователей.
При наличии рут-прав у юзера появляется гораздо больше возможностей и расширяются границы взаимодействия с операционной системой. Становятся доступными любые действия со всеми папками и файлами.
2. Нажатие конверта (также в конечном счете небезопасно)
Итак, что, если мы отвергаем любые строки, содержащие пробелы, или пытаемся достичь ? Тогда окончательное решение может быть следующим:
Мы принимаем все, что находится под папкой, но также отклоняем любой вызов , если или или , или если папка нацелена напрямую. (Технически исключение делает код исключение избыточно, но я оставил оба для ясности.)
Я нашел папку и исключения , потому что иначе пользователь мог бы настроить таргетинг на самую папку. Теперь вы можете подумать, что будет блокироваться, если указана в папке, но вы ошибаетесь. На самом деле моя версия (2.2.6-1ubuntu1) запускается с мягким предупреждением и пустым файлом, затем на просит меня ввести любое имя файла, которое мне нравится , чтобы сохранить, открыв новый вектор атаки! Ну, по крайней мере, он отказался перезаписать существующий файл (в одном тесте, который я сделал). Во всяком случае, поскольку нет способа вложить в черный список подпапки с sudo, мы должны сделать вывод, что этот подход снова небезопасен. Извините пользователей!
Это открытие заставило меня сомневаться в тщательности «ограниченного» режима . Говорят, что цепь настолько же сильна, как и ее слабая связь. Я начинаю чувствовать комбинацию черного кода и может быть не более безопасным, чем цепочка маргариток.
Как зайти под root в Ubuntu Desktop GUI
Если вы хотите зайти в систему как пользователь root не в консоли, а на графическом рабочем столе Ubuntu, тогда вам нужно выполнить несколько дополнительных шагов после включения пользователя root:
Откройте фаил /etc/gdm3/custom.conf . Здесь Вам надо будет добавить AllowRoot = true в блоке . Вот так:
Затем откройте файл /etc/pam.d/gdm-password и найдите такую строку:
Закомментируйте её, поставив знак # перед ней:
Далее перезагрузите компьютер. Когда он перезапустится и появится экрану входа в систему — кликните на ссылку «Нет в списке?». Остаётся лишь ввести root в поле username и указать пароль для суперпользователя. Вот и всё!
Как вы знаете, Linux очень серьезно относится к управлению пользователями и предоставлению им прав на работу с системой. Обычный пользователь может записывать файлы только в свой каталог и каталог /tmp/. Также есть возможность читать некоторые файлы в корневой файловой системе. Но вы не можете устанавливать программы, ведь для этого нужно право на запись, не можете изменять атрибуты файлов, не можете запускать сервисы, не можете читать некоторые файлы логов и еще много чего не можете.
В Linux управлять корневой файловой системой и создавать там файлы имеет право только пользователь root.
В этой статье мы рассмотрим какие программы нужны для того, чтобы получить права root пользователя linux, как они работают, как выполнять программу с правами root от обычного пользователя и как запускать графические программы с правами root. А также выясним что такое sudo в чем разница su или sudo.
Как удалять пользователей
Если вам больше не нужен один из созданных пользователей, лучшим решением будет удалить его.
Вы можете удалить только пользователя, без удаления его файлов, используя команду:
# deluser newuser
При этом вы должны быть авторизованы под суперпользователем.
Если вы используете пользователя с sudo-правами, тогда команда будет выглядеть следующим образом:
$ sudo deluser newuser
Для того, чтобы удалить пользователя вместе с его домашней директорией, от лица суперпользователя вам нужно ввести:
# deluser --remove-home newuser
Для пользователей с sudo-правами:
$ sudo deluser --remove-home newuser
А если вы хотите лишить удаленного пользователя sudo-прав, вам нужно открыть конфигурационный файл:
# visudo
(если от суперпользователя)
или
$ sudo visudo
(если от пользователя с sudo-правами)
root ALL=(ALL:ALL) ALL newuser ALL=(ALL:ALL) ALL # Удалите эту строчку.
Это нужно для того, чтобы в дальнейшем созданный пользователь с таким же именем не получил случайно sudo-права.
1. Небезопасные подходы
Будьте осторожны с подстановочными знаками! Если вы предлагаете слишком большую гибкость (или любую гибкость), ее можно использовать:
В этом случае злоумышленник сможет отредактировать любой другой скрипт службы upstart, а затем запустит его:
(Sudo действительно предотвращает и по команде, но, к сожалению, не по аргументам.)
Я надеялся, что это может сработать, но оно все еще небезопасно:
Так как в настоящее время предлагает только шаблоны glob , , которые будет соответствовать любому — это не регулярное выражение!
(Edit: Я подумал, если вы могли бы уйти с вышеуказанным в вашей ситуации, потому что нет подпапок ниже . Мы потребовали, чтобы один символ был согласован после папки, а должен завершиться с ошибкой после имени файла. это не выполнимое решение, потому что принимает несколько аргументов. И вообще, это все равно будет небезопасно в папке с подпапками!)
Даже если у нас нет подпапок, и мы исключаем любые строки, содержащие , правило, предлагающее glob все еще может быть использован, потому что принимает несколько аргументов (циклически их на , и пространство с радостью принято с помощью glob.
Чтение файла «/etc/passwd»
Каждая строка файла содержит информацию о входе всех пользователей системы. Некоторые из этих пользователей могут быть созданы для работы демонов и фоновых служб.
Чтобы объяснить, какая именно информация содержится в строках данного файла, нужно подробно рассмотреть одну строку.
Поля информации разделяются двоеточием (:). Каждая строка типичного Linux-файла «/etc/passwd» содержит 7 полей:
- Root: имя пользователя;
- х: место для информации о паролях; пароль можно найти в файле «/etc/shadow».
- : ID пользователя. Каждый пользователь имеет уникальный идентификатор, благодаря которому система распознает его. ID root-пользователя всегда 0;
- : ID группы. Каждая группа имеет уникальный идентификатор. По умолчанию у каждого пользователя есть главная группа. Опять же, ID root-группы всегда 0;
- rootполедля примечаний. Данное поле можно использовать для описания пользователя или его функций. Оно может содержать что угодно, начиная от контактной информации пользователя и заканчивая описанием сервисов, для которых была создана учетная запись;
- root: домашний каталог. Для обычных пользователей домашним каталогом является «/home/username», для root-пользователя это «/root»;
- binbash: оболочка пользователя. Данное поле содержит оболочку, которая будет создана, или команды, которые будут выполняться при входе пользователя в систему.
По мере добавления пользователей с помощью таких команд, как «adduser и «useradd», или с установкой большего количества сервисов этот файл будет расти. Информация о новом пользователе будет добавлена в конце данного файла.
В большинстве случаев этот файл не нужно редактировать вручную, так как для управления ним существуют специальные инструменты, обеспечивающие использование правильного синтаксиса.
Добавляем нового пользователя в Ubuntu
Вы можете создать нового юзера одним из двух способов, причем каждый метод имеет свои определенные настройки и будет полезен в разных ситуациях. Давайте подробно разберем каждый вариант осуществления поставленной задачи, а вы, исходя из своих потребностей, выберите наиболее оптимальный.
Способ 1: Терминал
Незаменимое приложение в любой операционной системе на ядре Linux — «Терминал». Благодаря этой консоли производится множество самых разнообразных операций, в том числе и добавление пользователей. Задействована при этом будет всего лишь одна встроенная утилита, но с разными аргументами, о которых мы расскажем ниже.
- Откройте меню и запустите «Терминал», либо же вы можете зажать комбинацию клавиш Ctrl + Alt + T.
Пропишите команду , чтобы узнать стандартные параметры, которые будут применены к новому пользователю. Здесь вы увидите домашнюю папку, библиотеки и привилегии.
Создать учетную запись со стандартными настройками поможет простая команда , где name — любое имя пользователя, введенное латинскими символами.
Такое действие будет произведено только после ввода пароля для доступа.
На этом процедура создания учетной записи со стандартными параметрами успешно завершена, после активации команды отобразится новое поле. Здесь вы можете ввести аргумент -p, указав пароль, а также аргумент -s, задав используемую оболочку. Пример такой команды выглядит так: , где passsword — любой удобный пароль, /bin/bash — расположение оболочки, а user — имя нового пользователя. Таким образом создается юзер с применением определенных аргументов.
Отдельно хотелось бы обратить внимание и на аргумент -G. Он позволяет внести учетную запись в соответствующую группу для работы с определенными данными
Из основных групп выделяются такие:
- adm — разрешение на прочтение логов из папки /var/log;
- cdrom — позволяется использовать привод;
- wheel — возможность использовать команду sudo для предоставления доступа к определенным задачам;
- plugdev — разрешение на монтирование внешних накопителей;
- video, audio — доступ к аудио и видеодрайверам.
На скриншоте выше вы видите, в каком именно формате вводятся группы при использовании команды useradd с аргументом -G.
Теперь вы ознакомлены с процедурой добавления новых учетных записей через консоль в ОС Ubuntu, однако мы рассмотрели не все аргументы, а лишь несколько основных. Другие популярные команды имеют следующие обозначения:
- -b — использование базовой директории для размещения файлов юзера, обычно это папка /home;
- -c — добавление комментария к записи;
- -e — время, через которое созданный юзер будет заблокирован. Заполнять следует в формате ГГГГ-ММ-ДД;
- -f — блокировка юзера сразу после добавления.
С примерами присвоения аргументов вы уже были ознакомлены выше, оформлять все следует так, как указано на скриншотах, используя пробел после введения каждой фразы. Стоит также отметить, что каждая учетная запись доступна для дальнейшего изменения через все ту же консоль. Для этого задействуйте команду , вставив между usermod и user (имя пользователя) необходимые аргументы со значениями. Не относится это только к изменению пароля, он заменяется через , где 12345 — новый пароль.
Способ 2: Меню «Параметры»
Далеко не всем удобно задействовать «Терминал» и разбираться во всех этих аргументах, командах, к тому же, это не всегда и требуется. Поэтому мы решили показать и более простой, однако менее гибкий метод добавления нового юзера через графический интерфейс.
- Откройте меню и через поиск отыщите «Параметры».
На панели снизу нажмите на «Сведения о системе».
Перейдите в категорию «Пользователи».
Для дальнейшего редактирования потребуется разблокировка, поэтому кликните на соответствующую кнопку.
Укажите свой пароль и щелкните на «Подтвердить».
Теперь активируется кнопка «Добавить пользователя».
Первоочередно заполните основную форму, указав тип записи, полное имя, название домашней папки и пароль.
Далее отобразится «Добавить», куда и следует нажать левой кнопкой мыши.
Перед выходом обязательно сверьте всю введенную информацию. После запуска операционной системы юзер сможет войти в нее под своим паролем, если он был установлен.
Приведенные выше два варианта работы с учетными записями помогут правильно настроить группы в операционной системе и выставить каждому юзеру свои привилегии. Что касается удаления ненужной записи, производится она через то же меню «Параметры» либо командой .
Опишите, что у вас не получилось.
Наши специалисты постараются ответить максимально быстро.
Переключение на суперпользователя в терминале
Теперь мы подошли к более интересному и практичному. С помощью специальных утилит вы можете переключить текущий эмулятор терминала в окружения суперпользователя и выполнять все следующие команды не от своего имени, а от его, таким образом, дав программе права 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-прав в Linux все понятно, то вот к безопасности их использования есть вопросы. В основном, относится это к серверным машинам, поскольку риск взлома домашнего компьютера очень мал, да и кому нужны файлы обычного пользователя, чтобы ради этого затевать процедуру взлома. Если вы используете Linux как обычную операционную систему, работаете с документами и стандартными программами, используйте root для установки приложений и защиты системы от случайных изменений, которые могут внести другие пользователи компьютера.
С серверной частью все гораздо сложнее, поскольку рут как таковой не предоставляет полной защиты. Часто используемые пароли взламываются путем перебора или поиском бэкдора. Поэтому не стоит полагаться исключительно на защиту паролем, если вы владеете файлами сайтов или используете сервер для других целей. Займитесь настройкой файрвола, если это повысит уровень защиты.