Этот вопрос предназначен для общего применения, но я могу использовать некоторые конкретные примеры, чтобы проиллюстрировать суть моего вопроса. Когда установлены определенные пакеты аутентификации 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.