28.5. Разрешение доступа с консоли к другим приложениям

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

Прежде всего, учтите, что подобный доступ с консоли возможен только к приложениям, размещённым в каталогах /sbin/ и /usr/sbin/, поэтому приложение, которое вы хотите запускать, должно располагаться в одном из них. Проверив это, выполните следующие действия:

  1. Создайте ссылку с названием вашего приложения, например, foo, указывающую на приложение /usr/bin/consolehelper:

    cd /usr/bin
    ln -s consolehelper foo
  2. Создайте файл /etc/security/console.apps/foo:

    touch /etc/security/console.apps/foo
  3. Создайте файл конфигурации PAM для службы foo в каталоге /etc/pam.d/. Легче всего начать, скопировав файл конфигурации PAM для службы halt и отредактировав его по своему усмотрению:

    cp /etc/pam.d/halt /etc/pam.d/foo

Теперь при запуске программы /usr/bin/foo будет вызвана утилита consolehelper, которая проверит подлинность пользователя с помощью /usr/sbin/userhelper. Чтобы проверить подлинность пользователя, consolehelper запрашивает пароль пользователя, если /etc/pam.d/foo является копией файла /etc/pam.d/halt (в противном случае эта утилита выполняет то, что указано в /etc/pam.d/foo) а затем запускает /usr/sbin/foo с правами root.

В файле конфигурации PAM приложение можно настроить, чтобы модуль pam_timestamp запоминал (или кэшировал) результат успешной проверки подлинности. Если при запуске приложения предоставлены правильные сведения для проверки подлинности (пароль root), создаётся файл временной метки. По умолчанию результат успешной проверки подлинности кэшируется в течение пяти минут. В этом временном интервале любое приложение, настроенное на использование pam_timestamp и запущенное в том же сеансе, автоматически регистрируется под именем этого пользователя — вводить пароль root повторно не требуется.

Этот модуль включён в пакет pam. Чтобы эта функция работала, файл конфигурации PAM в etc/pam.d/ должен содержать следующие строки:

auth sufficient /lib/security/pam_timestamp.so
session optional /lib/security/pam_timestamp.so

Первая строка, начинающаяся с auth, должна идти после остальных строк auth sufficient, а строка, начинающаяся с session, должна идти после остальных строк session optional.

Если для приложения, настроенного на использование pam_timestamp и запущенного из Главного меню (Main Menu) (на панели), проверка подлинности проходит успешно, в области уведомлений графической среды GNOME или KDE отображается значок . Когда срок кэширования результата проверки подлинности истекает (по умолчанию через пять минут), значок исчезает.

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