sudo
sudo (Substitute User and do)
sudo (англ. Substitute User and do, дословно «подменить пользователя и выполнить») — программа для системного администрирования UNIX-систем, позволяющая делегировать те или иные привилегированные ресурсы пользователям с ведением протокола работы.
Основная идея — дать пользователям как можно меньше прав, при этом достаточных для решения поставленных задач.
Программа поставляется для большинства UNIX и UNIX-подобных операционных систем.
Команда sudo предоставляет возможность пользователям выполнять команды от имени суперпользователя root, либо других пользователей.
Правила, используемые sudo для принятия решения о предоставлении доступа, находятся в файле /etc/sudoers (для редактирования файла можно использовать специальный редактор visudo, запускаемый из командной строки без параметров, в том числе без указания пути к файлу).
Язык их написания и примеры использования подробно изложены в man sudoers.
В большинстве случаев грамотная настройка sudo делает небезопасную работу от имени суперпользователя ненужной.
Все действия оказываются выполнимы из-под аккаунта пользователя, которому разрешено использовать sudo без ограничений.
Имеется возможность запрещать и разрешать определённым пользователям или группам выполнение конкретного набора программ, а также разрешить выполнение определённых программ без необходимости ввода своего пароля.
Примеры:
Редактировани файла sudoers
- sudo vim /etc/sudoers
Раскомментировать (убрать ‘#’ в начале строки) в /etc/sudoers строчку, дав права выполнять через sudo любую команду пользователям входящим в группу wheel, запрашивая их пароль:
WHEEL_USERS ALL=(ALL) ALL
С точки зрения безопасности правильнее давать права на выполнение sudo не всей группе wheel, а конкретному пользователю, например petya, входящего в группу «admin»:
petya admin=(ALL) ALL
Разрешить пользователям, входящим в группу «admin», выполнять команды с правами любого пользователя (с запросом пароля):
%admin ALL=(ALL) ALL
Позволить пользователю «user1» выполнять команды с правами «user2» или «user3», не запрашивая пароль:
user1 ALL=(user2, user3)NOPASSWD: ALL
Разрешить пользователю «user» выполнять команду /usr/bin/rsync без запроса пароля:
user ALL=NOPASSWD: /usr/bin/rsync