Синтаксис:
sudo -h ? -K ? -k ? -L ? -l ? -V ? -v sudo [-bEHPS] [-a auth_type] [-c class?-] [-p prompt] [-u username?#uid] [VAR=value] {-i ? -s ? command} sudoedit [-S] [-a auth_type] [-c class?-] [-p prompt] [-u username?#uid] file ... |
Команда sudo разрешает уполномоченному пользователю выполнять команды от имени другого пользователя (например root) определенного в файле sudoers (обычно /etc/sudoers).
Основные опции:
-V
— Информация о версии программы.
-l
— Вывод списка команд разрешенных для данного пользователя на данном хосте.
-L
— Вывод параметров, которые могут быть установлены в строке Defaults (файл sudoers), с описанием каждого.
-h
— справочная информация.
-v
Обновляет временную метку пользователя, т.е. увеличивает таймаут sudo еще на пять минут.
-k
— Обнуляет таймаут sudo, т.е. при следующем запуске sudo будет запрошен пароль.
-K
— полностью удаляет временную метку sudo пользователя.
-b
— запускает sudo в фоновом режиме.
-u username|#uid
— запуск команды command от имени пользователя username или uid
-s
— запускает оболочку установленную в переменной окружения SHELL или в файле /etc/passwd
-H
— устанавливает переменную окружения HOME в значение домашнего каталога целевого пользователя (обычно root) в соответствии с настройков в файле /etc/passwd. Эта опция может быть полезна, поскольку по умолчанию sudo не модифицирует переменную окружения HOME.
-P
— сохраняет неизменным вектор групп данного пользователя (по умолчанию инициализируется вектор групп, как значение списка групп, в которых числится целевой пользователь).
-S
— считывает пароль со стандартного ввода, вместо терминального устройства.
Конфигурация sudo хранится в файле sudoers (обычно /etc/sudoers), данный файл можно редактировать вручную, либо с помощью утилиты visudo, данная утилита удобна тем, что проверяет синтаксис sudoers и сообщает об ошибках.
Файл sudoers состоит из трех основных частей — алиасы, установки по умолчанию, пользовательская спецификация.
В разделе aliases определяются поименные списки пользователей, хостов и команд для последующих ссылок. Существуют четыре типа алиасов:
User_Alias — пользователи. которым разрешено выполнять команды с помощью sudo
Runas_Alias — пользователи, с чьими привилегиями разрешено выполнять команды.
Host_Alias — хосты, на которых разрешено выполнять команды с помощью sudo
Синтаксис определения алиаса:
Alias_Type Name=item1, item2, item3, ... , itemN
где Alias_Type — это тип алиаса, а Name — список значений. зависящих от типа алиаса.
Например:
User_Alias ADMINS=admin,staff,dima,andrey
В разделе defaults находятся установки sudo принятые по умолчанию. Интересны следующие две опции:
logfile — путь к лог-файлу (по умолчанию логи пишутся в syslog).
mailto — адрес email, для отправки сообщений об ошибках (по умолчанию данные сообщения посылаются пользователю root).
В разделе user specification указываются команды, которые разрешено выполнять пользователям, а также привилегии, с которыми разрешено их выполнять.
Синтаксис:
user MACHINE=COMMANDS
Например, нам необходимо предоставить пользователю andrey доступ в качестве суперпользователя (root), в таком случае, после того, как пользователь andrey создан, в файле /etc/sudoers в разделе user specification добавляем строчку вида:
andrey ALL=(ALL) NOPASSWD: ALL
При этом, мы говорим sudo не запрашивать пароль у пользователя, т.е. пользователь andrey может выполнять команды с помощью sudo без дополнительного ввода пароля, что может быть довольно удобно (но может быть и не безопасно, на компьютерах, доступ к которым могут получить посторонние лица).
Если при выполнении команды sudo из под пользователя не имеющего root-привелегий команда возвращает ошибку типа «sudo: must be setuid root», можно попробовать установить права chmod на sudo достаточные для запуска sudo из под пользователя, например:
chmod 4755 /usr/bin/sudo