Команда 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:
- Все строки, начинающиеся с #, являются комментариями
- 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. В этом руководстве вы ознакомились с основными моментами, необходимыми для того, чтобы полностью контролировать назначение привилегий в вашей системы!