Найти в Дзене
IT world

Как добавлять, удалять и предоставлять привилегии Sudo пользователям в Linux

В этом руководстве объясняется, как добавлять, удалять и предоставлять привилегии 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 пользователям в операционных системах 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