Как использовать Sudo и файл Sudoers

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

Понимание судо

Чтобы показать, как работает sudo, сначала войдите в свой VPS через SSH. 
По умолчанию пользователю root не нужно использовать префикс sudo. У них уже есть все возможные привилегии. Между тем, если пользователь без полномочий root хочет добавить еще одного пользователя, ему потребуется добавить префикс sudo к команде useradd, например:
sudo useradd edward
Если пользователь не использует префикс 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
Это выведет список имен пользователей.
Чтобы добавить пользователя с именем bill в группу sudo, мы используем команду  adduser в командной строке, например:
adduser bill sudo
Если мы воспользуемся командой grep, чтобы проверить, кто входит в группу, мы увидим счет за имя пользователя.
Если вы хотите предоставить кому-либо права root, просто добавьте их в sudo.
Чтобы удалить пользователя из sudo:
deluser bill sudo
Команда deluser удалит счет из группы sudo.
Теперь счет пользователя больше не может выполнять действия, требующие привилегий sudo.

Используйте файл Sudoers для предоставления определенных привилегий

Что, если мы хотим, чтобы Билл мог запускать только определенные виды команд с привилегиями sudo, например, сеть?
Для этого мы создаем файл конфигурации в /etc/sudoers.d/, называемый сетью.
Используйте следующую команду для создания файла:
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 вместе с другими сетевыми командами.

Добавить комментарий

Автору будет очень приятно узнать обратную связь о своем руководстве.

Комментариев 0