Запуск программ от имени суперпользователя: usermode

Запускать программы от имени суперпользователя можно по разному:
1. Выполнить вход в систему от имени супер пользователя
2. Перейти в режим супер пользователя (su)
3. Выполнить команду от имени суперпользователя (su -c, sudo)

Чаще всего пользователи используют для этого команды su или sudo.

Мне бы хотелось помимо перечисленных способов осветить также инструмент usermode.

Usermode — это набор программ включающий в себя:
  • userinfo — Программа для смены информации о себе
  • userpassword — Программа для смены пароля
  • usermount — Программа для подключения, отключения и форматирования дисков

Запуск данных программ от имени суперпользователя обеспечивается инструментом userhelper. Именно его мы и рассмотрим.

userhelper в дистрибутиве Mandriva активно используется для запуска пользователем разных программ, которые обычно требуют привилегий супер пользователя (reboot, halt, drakrpm...).
Для обеспечения своей работы userhelper использует возможности PAM. userhelper рассматривается мной, как замечательный инструмент избавляющий систему от suid программ.

Давайте посмотрим как можно запустить какую-нибудь программу от имени суперпользователя. Т.к. я периодически использую команду urpmi, то мы и рассмотрим на его примере.

Посмотрим что нам нужно будет сделать:
  1. Нам сперва нужно обеспечить нахождение программы обычным пользователем:
  2. urpmi находится в директории /usr/sbin. Данная директория для обычного пользователя не доступна в пути поиска программ (чтобы убедится выполните команду echo $PATH ). Для того чтобы пользователь смог выполнить команду urpmi, последняя должна находится в /usr/bin директории.Можно было бы сделать символическую ссылку /usr/bin/urpmi ссылающуюся на /usr/sbin/urpmi, но это нам ничего полезного не даст. Мы сделаем по другому. Для того чтобы воспользоваться возможностями userhelper мы сделаем символическую ссылку /usr/bin/urpmi ссылающуюся на /usr/bin/consolehelper
    ln -s /usr/bin/consolehelper /usr/bin/urpmi
  3. Нужно настроить запуск программы посредством userhelper:
  4. создадим файл /etc/security/console.apps/urpmi и запишем в него следующее
    USER=root
    PROGRAM=/usr/sbin/urpmi
    SESSION=true
    FALLBACK=false
    GUI=no
    
    В этом файле описывается поведение при запуске программы urpmi от имени обычного пользователя:
    1. USER — требует ввод пароля указанного пользователя, если этот параметр будет равен "<user>", то будут применяться учетные данные текущего пользователя
    2. PROGRAM — какая программа запускается, если авторизация прошла успешно
    3. SESSION — нужно ли открывать сессию
    4. FALLBACK — может ли программа использоваться без привилегий супер пользователя
    5. GUI — использовать ли возможности графического режима ввода
  5. Теперь осталось сделать привязку к PAM для авторизации пользователя:
  6. Создаем файл /etc/pam.d/urpmi с содержимым:
    #%PAM-1.0
    #авторизация в консольном режиме
    auth       sufficient   pam_rootok.so
    auth       required     pam_console.so
    account    required     pam_permit.so
    session    optional     pam_xauth.so
    либо
    #%PAM-1.0
    #авторизация с поддержкой графического режима
    auth       sufficient   pam_rootok.so
    auth       sufficient   pam_timestamp.so
    auth       include      system-auth
    session    required     pam_permit.so
    session    optional     pam_xauth.so
    session    optional     pam_timestamp.so
    account    required     pam_permit.so
    
    так же этот пункт можно было пройти, создав символическую ссылку на уже готовый шаблон:авторизация в консольном режиме
    ln -s /etc/pam.d/mandriva-console-auth /etc/pam.d/urpmi
    либо авторизация с поддержкой графического режима
    ln -s /etc/pam.d/mandriva-simple-auth /etc/pam.d/urpmi

На этом обзор заканчиватся, спасибо за потраченное время. Дополнения, уточнения и отзывы прошу писать в комментарии.

Литература:
man:userhelper
Опубликовать в своем блоге livejournal.com

Комментарии Вконтакте facebook

Комментарии (0)

rss свернуть / развернуть
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.
Блоги, Полезные советы и секреты, Запуск программ от имени суперпользователя: usermode