sudo – это команда, которая позволяет обычному пользователю системы выполнять команды, доступные только суперпользователю (root). Мы используем команду sudo, когда хотим выполнить команды, которые может выполнить только пользователь root, как обычный пользователь, не являющийся root. В этой статье мы покажем вам, как добавить пользователя в sudoers в Debian 13.
Необходимые условия
В Debian 13 пакет sudo не устанавливается и не настраивается по умолчанию, если вы решили установить пароль root в процессе установки. Если вы решили не устанавливать пароль root, sudo обычно устанавливается и готов к использованию начальной учётной записью пользователя.
Если пакет sudo установлен, вы увидите файл /etc/sudoers на вашей машине Debian, который является файлом конфигурации sudo. Используя этот файл, мы можем установить привилегии пользователя или группы для выполнения команд, требующих привилегий root.
Откройте файл sudoers с помощью команды visudo.
Внутри файла найдите следующую строку конфигурации:
%sudo ALL=(ALL:ALL) ALL
Строка выше – это конфигурация, предоставляющая доступ группе sudo для выполнения всех команд.
Теперь мы можем использовать команду sudo. Однако, поскольку мы не добавили пользователя в группу sudo, он все равно не сможет выполнить нужную команду, даже если воспользуется этой командой.
Например, теперь мы можем добавить нового системного пользователя.
adduser master
Вам будет предложено создать пароль.
New password:
Retype new password:
passwd: password updated successfully
Changing the user information for master
Enter the new value, or press ENTER for the default
Full Name []:
Room Number []:
Work Phone []:
Home Phone []:
Other []:
Is the information correct? [Y/n]
Теперь перейдем к новому пользователю.
su - master
После переключения на нового пользователя мы можем попробовать выполнить команду sudo
sudo top
В этот момент система предложит вам ввести пароль этого пользователя. После ввода вы увидите следующее сообщение:
[sudo] password for master: master is not in the sudoers file. This incident has been reported to the administrator.
Это означает, что даже если пакет sudo установлен, нам нужны привилегии для выполнения команды, и мы должны быть в группе sudoers. Давайте выйдем из оболочки нового пользователя и вернемся к root.
exit
От имени root мы можем выполнить эту команду.
grep -i sudo /etc/group
Команда выведет это сообщение, указывающее на то, что новый пользователь не является sudoer:
sudo:x:27:
Поэтому сначала нам нужно добавить пользователя в группу sudo. Чтобы добавить пользователя в группу, есть несколько способов.
Usermod
Usermod – это инструмент командной строки для изменения существующего пользователя системы. Мы можем использовать команду usermod следующим образом:
usermod -aG sudo master
-aG– опция команды для добавления пользователя в группуsudo– имя группыmaster– имя пользователя, добавляемого в группу
Далее рассмотрим содержимое группы sudo.
grep -i sudo /etc/group
В результате выполнения команды вы получите следующий результат:
sudo:x:27:master
Это означает, что мы успешно добавили нового пользователя master в качестве sudoer.
Gpasswd
В качестве альтернативы usermod мы можем использовать gpasswd. Разница между usermod и gpasswd заключается в том, что usermod сначала ожидает имя группы, а затем имя пользователя. В то время как команда gpasswd сначала ожидает имя пользователя, а затем имя группы. Например, чтобы добавить пользователя master в группу sudo, мы можем выполнить следующую команду:
gpasswd -a master sudo
Замените master на реального пользователя системы, которого вы хотите добавить в группу sudoers. Флаг -a означает «добавить».
Visudo
Другой способ добавить системного пользователя в sudoer – это использование visudo. Visudo – это инструмент командной строки для редактирования файла /etc/sudoers. Файл /etc/sudoers содержит набор правил, определяющих, каким пользователям или группам предоставляются привилегии sudo. Мы можем предоставлять определенный доступ к командам и устанавливать определенные политики безопасности, просто отредактировав этот файл. В качестве альтернативы редактированию файла sudoers через visudo мы можем создать новый конфигурационный файл в каталоге /etc/sudoers.d. Файлы в этом каталоге будут включены в файл sudoers.
Для редактирования файла /etc/sudoers всегда нужно использовать команду visudo и никогда не редактировать его напрямую с помощью текстового редактора. Команда visudo проверит файл на наличие синтаксических ошибок при сохранении внесенных нами изменений. Если ошибки есть, мы не сможем сохранить изменения. Редактирование файла обычным текстовым редактором может привести к синтаксическим ошибкам, которые могут привести к потере доступа sudo.
По умолчанию visudo использует файловый редактор vim, указанный переменной окружения EDITOR. Если вы хотите редактировать файл с помощью другого редактора, например nano, вы можете изменить переменную, выполнив эту команду:
EDITOR=nano visudo
Уровень доступа пользователя
При добавлении нового пользователя или группы в файл sudoers необходимо указать имя пользователя или группы, хосты, к которым им разрешен доступ, пользователей, которые могут выполнять команды, и команды, которые им разрешено выполнять. Например, если вы хотите разрешить пользователю выполнять команды sudo без запроса пароля, откройте файл /etc/sudoers:
visudo
Прокрутите вниз до конца файла и добавьте следующую строку:
master ALL=(ALL) NOPASSWD:ALL
Обязательно замените master на системного пользователя, который существует на вашей машине Debian 13. И не забудьте сохранить файл и выйти из редактора. Мы можем использовать тег NOPASSWD, чтобы разрешить выполнение определённых команд без запроса пароля пользователя, что может быть полезно для автоматизации, но это также может увеличить уязвимости безопасности.
Если по какой-то причине вы хотите, чтобы sudoers выполнял только определенные команды через sudo, скажем, чтобы выполнялись только команды mkdir и rmdir, вы можете использовать:
master ALL=(ALL) NOPASSWD:/bin/mkdir,/bin/rmdir
Как сообщалось ранее, вместо того чтобы изменять файл sudoers напрямую с помощью команды visudo, вы можете добиться того же результата, создав новый файл с правилами авторизации в каталоге /etc/sudoers.d. Просто добавьте те же правила, которые вы включили в файл sudoers:
echo "master ALL=(ALL) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/master
Этот метод упрощает управление привилегиями sudo. Хотя имя файла в каталоге /etc/sudoers.d/ само по себе не имеет значения, принято называть его в честь имени пользователя.
Комментарии (2)