Как создать нового пользователя с поддержкой sudo в Ubuntu

    Команда Simple-Server
    03.06.2026
    11 мин

    Материал подготовлен командой Simple-Server для администраторов VPS и выделенных серверов. Команды и пути проверяйте на тестовой машине перед production.

    Создание нового пользователя для sudo

    Если вы используете удаленный сервер под управлением Ubuntu (например, облачный сервер Simple-Server), то сначала необходимо подключиться к нему по SSH-соединению от имени root:

    Например, команда подключения может выглядеть так:

    После чего консольный терминал потребует ввести root-пароль. При этом в целях безопасности символы пароля не отображаются в консольном терминале — его нужно набрать «вслепую».

    Далее необходимо создать нового пользователя, дав ему произвольное имя:

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

    Adding user `easy' ... Adding new group `easy' (1001) ... Adding new user `easy' (1000) with group `easy' ... Creating home directory `/home/easy' ... Copying files from `/etc/skel' ...

    После этого терминал консоли попросит ввести пароль для нового пользователя, а также указать дополнительную информацию о нем:

    Changing the user information for easy 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]

    Закончив заполнение данных, нужно ввести в консоль символ y, после чего процесс создания нового пользователя можно считать завершенным.

    Добавление пользователя в группу sudo

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

    • Флаг -a необходим, чтобы указанная группа не заменила множество других групп, в которых пользователь уже состоит. В данном примере пользователь easy как минимум состоит в ранее созданной группе easy.

    • Флаг -G необходим для указания дополнительной группы, в которую будет добавлен пользователь. Он отличается от флага -g, который устанавливает основную группу пользователя. В данном примере основной группой пользователя easy является группа easy.

    Флаг -a необходим, чтобы указанная группа не заменила множество других групп, в которых пользователь уже состоит. В данном примере пользователь easy как минимум состоит в ранее созданной группе easy.

    Флаг -G необходим для указания дополнительной группы, в которую будет добавлен пользователь. Он отличается от флага -g, который устанавливает основную группу пользователя. В данном примере основной группой пользователя easy является группа easy.

    Таким образом созданный пользователь получает дополнительные привилегии, соответствующие специальной группе sudo.

    Теперь можно переключиться на нового пользователя:

    Сразу после переключения в консольном терминале появится сообщение о том, что теперь можно выполнять команды от имени администратора (root) с помощью sudo:

    To run a command as administrator (user "root"), use "sudo <command>". See "man sudo_root" for details.

    Кстати, всегда можно проверить, под каким пользователем выполняются команды:

    В консоли появится имя активного пользователя:

    Выполнение команд через sudo

    Для тестирования привилегий нового пользователя можно попробовать вывести содержимое системной директории /root:

    Флаг -la является комбинацией двух флагов:

    • -l указывает на подробный (длинный) формат вывода содержимого файловой системы.

    • -a указывает на вывод каталогов, название которых начинается с символа точки.

    -l указывает на подробный (длинный) формат вывода содержимого файловой системы.

    -a указывает на вывод каталогов, название которых начинается с символа точки.

    Таким образом команда ls подробно покажет все содержимое указанной директории /root.

    При этом во время первого выполнения этой команды терминал попросит ввести пароль, который указывался при создании пользователя easy:

    [sudo] password for easy:

    После ввода пароля появится содержимое каталога /root:

    total 48 drwx------ 7 root root 4096 Nov 20 05:30 . drwxr-xr-x 20 root root 4096 Nov 20 12:09 .. drwx------ 3 root root 4096 Nov 11 12:17 .ansible -rw-r--r-- 1 root root 4078 Nov 20 10:12 .bash_history -rw-r--r-- 1 root root 3106 Oct 15 2021 .bashrc drwx------ 2 root root 4096 Nov 11 12:17 .cache drwxr-xr-x 3 root root 4096 Nov 19 05:36 .local -rw------- 1 root root 214 Nov 18 04:26 .mysql_history -rw-r--r-- 1 root root 161 Jul 9 2019 .profile -rw-r--r-- 1 root root 1372 Nov 18 04:16 resize.log drwx------ 3 root root 4096 Nov 11 12:17 snap drwx------ 2 root root 4096 Nov 18 04:16 .ssh

    Обратите внимание, что использование sudo не требует оборачивания вызываемой команды в кавычки или что-то еще. Целевая команда пишется в естественном виде сразу после sudo.

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

    То в консольном терминале появится сообщение об отказе в доступе:

    ls: cannot open directory '/root': Permission denied

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

    Аналогично, если попытаться обновить репозитории без sudo, появится сообщение об ограничении доступа:

    Reading package lists... Done E: 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)

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

    От имени другого пользователя

    С помощью sudo можно выполнять команды не только от имени root, но и от имени любого другого пользователя.

    Давайте сначала переключимся обратно на root:

    После этого терминал попросит ввести пароль пользователя root:

    А теперь попробуем выполнить команду, требующую права администратора, от имени пользователя easy из-под пользователя root, используя флаг -u:

    sudo -u easy ls -la /root

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

    ls: cannot open directory '/root': Permission denied

    Переключимся обратно на easy:

    Для наглядности можно проделать тоже самое под пользователем easy:

    sudo -u root ls -la /root

    Сперва в консольном терминале появится предложение ввести пароль от easy, а далее последует содержимое указанной директории:

    total 52 drwx------ 7 root root 4096 Nov 20 15:39 . drwxr-xr-x 20 root root 4096 Nov 20 12:09 .. drwx------ 3 root root 4096 Nov 11 12:17 .ansible -rw-r--r-- 1 root root 4171 Nov 20 15:21 .bash_history -rw-r--r-- 1 root root 3106 Oct 15 2021 .bashrc drwx------ 2 root root 4096 Nov 11 12:17 .cache drwxr-xr-x 3 root root 4096 Nov 19 05:36 .local -rw------- 1 root root 214 Nov 18 04:26 .mysql_history -rw-r--r-- 1 root root 161 Jul 9 2019 .profile -rw-r--r-- 1 root root 1372 Nov 18 04:16 resize.log drwx------ 3 root root 4096 Nov 11 12:17 snap drwx------ 2 root root 4096 Nov 18 04:16 .ssh -rw-r--r-- 1 root root 0 Nov 20 15:39 .sudo_as_admin_successful

    Настройка прав доступа sudo

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

    Чтобы проверить это, сперва переключимся обратно на root:

    Чтобы настроить уникальные права доступа для каждого пользователя sudo, нужно открыть файл /etc/sudoers:

    После чего добавить туда описание разрешенных команд по следующей схеме:

    ПОЛЬЗОВАТЕЛЬ ХОСТ=(АВАТАР:ГРУППА) КОМАНДЫ
    • ПОЛЬЗОВАТЕЛЬ. Имя пользователя, который будет инициировать команду sudo.

    • ХОСТ. Имя хоста, на котором будет запускаться команда sudo. Параметр актуален в том случае, если используется несколько машин.

    • АВАТАР. Имя пользователя, из под чьего имени будут выполняться разрешенные команды через sudo.

    • ГРУППА. Группа, к которой принадлежит пользователь.

    • КОМАНДЫ. Набор команд (может состоять из одной команды), который будет разрешен для запуска через sudo.

    ПОЛЬЗОВАТЕЛЬ. Имя пользователя, который будет инициировать команду sudo.

    ХОСТ. Имя хоста, на котором будет запускаться команда sudo. Параметр актуален в том случае, если используется несколько машин.

    АВАТАР. Имя пользователя, из под чьего имени будут выполняться разрешенные команды через sudo.

    ГРУППА. Группа, к которой принадлежит пользователь.

    КОМАНДЫ. Набор команд (может состоять из одной команды), который будет разрешен для запуска через sudo.

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

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

    easy ALL=(root:ALL) /usr/bin/apt,/usr/bin/rm,/bin/nano

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

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

    В консольном терминале появится информация о всех перечисленных командах:

    apt: /usr/bin/apt /usr/lib/apt /etc/apt /usr/share/man/man8/apt.8.gz rm: /usr/bin/rm /usr/share/man/man1/rm.1.gz nano: /usr/bin/nano /usr/share/nano /usr/share/man/man1/nano.1.gz /usr/share/info/nano.info.gz

    Самый первый путь после имени команды и является реальным адресом бинарного файла.

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

    На аналогичную, но с символом комментария в начале, чтобы настройка стала неактивна:

    #%sudo  ALL=(ALL:ALL) ALL

    После этого можно обратно переключиться на easy:

    А теперь снова выполним уже знакомую команду вывода содержимого директории /root:

    В консольном терминале появится сообщение о запрете выполнения указанной команды на данном хосте:

    Sorry, user easy is not allowed to execute '/usr/bin/ls /root' as root on 3798037-yn55665.twc1.net.

    А вот команда обновления репозиториев будет работать:

    Конечно, узнать подробности полномочий пользователей можно, просто просмотрев содержимое файла /etc/sudoers. Однако есть более простой способ — использовать ту же самую команду sudo:

    • Флаг -l указывает на необходимость вывода всех разрешенных команд пользователя.

    • Флаг -U указывает имя целевого пользователя. Если флаг не указывать, то выведутся права доступа для пользователя root.

    Флаг -l указывает на необходимость вывода всех разрешенных команд пользователя.

    Флаг -U указывает имя целевого пользователя. Если флаг не указывать, то выведутся права доступа для пользователя root.

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

    Matching Defaults entries for easy on 3798037-yn55665: env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin, use_pty User easy may run the following commands on 3798037-yn55665: (root : ALL) /usr/bin/apt, /usr/bin/rm, /bin/nano

    Ключевым в этом выводе является этот отрывок сообщения:

    User easy may run the following commands on 3798037-yn55665: (root : ALL) /usr/bin/apt, /usr/bin/rm, /bin/nano

    Он сообщает, что пользователь easy может запускать следующие команды от имени root:

    • /usr/bin/apt
    • /usr/bin/rm
    • /bin/nano

    То есть ровно те команды, которые указаны в конфигурационном файле /etc/sudoers. Таким образом можно просмотреть привилегии конкретного пользователя без утомительного выискивания нужных строк в файле /etc/sudoers.

    Более того, получение информации о пользовательских привилегиях можно сделать еще проще, просмотрев наличие разрешения на выполнение конкретной команды:

    Если команда запрещена, то в консольном терминале ничего не появится. Если же она разрешена:

    В консольный вывод будет содержать полный адрес до бинарного файла команды:

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

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

    Чтобы отключить пароль, нужно открыть файл /etc/sudoers:

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

    easy ALL=(root:ALL) NOPASSWD: /usr/bin/apt

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

    easy ALL=(root:ALL) /usr/bin/rm,/bin/nano easy ALL=(root:ALL) NOPASSWD: /usr/bin/apt

    То есть получится две секции разрешенных команд — с требованием ввода пароля и без него.**
    **


    Нужен сервер для практики? Арендуйте VPS/VDS в России — root-доступ, NVMe, DDoS-защита и поддержка 24/7.

    VPS для проекта

    VPS с root-доступом, NVMe и поддержкой 24/7 на Simple-Server.

    StarterVDS

    490₽

    в месяц

    1 ядро

    1 ГБ RAM

    20 ГБ NVMe

    • 1 IPv4
    • KVM
    • Root-доступ
    • Безлимитный трафик
    Заказать VPS
    Рекомендуем

    PerformanceVDS

    1190₽

    в месяц

    2 ядра

    4 ГБ RAM

    60 ГБ NVMe

    • 1 IPv4
    • KVM
    • Root-доступ
    • Базовая DDoS-защита
    Заказать VPS

    Нужна другая конфигурация или чистый VPS без панели?

    Все тарифы VPS

    Похожие статьи, которые могут быть вам интересны