Sudo/ru

The command provides a simple and secure way to configure privilege escalation — i.e., letting normal users execute certain (or even all) commands as  or another user, either with or without giving a password.

When you want some people to perform certain administrative steps on your system without granting them total root access, using is your best option. With you can control who can do what. This guide offers you a small introduction to this powerful tool.

Это руководство предназначается в качестве быстрого ознакомления. Пакет обладает гораздо более широкими возможностями, чем описано в данном руководстве. Он обладает специальной возможностью редактирования файлов от имени другого пользователя, запуска из сценария (так, чтобы он мог выполняться в фоновом режиме, считывать пароль со стандартного потока ввода вместо клавиатуры) и так далее.

Чтобы получить больше информации, прочтите man-страницы и.

Журналирование событий
Одним из дополнительных преимуществ является то, что она может записывать в лог любую попытку (успешную или нет) запустить приложение. Это очень полезно, если вы хотите отследить, кто сделал ту фатальную ошибку исправление которой заняла 10 часов :&#41;.

Предоставление разрешений
Пакет позволяет системному администратору предоставить другим пользователям разрешение на выполнение одного или более приложений для выполнения которых у них обычно нет прав. В отличие от использования для этих приложений  бита,  дает более тонкий контроль над тем, кто может выполнить определенную команду и когда.

With you can make a clear list of who can execute a certain application. If you set the setuid bit on an executable, any user would be able to run the application (or any user of a certain group, depending on the permissions used). With you can (and probably should) require the user to provide a password in order to execute the application.

The configuration is managed by the  file. This file should never be edited through or, or any other editor you would normally use. When you want to alter the file, you should always use. This tool makes sure that no two system administrators are editing this file at the same time, preserves the permissions on the file, and performs some syntax checking to make sure you make no fatal mistakes in the file.

Основной синтаксис
The most difficult part of is the  syntax. The basic syntax is as follows:

This line tells that the user, identified by   and logged in on the system , can execute the command   (which can also be a comma-separated list of allowed commands).

A more real-life example might make this more clear: To allow the user to execute  when he is logged in on :

The user name can also be substituted with a group name, in which case the name is prefaced by a  sign. For instance, to allow any one in the group to execute :

To enable more than one command for a given user on a given machine, multiple commands can be listed on the same line. For instance, to allow to not only run  but also  and  as root:

You can also specify a precise command line (including parameters and arguments) not just the name of the executable. This is useful to restrict the use of a certain tool to a specified set of command options. The tool allows shell-style wildcards (AKA meta or glob characters) to be used in path names as well as command-line arguments in the sudoers file. Note that these are not regular expressions.

Here is an example of from the perspective of a first-time user of the tool who has been granted access to the full power of :

Пароль, который требует — это личный пароль пользователя. Это нужно для того, чтобы убедиться, что ни один из терминалов, который был случайно оставлен открытым, не мог быть использован в злонамеренных целях.

Базовый синтаксис при работе с LDAP
USE-флаги  и   нужны для поддержки LDAP.

При использовании sudo с LDAP, sudo будет также читать конфигурацию из LDAP-сервера. Поэтому вам нужно будет отредактировать два файла.

{{FileBox|filename=/etc/ldap.conf.sudo|title=Please chmod 400 when done|1= host ldap.example.com port 389 base dc=example,dc=com uri ldap://ldap.example.com/ ldap_version 3 sudoers_base ou=SUDOers,dc=example,dc=com bind_policy soft }}
 * 1) See ldap.conf(5) and README.LDAP for details
 * 2) This file should only be readable by root
 * 1) supported directives: host, port, ssl, ldap_version
 * 2) uri, binddn, bindpw, sudoers_base, sudoers_debug
 * 3) tls_{checkpeer,cacertfile,cacertdir,randfile,ciphers,cert,key
 * 1) uri ldapi://%2fvar%2frun%2fopenldap%2fslapd.sock
 * 1) ssl start_tls
 * 1) sudoers_debug 2

Также нужно будет добавить следующую запись LDAP для sudo.

Конфигурация sudoer на LDAP похожа на такую же конфигурацию в случае файлов, с некоторыми отличиями. Прочитайте больше о LDAP по ссылке ниже.

(чтобы провести хорошее различие между псевдонимами и не псевдонимами, рекомендуется использовать заглавные буквы для псевдонимов). Как вы, несомненно, уже догадались, псевдоним  - это псевдоним для всех возможных настроек.

Пример использования псевдонима  для разрешения любому пользователю выполнения команды, если он вошел в систему локально:

Другим примером является разрешение пользователю выполнения команды  с правами root, независимо от того, откуда он вошел в систему:

Более интересно определить набор пользователей, которые могут запускать приложения, администрирующие программное обеспечение (такие как и ), в системе, и группу администраторов, которые могут изменять пароль любого пользователя, за исключением учетной записи root!

Выполнение от не root пользователя
Также возможен запуск пользователем приложения от имени другого пользователя, не root. Очень интересное применение может быть, если вы запустите приложения от имени другого пользователя (например, для веб-сервера) и хотите разрешить определенным пользователям выполнять административные задачи в качестве того пользователя (например, завершение зомби процессов).

В файле перечислите пользователя(лей) внутри   и   перед списком команд:

Например, чтобы разрешить пользователю запуск утилиты  от пользователя  или :

С такой настройкой пользователь может запускать для выбора пользователя, от имени которого он хочет запустить приложение:

Вы можете установить alias для пользователя, от имени которого нужно запустить приложение, используя директиву. Ее использование идентично другим директивам, которые мы видели ранее.

Пароли и настройки по умолчанию
По умолчанию просит пользователя идентифицировать себя, используя его собственный пароль. Как только пароль введен, запоминает его на 5 минут, позволяя пользователю сосредоточиться на своих задачах и не вводить свой пароль повторно.

Конечно же, это поведение можно изменить: вы можете установить директиву  в, чтобы изменить поведение по умолчанию для пользователя.

Например, чтобы изменить 5 минут по умолчанию на 0 (не запоминать пароль никогда):

Настройка  запомнит пароль навсегда (до тех пор, пока система не будет перезагружена).

Другой настройкой может быть требование пароля пользователя от имени, которого нужно запустить команду, а не личного пароля. Это достигается использованием. В следующем примере мы также установим число повторных попыток (как много раз пользователь может ввести пароль заново, перед тем как выдаст ошибку) на   вместо значения по умолчанию 3:

Другим интересным свойством является сохранение переменной, чтобы вы могли запускать графические утилиты:

Вы можете изменять десятки настроек по умолчанию, используя директиву. Откройте man-страницу и найдите.

Если вы, все же, хотите разрешить пользователю запускать определенный набор команд без ввода какого-либо пароля, вам нужно начать команды с, например:

Автодополнение Bash
Пользователям, которым требуется автодополнение bash с использованием sudo, нужно один раз запустить следующую команду.

Автодополнение Zshell
Пользователи, которым требуется автодополнение zsh для sudo, могут указать следующее в и  соответсвенно

С данными изменениями все команды из, и  каталогов будут доступны оболочке для автодополнения, если команда начинается с 'sudo'.

Список привилегий
Чтобы узнать, какими возможностями Вы обладаете, запустите :

Если у вас есть какая-либо команда в, которая не требует ввода пароля, пароль для перечисления этих записей также не потребуется. Иначе будет запрошен запрошен пароль (если он не запомнен).

Продление срока действия пароля
По умолчанию, если пользователь ввел свой пароль для аутентификации в, он запоминается на 5 минут. Если пользователь хочет продлить этот период, он может запустить для сброса временной отметки и получить тем самым еще 5 минут перед тем, как  снова запросит пароль.

Чтобы удалить временную отметку, используйте.