В этом руководстве объясняется, как добавлять, удалять и предоставлять привилегии Sudo пользователям в операционных системах Linux.
Приведенные ниже шаги протестированы в Ubuntu 20.04 LTS edition.
Тем не менее, шаги аналогичны для других дистрибутивов, таких как Arch Linux, Debian, Fedora, CentOS, RHEL, openSUSE и т. д.
Прежде чем перейти к теме, давайте рассмотрим, что такое sudo и каковы его преимущества.
Что такое пользователь sudo?
В операционных системах Linux и Unix есть специальный пользователь с именем root.
Пользователь root может делать все что угодно в Unix-подобной системе.
Использование пользователя root для повседневной деятельности может быть опасным и не рекомендуется по соображениям безопасности.
Одна неверная команда может разрушить всю систему!
Именно тут «sudo» приходит на помощь.
Оно позволяет авторизованным пользователям выполнять задачи с привилегиями корневого уровня, даже если они не знают пароль пользователя root.
Вот почему важно создать обычного пользователя и добавить его в группу пользователей sudo для выполнения административных задач, когда это необходимо.
Следовательно, этот пользователь может действовать как обычный пользователь и как администратор при запуске команд с префиксом sudo
Преимущества использовать sudo
- Пароль root не нужно передавать другим пользователям.
- Пользователям не нужно знать пароль пользователя root для выполнения административных задач.
- При выполнении административной задачи пользователям будет предложено ввести пароль sudo, прежде чем в системе произойдут какие-либо изменения. Это должно заставить пользователей задуматься о последствиях того, что они делают.
- Права администратора могут быть легко предоставлены пользователям и отменены в любое время, если они больше не требуются.
- Некоторые дистрибутивы Linux, например Ubuntu, по умолчанию отключают пользователя root. Таким образом, нет никакого способа запустить атаки брутфорса на пользователя root. Даже если кто-то попробует, это будет бессмысленно.
- Потому что нет пароля для взлома.
- Что еще более важно, сессия sudo будет отключена по истечении короткого периода времени. На всякий случай, если вы оставили терминал открытым после выполнения команд от имени пользователя root с разрешением sudo, аутентификация автоматически истекает. Следовательно, другие пользователи не могут выполнять никаких дополнительных административных задач. По умолчанию пароль сохраняется в течение 15 минут в текущем сеансе. После этого вам необходимо снова ввести пароль.
- Вы можете за действиями пользователей командной строки sudo. sudo добавляет запись журнала команд, запускаемых пользователями, в файл /var/log/auth.log. Если есть какие-либо проблемы, вы можете посмотреть на эти команды и попытаться выяснить, что пошло не так.
Добавление, удаление и предоставление привилегий Sudo пользователям Linux
Сначала мы создадим обычного пользователя.
1. Добавим нового пользователя Linux
Сначала создайте обычного пользователя, например «ubuntuserver».
Для этого запустите:
$ sudo adduser ubuntuserver
Вывод:
Adding user `ubuntuserver' ...
Adding new group `ubuntuserver' (1001) ...
Adding new user `ubuntuserver' (1001) with group `ubuntuserver' ...
Creating home directory `/home/ubuntuserver' ...
Copying files from `/etc/skel' ...
New password:
Retype new password:
passwd: password updated successfully
Changing the user information for ubuntuserver
Enter the new value, or press ENTER for the default
Full Name []: ubuntu 20.04 server
Room Number []:
Work Phone []:
Home Phone []:
Other []:
Is the information correct? [Y/n] y
Новый пользователь с именем «ubuntuserver» был создан.
2. Предоставление привилегий Sudo пользователям Linux
В некоторых системах Linux, например Arch Linux, вам необходимо установить пакет «sudo» перед созданием нового пользователя sudo.
# pacman -S sudo
На Debian:
# apt install sudo
На сервере Ubuntu и на настольных ОС «sudo» устанавливается по умолчанию.
$ sudo adduser ubuntuserver sudo
Пример вывод:
Adding user `ubuntuserver' to group `sudo' ...
Adding user ubuntuserver to group sudo
Done.
Пользователь с именем «ubuntuserver» получил права sudo.
Вы также можете использовать следующую команду, чтобы добавить пользователя в группу sudo.
$ sudo usermod -aG sudo ubuntuserver
Чтобы проверить, входит ли пользователь в группу sudo, выполните:
$ sudo -l -U ubuntuserver
Пример вывода:
Matching Defaults entries for ubuntuserver on ostechnix:
env_reset, mail_badpass,
secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin
User ubuntuserver may run the following commands on ostechnix:
(ALL : ALL) ALL
Здесь строка «(ALL: ALL) ALL» означает, что пользователь имеет неограниченные привилегии и может выполнять любую команду в системе.
В этом случае пользователь «ubuntuserver» входит в группу пользователей sudo, и теперь он может выполнять все виды административных задач.
Если вы откроете содержимое файла sudoers:
$ sudo cat /etc/sudoers
Вы увидите несколько строк, как показано ниже.
[...]
# User privilege specification
root ALL=(ALL:ALL) ALL
# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL
# Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) ALL
# See sudoers(5) for more information on "(Поставьте решетку)include" directives:
(Поставьте решетку)includedir /etc/sudoers.d
Как видно из вышеприведенного вывода, все члены группы sudo могут выполнить любую команду.
- Первое ALL — это разрешено пользователям.
- Второе ALL это владелец. Если вы распространяете один и тот же файл «sudoers» на множество хост-компьютеров, пользователь может выполнять административные команды на всех хостах.
- Третье — пользователь, когда вы запускаете команду.
- Последнее — это разрешенные команды.
2.1. Проверка пользователей Sudo
Чтобы проверить, может ли пользователь выполнять административные задачи, выйдите из системы и войдите в систему от нового пользователя.
$ sudo -i -u ubuntuserver
Теперь выполните любые команды с префиксом «sudo», как показано ниже.
Пример:
$ sudo -i -u ubuntuserver
Теперь выполните любые команды с префиксом «sudo», как показано ниже.
$ sudo apt update
3. Удалим пользователей Sudo
Вы можете удалить привилегии sudo у пользователя, не удаляя его полностью.
Вы должны быть осторожны, когда делаете это в системах Ubuntu.
Не удаляйте настоящего администратора из группы «sudo».
В системе должен быть хотя бы один пользователь sudo.
Чтобы отозвать sudo у пользователя, команда будет:
$ sudo deluser ubuntuserver sudo
Приведенная выше команда удалит пользователя с именем «ubuntuserver» из группы «sudo».
Вывод:
User ubuntuserver is not allowed to run sudo on itsecforu.
Права sudo были удалены у данного пользователя.
4. Удалить пользователей навсегда
На предыдущем этапе мы удалили только пользователей из группы «sudo».
Но пользователь все еще существует в системе.
Чтобы полностью удалить пользователя из системы Linux, войдите в систему как пользователь root или sudo и запустите:
$ sudo deluser <username>
Пример:
$ sudo deluser ubuntuserver
Если вы хотите удалить пользователя вместе с его домашним каталогом и почтовым спулом, запустите:
$ sudo deluser --remove-home ubuntuserver
Пример вывода:
Looking for files to backup/remove ...
Removing files ...
Removing user `ubuntuserver' ...
Warning: group `ubuntuserver' has no more members.
Done.
Для более подробной информации, обратитесь к справочным страницам.
$ man adduser
$ man deluser
$ man sudo