Алексей Мичурин

Полезное

Работа с данными: передача, архивирование

Для Python-программиста

Нотификатор

Памятка с полезными скриптами и наборами опций

Mount/umount USB-Flash

Создание swap в файле

Русификация a2ps

Настройка Xorg

Работа с сетью: настройка, диагностика

Рort knocking

Как подготовить полноценную инсталляцию ArchLinux на USB Flash.

Настройка sudo под Linux

Фракталы

Фрактальная размерность

Применение фракталов

Фрактальные деревья

Комплексная размерность

Теория относительности

Пространство-время

Физический смысл

Скорость света

Эквивалентность систем

Относительность

Движение быстрее света

Парадокс близнецов

Любопытные соображения

Недоделанное

Редактор favicon on-line

Устаревшие страницы

Простой HTML-валидатор

Об авторе

Настройка sudo под Linux


Этот текст не является переводом полного руководства. Если вы администрируете систему с большим количеством пользователей и сложным распределением полномочий, то очень советую почитать документацию. Но, если вам просто надо выдать определённому пользователю определённые права, то в этой заметке в скорее всего найдёте готовый рецепт.

Как редактировать sudoers (visudo)

Настройка прав доступа sudo

Простой пример

Продвинутые правила sudo

Флаги

Как редактировать sudoers (visudo)

Редактировать файл sudoers "вручную" — плохая практика. Для редактирования есть специальная команда visudo. Она сама знает, где расположен файл sudoers, и отследит, чтобы вы редактировали копия, файл всегда был целостным, а копия была удалена.

visudo позволяет использовать любой редактор. Например, вы можете использовать mcedit:

# EDITOR=mcedit visudo

Если вы допустите ошибку, то, при выходе из редактора получите сообщение вида:

visudo: »> /etc/sudoers: syntax error near line 73 «<
What now?

В этом случае, лучше ввести букву "e" и продолжить редактирование.

Настройка прав доступа sudo

Файл sudoers, обычно, содержит много комментариев. В каждой системе/дистрибутиве они различны. Имеет смысл ознакомиться с ними и, возможно, внести какие-то правки глобальных настроек.

Особое внимание следует обратить на директивы

#include ...
#includedir ...

за ними скрывается ещё куча всего интересного.

Но наc интересуют по-пользовательские настройки. Обычно для них есть отдельная часть в sudoers, которая может начинаться таким комментарием:

##
## User privilege specification
##

Дальше полномочия описываются строчками вида:

[пользователь] [хост]=([кем может стать]) [что может сделать]

Простой пример

alex ALL=(root) /bin/mount /media/n78

Это означает, что пользователь alex, может выполнить с правами root команду /bin/mount /media/n78.

Обратите внимание, путь к команде mount указан полностью. Это важно! Если этого не сделать, то sudo работать не будет.

Теперь пользователь alex может выполнить команду

$ sudo mount /media/n78

У него будет спрошен пароль (его, а не root).

Продвинутые правила sudo

Можно написать более сложные правила:

alex ALL=(ALL) ALL
alex ALL=(root) NOPASSWD: /bin/mount /media/n78
alex ALL=(root) NOPASSWD: /bin/umount /media/n78

Пользователь alex может выполнить монтирование от пользователя root без пароля. И может выполнить любую команду от любого пользователя, если укажет пароль.

Флаги

Более полный пример с использованием флагов:

# пользователь root может всё без ограничений
root ALL=(ALL) ALL
# пользователь alex может становиться пользователем
# operator, без указания пароля, и пользователем root
# с указанием пароля
alex ALL=(operator) NOPASSWD: ALL, (root) ALL
# пользователь temp должен всегда указывать не свой пароль,
# а пароль того, кем он хочет стать; он может становиться
# только пользователем alex и выполнять только одну команду
Defaults:temp targetpw
temp ALL=(alex) /bin/bash
# (этот пользователь предназначен только для удалённого
# входа в систему с использованием временного пароля,
# отсюда и название)

Флагов существует великое множество, смотрите документацию.


Вы можете связаться со мной по e-mail a.michurin@gmail.com.



Технология Google App Engine Python powered