Команда Sudo и Файл Sudoers: Практическое Руководство

Команда sudo позволяет пользователям без полномочий root запускать команды, которые обычно требуют привилегий суперпользователя, в то время как файл sudoers указывает системе, как обрабатывать команду sudo. В этом руководстве мы покажем вам все основные моменты использования команды sudo, а также способы редактирования файла sudoers.

Прокачайте ваш проект, воспользовавшись скидками на VPS-хостинг в Hostinger! Большой выбор планов, как для учебных, так и для крупных коммерческих проектов.

К предложению

Как Работает Команда Sudo

Чтобы увидеть, как работает команда sudo, сначала следует получить доступ к вашему VPS через SSH. Если возникнут проблемы, ознакомьтесь с нашим руководством по PuTTY.

По умолчанию пользователям root не нужно использовать префикс sudo. У них уже есть все возможные привилегии. Между тем, если пользователь без полномочий root хочет добавить другого пользователя, он должен добавить префикс sudo к команде useradd, например так:

sudo useradd olga

Если пользователь не использует префикс sudo, в выводе он увидит “В разрешении отказано”, или “Permission denied”.

Файл Sudoers

Команда sudo настраивается через файл, расположенный в /etc/. Он называется sudoers.

С помощью команды sudo вы предоставляете привилегии административного уровня обычным пользователям. Обычно первый пользователь, которого вы создаёте при установке Ubuntu, имеет права sudo. В среде VPS это пользователь root по умолчанию. Вы можете изменить настройки таким образом, чтобы другие пользователи также могли запускать команду sudo. Сделать это можно путём редактирования sudoers.

Важно: будьте осторожны! Редактирование файла sudoers с ошибками или неправильным синтаксисом может привести к блокировке всех пользователей в вашем дистрибутиве.

Синтаксис файла Sudoers

Вы можете открыть файл в любом текстовом редакторе, который вам нравится. Мы будем использовать vi:

vi /etc/sudoers

Наш файл VPS выглядит следующим образом:

Пример Файла Sudoers

Давайте рассмотрим некоторые форматы и правила, которых следует придерживаться, редактируя sudoers:

  • Все строки, начинающиеся с #, являются комментариями
  • root ALL = (ALL:ALL) ALL – эта строка означает, что пользователь root имеет неограниченные привилегии и может выполнять любую команду в системе
  • %admin ALL=(ALL) ALL  – знак % указывает группу. Любой пользователь в группе администраторов имеет те же привилегии, что и пользователь root
  • %sudo   ALL=(ALL:ALL) ALL – все пользователи в группе sudo имеют права на запуск любой команды

Ещё один интересный момент – #includedir /etc/sudoers.d, это означает, что мы можем добавить конфигурации в файл sudoers.d и связать его здесь.

Редактируем Файл Sudoers

Чтобы изменить файл /etc/sudoers, используйте следующую команду:

sudo visudo -f /etc/sudoers

Для редактирования файла sudoers рекомендуется использовать visudo. Visudo гарантирует, что sudoers редактируется только одним пользователем, а не несколькими одновременно, а также выполняет необходимые проверки синтаксиса.

Чтобы увидеть, какие пользователи входят в группу sudo, мы можем использовать команду grep (англ):

grep ‘sudo’ /etc/group

Это действие выведет список имён пользователей.

Чтобы добавить пользователя с именем Билл в группу sudo, мы используем команду adduser в командной строке, например:

adduser bill sudo

Если мы используем команду grep для проверки того, кто входит в группу, мы увидим пользователя с именем Билл.

Если вы хотите дать кому-либо привилегии root, просто добавьте их в sudo.

Чтобы удалить пользователя из sudo:

deluser bill sudo

Команда deluser удалит Билла из группы sudo.

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

Используем Файл Sudoers, Чтобы Настроить Определённые Привилегии

Что, если мы хотим, чтобы Билл мог запускать только определённые виды команд с привилегиями sudo, например команду, связанную с доступом к сети?

Для этого мы создаем файл конфигурации в /etc/sudoers.d/ и называем его networking. 

Используйте следующую команду для создания файла:

sudo visudo -f /etc/sudoers.d/networking

Добавьте следующий текст в файл:

Cmnd_Alias     CAPTURE = /usr/sbin/tcdump
Cmnd_Alias     SERVERS = /usr/sbin apache2ctl, /usr/bin/htpasswd
Cmnd_Alias     NETALL = CAPTURE, SERVERS
%netadmin ALL=NETALL

В приведенном выше файле мы создали группу netadmin. Пользователи в группе netadmin могут запускать команды, указанные в NETALL. NETALL, в свою очередь, включает все команды под псевдонимами CAPTURE и SERVERS. Команда tcpdump находится под псевдонимом CAPTURE, например, /usr/sbin/tcpdump.

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

sudo adduser bill netadmin

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

Итоги

Если вы работаете с несколькими пользователями, вам необходимо понимать, как работает команда sudo и файл sudoers. В этом руководстве вы ознакомились с основными моментами, необходимыми для того, чтобы полностью контролировать назначение привилегий в вашей системы!

Author
Автор

Olha L.

Ольга вже близько восьми років працює менеджером у сфері IT, три з яких вона займається SEO. Написання технічних завдань та інструкцій — один з її основних обов'язків. Її хобі — дізнаватися щось нове і створювати цікаві та корисні статті про сучасні технології, веброзробку, мови програмування, пошукову оптимізацію сайтів та багато іншого.