Назад | Перейти на главную страницу

Как настроить повышение уровня пользователя Gnome в RHEL / CentOS

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

Я добился некоторого прогресса. Если файл существует в /etc/security/console.apps с именем службы, пытающейся запустить (например, pirut диспетчер пакетов), то GNOME запросит пароль и повысит уровень программы. Здесь pirut файл:

USER=root
PROGRAM=/usr/sbin/pirut
SESSION=true
KEEP_ENV_VARS=http_proxy,ftp_proxy

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

А man console.apps актуально; однако бесполезно:

Каталог /etc/security/console.apps/ должен содержать по одному файлу для каждого приложения, которое хочет разрешить доступ пользователям консоли. Имя файла должно совпадать с именем servicename, а содержимое не имеет значения; файл может быть файлом нулевой длины. Приложение, в котором используется файл, может определять содержимое любым удобным для него способом.

Мой вопрос: как мне сообщить GNOME / ConsoleHelper, что пользователь также должен быть в определенном месте, чтобы разрешить выполнение?

То, что вы хотите сделать для consolehelper, помещается UGROUPS=wheel в файлах console.apps. (Вам не нужно менять то, что уже есть, и обычно не следует.) А затем добавьте соответствующих пользователей в группу wheel. Затем членам этой группы будет предложено выполнить аутентификацию от имени пользователя, в то время как другие пользователи по-прежнему будут выполнять авторизацию от имени пользователя root. (Некоторое время назад мне нужна была такая же функциональность, поэтому я написал ее и обновил патч. Открытый исходный код - это здорово.)

Это задокументировано в man userhelper.

В более новых дистрибутивах - текущих Fedora и RHEL6 - consolehelper постепенно заменяется PolicyKit (a.k.a. polkit). Он имеет другую схему конфигурации, но может делать то же самое. Видеть man pklocalauthority для подробностей об этом, но сводка такова: поместите файлы в /etc/polkit-1/localauthority/50-local.d с содержанием вроде:

[Wheel-Group Permissions]
Identity=unix-group:wheel
Action=org.something.seedocs.*;more.actions.*;whatever.you.want.*
ResultAny=auth_self

И, наконец, вы можете раскомментировать %wheel ALL=(ALL) ALL линия в /etc/sudoers. (Это может стать значением по умолчанию в Fedora 15.)