Sudo
Intro | |
How to use sudo | |
Allow user running sudo without passwords | |
Examples | |
usermod: group 'sudo' does not exist |
Introduction
sudo is a short form of
substitute user and do
sudo является программой для системного администрирования UNIX-систем, позволяющая делегировать те или иные привилегированные ресурсы
пользователям с ведением протокола работы.
Основная идея — дать пользователям как можно меньше прав, при этом достаточных для решения поставленных задач.
Программа поставляется для большинства UNIX и UNIX-подобных операционных систем.
Команда sudo предоставляет возможность пользователям выполнять команды от имени суперпользователя root либо других пользователей.
Правила, используемые sudo для принятия решения о предоставлении доступа, находятся в файле
/etc/sudoers
(для редактирования файла можно использовать специальный редактор visudo,
запускаемый из командной строки без параметров, в том числе без указания пути к файлу); язык их написания и примеры использования подробно изложены в
man sudoers(5).
В большинстве случаев грамотная настройка sudo делает небезопасную работу от имени суперпользователя ненужной.
Все действия оказываются выполнимы из-под аккаунта пользователя, которому разрешено использовать sudo без ограничений.
Имеется возможность запрещать и разрешать определённым пользователям или группам выполнение конкретного набора программ, а также разрешить выполнение
определённых программ без необходимости ввода своего пароля.
Как сделать sudo
To пользователь мог выполнить команду sudo успешно, он должен быть добавлен
в группу sudo (Debian, Ubuntu…)
или wheel (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
To добавить пользователя в группу sudo, Вам скорее всего потребуется зайти под root.
Начиная с 10-й версии это не так тривиально, советую прочитать предыдущий параграф
bash: adduser: command not found
Примечание 2
Если в одном терминале Вы видите, что пользователь уже в группе sudo а в другом терминале он не может выполнить sudo - execute команду
exit
И залогиньтесь снова.
Примечание 3
Описание того, кто и как может использовать sudo находится в
файле /etc/sudoers
Редактировать его напрямую не нужно, можно зайти в
/etc/sudoers.d
либо вызвать из-под root утилиту
visudo
И что-то там подправить на свой страх и риск.
Разрешить пользователю не вводить пароль при выполнении sudo
Убедитесь, что пользователь добавлен в группу sudo (wheel для .rpm)
Выполните
sudo visudo
Добавьте в конец файла
username ALL=(ALL) NOPASSWD:ALL
Теперь пользователь username сможет выполнять все команды sudo без ввода пароля. Это очень удобно для работы с локальными виртуальными машинами
Саму команду sudo всё-равно нужно писать
Примеры
Разрешить пользователям, входящим в группу (англ.) «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 дистрибутив, например
CentOS
В .rpm группа называется wheel а не sudo
Выполните
usermod -aG wheel $(whoami)