access_time
hourglass_empty
person_outline

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

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

Как Работает Команда 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. / @olha

Ольга уже около пяти лет работает менеджером в сфере IT. Написание технических заданий и инструкций — одна из её главных обязанностей. Её хобби — узнавать что-то новое и создавать интересные и полезные статьи о современных технологиях, веб-разработке, языках программирования и многом другом.

Похожие руководства

Оставьте ответ

Комментарий*

Имя*

Email*

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.

Присоединиться к Hostinger сейчас!