Sudo

Позволяет запускать команды от имени другого пользователя (обычно root). В конфигурационном файле можно задать имя этого пользователя (или группу, в которой он находится), а также название команд. Используя sudo можно не включать пользователя в группу wheel.

Записывает запущенные команды в лог. По умолчанию в /var/log/messages записываются неудачные попытки воспользоваться sudo

Установка
make install clean -C /usr/ports/security/sudo/

Все флажки по умолчанию сброшены

После установки получаем две программы sudo и sudoedit.

Настройка
Редактирование файла с правилами и настройками sudo

С валидацией изменений /usr/local/sbin/visudo Без валидации (просто vi вызывается?) sudoedit /usr/local/etc/sudoers

Пример устанавливается /usr/local/share/doc/sudo/sample.sudoers

Строка, которую надо раскомментировать, чтобы sudo заработал у всех в группе wheel

"# %wheel      ALL=(ALL) SETENV: ALL"

То же самое, но без запроса пароля при запуске

"# %wheel      ALL=(ALL) NOPASSWD: SETENV: ALL"

Чтобы разрешить пользователям монтировать диски (все по умолчанию включены в группу operator) %operator ALL=/sbin/mount /cdrom,/sbin/umount /cdrom

Разрешение запускать команду от имени другого пользователя. Если надо, чтобы запрашивался его пароль, то еще Defaults:non-leksey runaspw "leksey localhost = (non-leksey, non-non-leksey) /usr/bin/du"

Можно указывать явно имена пользователей, для этого надо просто убрать символ процента

По умолчанию введенный пароль запоминается на 5 минут, при последующем вводе еще на 5 минут. Тикеты создаются вот тут /var/run/sudo/имя/номер терминаал

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

Каждый раз будет спрашивать пароль "passwd_timeout=0"

Сохранять на 30 минут введенный пароль "password_timeout=30"

Чтобы пароль спрашивало лишь один раз "Defaults timestamp_timeout = -1"

Чтобы удалить сохраненный пароль sudo -k

Чтобы команды записывались в лог. Файл создается автоматически "Defaults logfile=/var/log/sudolog"

По умолчанию sudo не меняет $HOME (или ключ -H) "Defaults always_set_home"

Флаг rootpw если вместо пароля пользователя надо вводить пароль root.

Использование
Если имя пользователя не указано явно, то подразумевается root.

Запуск с правами root. sudo имя_команды

Просмотр прав (при отсутствии таковых выводится Sorry, user lke may not run sudo on %hostname%). sudo -l Password: User lke may run the following commands on this host: (ALL) SETENV: ALL Чтобы получить консоль от рута (если имя не указано, то подразумевается root) sudo csh

Ввод пароля root и эмуляция его входа в систему. DISPLAY и TERM переменные не изменяются. sudo -i

Запуск от имени другого пользователя sudo -u non-leksey du

Запуск командную строку от другого пользователя с получением его окружения sudo -i -u non-leksey csh

Выполнение команд без запуска интерактивного шела sudo -u kvadriga DISPLAY=:0 -s firefox sudo -u kvadriga DISPLAY=:0 -s mplayer "/home/denzuk/\[Leopard-Raws\]\ Bleach\ -\ 278\ RAW\ \(TX\ 1280x720\ H264\ AAC\).mp4" Относительные пути (в кавычках чтобы правильно тильду интепретировала) либо надо использовать -H sudo -u kvadriga DISPLAY=:0 -s mplayer "~/video.mp4"

Диагностика и замечания
Вместе с sudo перестает работать автопродление в csh, как это исправить описано на странице csh

Поведение при отсутствии прав sudo su Password: свой собственный пароль lke is not in the sudoers file. This incident will be reported.

Указывать пути надо точно так, как указано в конфиге - ниже результат лишнего слэша на конце sudo mount /cdrom/ Sorry, user lke is not allowed to execute '/sbin/mount /cdrom/' as root on dc.agava.net.

Если конфигурационный файл некорректный, то запускаться до исправления не будет, выводя сообщение

sudoedit: parse error in /usr/local/etc/sudoers near line N

less /usr/ports/security/sudosh/pkg-descr sudosh is a sudo shell. Sudosh provides a logged root shell that can be used for auditing. It works just like a VCR, records the root shell session and offers real-time playback. Sudosh is designed to be used with sudo in an enterprise environment.

http://linux-bsd-sharing.blogspot.com/

http://aplawrence.com/Basics/sudo.html