sudo
Введение | |
Как сделать sudo | |
sudo без пароля | |
Другие примеры | |
usermod: group 'sudo' does not exist | |
sudo не в root | |
Похожие статьи |
Введение
sudo это сокращение от английского
substitute user and do
Что по-русски звучит как
подменить пользователя и выполнить
sudo является программой для системного администрирования UNIX-систем, позволяющая делегировать те или иные привилегированные ресурсы
пользователям с ведением протокола работы.
Основная идея — дать пользователям как можно меньше прав, при этом достаточных для решения поставленных задач.
Программа поставляется для большинства UNIX и UNIX-подобных операционных систем.
Команда sudo предоставляет возможность пользователям выполнять команды от имени суперпользователя root либо других пользователей.
Правила, используемые sudo для принятия решения о предоставлении доступа, находятся в файле
/etc/sudoers
(для редактирования файла можно использовать специальный редактор visudo,
запускаемый из командной строки без параметров, в том числе без указания пути к файлу); язык их написания и примеры использования подробно изложены в
man sudoers(5).
В большинстве случаев грамотная настройка sudo делает небезопасную работу от имени суперпользователя ненужной.
Все действия оказываются выполнимы из-под аккаунта пользователя, которому разрешено использовать sudo без ограничений.
Имеется возможность запрещать и разрешать определённым пользователям или группам выполнение конкретного набора программ, а также разрешить выполнение
определённых программ без необходимости ввода своего пароля.
Как сделать sudo
Чтобы пользователь мог выполнить команду sudo успешно, он должен быть добавлен
в группу sudo (Debian, Ubuntu…)
или wheel (Rocky, CentOS, RedHat …)
Проверить состоит ли пользователь andrei в sudo можно командой
groups
Если результат примерно такой
andrei cdrom floppy audio dip video plugdev netdev bluetooth lpadmin scanner
То есть sudo в списке нет. Нужно добавить его командой
adduser andrei sudo
Или для .rpm
usermod -aG wheel $(whoami)
Если всё прошло успешно, Вы можете проверить, что sudo теперь в списке групп
groups
andrei cdrom floppy sudo audio dip video plugdev netdev bluetooth lpadmin scanner
Если что-то пошло не так - прочитайте примечания.
Примечание 1
Чтобы добавить пользователя в группу sudo, Вам скорее всего потребуется зайти под root.
Начиная с 10-й версии это не так тривиально, советую прочитать предыдущий параграф
bash: adduser: command not found
Примечание 2
Если в одном терминале Вы видите, что пользователь уже в группе sudo а в другом терминале он не может выполнить sudo - выполните команду
exit
И залогиньтесь снова.
Примечание 3
Описание того, кто и как может использовать sudo находится в
файле /etc/sudoers
Редактировать его напрямую не нужно, можно зайти в
/etc/sudoers.d
либо вызвать из-под root утилиту
visudo
И что-то там подправить на свой страх и риск.
Разрешить пользователю не вводить пароль при выполнении sudo
Убедитесь, что пользователь добавлен в группу sudo (wheel для .rpm)
Выполните
sudo visudo
Добавьте в конец файла
username ALL=(ALL) NOPASSWD:ALL
Теперь пользователь username сможет выполнять все команды sudo без ввода пароля. Это очень удобно для работы с локальными виртуальными машинами
Например, я добавляю
andrei ALL=(ALL) NOPASSWD:ALL
Саму команду sudo всё-равно нужно писать
Можно достичь этого результата не открывая файл
echo "andrei ALL=(ALL:ALL) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/andrei
Подробнее про команду tee читайте здесь
Примеры
Разрешить пользователям, входящим в группу (англ.) «admin», выполнять команды с правами любого пользователя (с запросом пароля):
%admin ALL=(ALL) ALL
Позволить пользователю «user1» выполнять команды с правами «user2» или «user3», не запрашивая пароль:
user1 ALL=(user2, user3)NOPASSWD: ALL
Разрешить пользователю «backup» выполнять команду /usr/bin/rsync без запроса пароля:
backup ALL=NOPASSWD: /usr/bin/rsync
Как добавить русский язык для клавиатуры
Открываем файл /etc/default/keyboard командой
sudo vi /etc/default/keyboard
Находим нужные строчки
И добавляем ,ru в XKBLAYOUT="us" grp:ctrl_shift_toggle в XKBOPTIONS=""
Получится такой кусок
XKBLAYOUT="us,ru" XKBVARIANT="" XKBOPTIONS="grp:ctrl_shift_toggle"
Примечание 1
Если у Вас вызывает трудности редактирование файлов в редакторе
vi
Прочитайте статью
«Пример использования VI для смены языка в Linux»
usermod: group 'sudo' does not exist
Если вы попытались добавить пользователя в группу sudo с помощью usermod и получили
usermod: group 'sudo' does not exist
Скорее всего вы используете .rpm дистрибутив, например
Rocky
или
CentOS
В .rpm группа называется wheel а не sudo
Выполните
usermod -aG wheel $(whoami)
sudo -u
-u user, --user=user Run the command as a user other than the default target user (usually root). The user may be either a user name or a numeric user-ID (UID) prefixed with the ‘#’ character (e.g., #0 for UID 0). When running commands as a UID, many shells require that the ‘#’ be escaped with a backslash (‘\’). Some security policies may restrict UIDs to those listed in the password database. The sudoers policy allows UIDs that are not in the password database as long as the targetpw option is not set. Other security policies may not support this.