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

Что изменяет файлы PAM при установке rpm, чтобы добавить изменения конфигурации?

Этот вопрос предназначен для общего применения, но я могу использовать некоторые конкретные примеры, чтобы проиллюстрировать суть моего вопроса. Когда установлены определенные пакеты аутентификации Linux, такие как krb5, sssd или pam_pkcs11, что-то попадает в файлы в каталоге конфигурации PAM (например, /etc/pam.d/system-auth и /etc/pam.d/password-auth) и добавит или изменит строку, чтобы указать на новый .так файлы, которые были установлены, например pam_krb5.so, pam_sssd.so, или pam_pkcs11.so для использования.

Похоже, что это происходит автоматически для определенных пакетов без вмешательства пользователя, просто путем установки пакетов rpm (с помощью yum или напрямую с помощью инструмента rpm), как я наблюдал, в случае установки пакета sssd (по крайней мере, на RHEL 7), который будет добавить ссылки на pam_sssd.so в * -auth PAM файлы. Я решил, что это возможно только при помощи внутренних сценариев, которые могут быть у rpms, поэтому я посмотрел, как перечислить внутренние сценарии в SPEC rpm, смонтировал образ RHEL 7 для просмотра исходных пакетов и запустил это внутри каталога Packages:

sudo rpm --scripts -qpl sssd- * | grep -i pam

Тем не менее, я не получаю возвращенных строк, которые указывали бы на то, что что-то касается файлов в каталоге /etc/pam.d, хотя, если я удалю grep, я вижу результаты для логики сценария if / then, выполняющей другие действия, поэтому --скрипты параметр рабочий.

Мне также любопытно, в очень частном примере, что добавляет эту строку к моему /etc/pam.d/system-auth файл:

auth [success = done authinfo_unavail = ignore ignore = ignore default = die] pam_pkcs11.so nodebug

Если это не внутренний сценарий для RPM, мне было интересно, мог ли это быть определенный двоичный файл среди вновь установленных файлов, который был запущен изначально, и это то, что отвечает за добавление этих изменений, но не видел никаких доказательств того, что который.

Кроме того, я на самом деле grep'd для authconfig строк в сценариях RPM, поскольку я знаю, что authconfig может это сделать, но ничего не нашел. Тем не менее, похоже, что он должен работать authconfig или что-то подобное в фоновом режиме для этого.

Есть ли у кого-нибудь представление о том, что вызывает эти изменения?

Признаюсь, вопрос довольно интригующий.

RedHat - крупная организация, которая может позволить себе переписать любое программное обеспечение с открытым исходным кодом, которое она предоставляет в своих дистрибутивах (RHEL, CentOS). И он это делает.

Я решил сделать strace при установке samba на машине CentOS7.3, и вот что я увидел (частичный вывод):

open("/etc/pam.d/samba;593a8da8", O_WRONLY|O_CREAT|O_TRUNC, 0666) = 47
fcntl(47, F_SETFD, FD_CLOEXEC)          = 0
umask(022)                              = 0777
write(47, "#%PAM-1.0\nauth       required\tpa"..., 177) = 177
close(47)                               = 0
ioctl(1, SNDCTL_TMR_TIMEBASE or SNDRV_TIMER_IOCTL_NEXT_DEVICE or TCGETS, {B38400 opost isig icanon echo ...}) = 0
ioctl(1, SNDCTL_TMR_TIMEBASE or SNDRV_TIMER_IOCTL_NEXT_DEVICE or TCGETS, {B38400 opost isig icanon echo ...}) = 0
lstat("/etc/pam.d/samba", 0x7ffeed35d250) = -1 ENOENT (No such file or directory)
rename("/etc/pam.d/samba;593a8da8", "/etc/pam.d/samba") = 0
getuid()                                = 0
getuid()                                = 0
chown("/etc/pam.d/samba", 0, 0)         = 0
chmod("/etc/pam.d/samba", 0644)         = 0
utime("/etc/pam.d/samba", [2017/05/25-07:33:05, 2017/05/25-07:33:05]) = 0
getuid()

Он создает /etc/pam.d/samba файл со следующим содержанием:

#%PAM-1.0
auth       required     pam_nologin.so
auth       include      password-auth
account    include      password-auth
session    include      password-auth
password   include      password-auth

Кроме того, есть инструмент, который может автоматически обновляться, может использоваться для резервного копирования и / или восстановления файлов конфигурации pam.d - это authconfig. Я предполагаю, что его можно использовать во время установки определенных пакетов для обновления PAM файлы конфигурации. Например, часть процедуры RedHat по настройке SSSD для системной аутентификации (включая настройку PAM) является:

Use authconfig to enable SSSD for system authentication.
# authconfig --update --enablesssd --enablesssdauth This automatically updates the PAM configuration to reference all of the

А вот результат rpm --scripts -qpl samba-4* | grep -i pam на моем тестовом сервере: /etc/pam.d/samba - это новый файл, созданный при установке samba.