Почему pam_exec.so работает с sudo, а не с su?

Я пытаюсь разрешить root-доступ из обычной пользовательской оболочки на основе успешного выполнения специальной программы, и цель состоит в том, чтобы как su и sudo отвечать на новую конфигурацию PAM. Специальная программа является единственным критерием авторизации.

Конфигурация, которую я пытаюсь использовать в Debian 9 в файле /etc/pam.d/common-auth:

  • Необходимо запускать partprobe при каждой загрузке
  • Отключение сети на Raspbian
  • Заменить оболочку пользователя из тире в bash
  • Debian считает, что моя файловая система кодируется как ISO-8859-1
  • youtube-dl и --no-mtime, что это значит?
  • Apache «Модуль mod_alias не существует»
  •  auth [success=done default=die] pam_exec.so seteuid /usr/bin/whoami 

    … где whoami – это программа, которая возвращает успешный статус в качестве заполнителя для специальной программы. Остальная часть файла common-auth закомментирована.

    Файл /etc/pam.d/su имеет:

     auth sufficient pam_rootok.so session required pam_env.so readenv=1 session required pam_env.so readenv=1 envfile=/etc/default/locale session optional pam_mail.so nopen session required pam_limits.so @include common-auth @include common-account @include common-session 

    В результате sudo будет авторизовано, но su не будет:

     $ su su: Permission denied 

    (Те же результаты на Fedora 25 с использованием файла system-auth: sudo works и su нет.)

    Похоже, что su просто отказывается работать с pam_exec. На данный момент я в недоумении и могу использовать некоторые подсказки для решения этой проблемы …


    Просматривая / var / log / messages, это регистрируется при попытке su :

     Mar 18 08:46:39 localhost kernel: [ 61.622184] audit: type=1100 audit(1489841199.166:114): pid=1107 uid=1000 auid=1000 ses=1 msg='op=PAM:authentication acct="root" exe="/bin/su" hostname=? addr=? terminal=/dev/pts/0 res=success' Mar 18 08:46:39 localhost kernel: [ 61.622480] audit: type=1101 audit(1489841199.166:115): pid=1107 uid=1000 auid=1000 ses=1 msg='op=PAM:accounting acct="root" exe="/bin/su" hostname=? addr=? terminal=/dev/pts/0 res=success' Mar 18 08:46:39 localhost kernel: [ 61.623224] audit: type=1103 audit(1489841199.167:116): pid=1107 uid=1000 auid=1000 ses=1 msg='op=PAM:setcred acct="root" exe="/bin/su" hostname=? addr=? terminal=/dev/pts/0 res=failed' 

    Для сравнения, вот что происходит с sudo :

     Mar 18 08:47:00 localhost kernel: [ 82.750720] audit: type=1123 audit(1489841220.294:117): pid=1110 uid=1000 auid=1000 ses=1 msg='cwd="/home/user" cmd=67726570202D69206175646974202F7661722F6C6F672F6D65737361676573 terminal=pts/0 res=success' Mar 18 08:47:00 localhost kernel: [ 82.751369] audit: type=1110 audit(1489841220.295:118): pid=1110 uid=0 auid=1000 ses=1 msg='op=PAM:setcred acct="root" exe="/usr/bin/sudo" hostname=? addr=? terminal=/dev/pts/0 res=failed' Mar 18 08:47:00 localhost kernel: [ 82.751814] audit: type=1105 audit(1489841220.295:119): pid=1110 uid=0 auid=1000 ses=1 msg='op=PAM:session_open acct="root" exe="/usr/bin/sudo" hostname=? addr=? terminal=/dev/pts/0 res=success' 


    ОБНОВИТЬ

    Я пришел к решению, отражающему способ решения Debian этой проблемы, который получает твердую уверенность в успехе или неудачу, несмотря на различные команды, которые аутентифицируются в разных контекстах, как отметил @hildred. Во-первых, я расскажу о соответствующих строках из общей версии auth по умолчанию Debian:

     auth [success=1 default=ignore] pam_unix.so nullok_secure auth requisite pam_deny.so auth required pam_permit.so 

    И вот замена, в которой используется запрос Qubes auth:

     auth [success=1 default=ignore] pam_exec.so seteuid /usr/lib/qubes/qrexec-client-vm dom0 qubes.VMAuth /bin/grep -q ^1$ auth requisite pam_deny.so auth required pam_permit.so 

    Это «пропускает один», чтобы разрешать только на успех, иначе отрицать.

    Предложение @hildred «перфорировать» стек с линией pam_permit до строки pam_exec (где принято решение) менее выразительно, но также работает, и это поставило меня на путь поиска четкого решения.

  • Вертикальные версии
  • Как узнать, откуда взялись записи resolv.conf?
  • Ускорение OpenGL прекратило работу после обновления до Wheezy
  • Какую оболочку я должен изучить для FreeBSD и Debian?
  • Как добавить зависимости в библиотеке debian / control?
  • Как сконфигурировать имя устройства для шифрования корневого раздела с Grub2?
  • One Solution collect form web for “Почему pam_exec.so работает с sudo, а не с su?”

    Есть две проблемы, которые я вижу прямо с места в карьер (кроме попыток экспериментальных конфигураций pam для общего, а не только одного сервиса) заключается в том, что su всегда аутентифицируется как root, тогда как sudo обычно аутентифицируется как пользователь, а su имеет достаточную строку авторизации, и вы используете нотации в общем файле. Нотация скобок не всегда устанавливает ваше состояние успеха. Это можно исправить, добавив auth, чтобы разрешить линию до exec или отбрасывать нотацию в скобках, так как для вашего варианта использования она не нужна или также использует нотацию с кронштейнами в строке корня ok, так что при отсутствии достаточного теста не будет установлен отрицательный успех ,

    Linux и Unix - лучшая ОС в мире.