diff mbox series

[1/3] libpam: set pam module path to ${base_libdir}/security

Message ID 20250103092445.566172-1-yi.zhao@windriver.com
State Accepted, archived
Commit bc307ac262956a763fb68d621fb6463b1460bf59
Headers show
Series [1/3] libpam: set pam module path to ${base_libdir}/security | expand

Commit Message

Yi Zhao Jan. 3, 2025, 9:24 a.m. UTC
After upgrading to 1.7.0, the pam module path is set to
${libdir}/security[1]. But from the pam.conf(5) man page, the default
location seems to be "Module location: /lib/security/ or
/lib64/security/, depending on the architecture"[2].

Many third-party pam modules still use {base_libdir}/security as the
default module path, such as pam_lastlog2 (from util-linux), pam_cgroup
(from libcgroup), pam_cap (from libcap), etc.
So currently if you don't use the absolute path to these modules in the
files in /etc/pam.d/, they will not be found:

PAM unable to dlopen(/usr/lib/security/pam_lastlog2.so):
/usr/lib/security/pam_lastlog2.so: cannot open shared object file: No such file or directory

This change only affects sysvinit without usrmerge feature enabled, and
has no effect on systems using systemd.

[1] https://git.openembedded.org/openembedded-core/commit/?id=00eb730291f9630eb70480d37ed48fbadecc547a
[2] https://www.man7.org/linux/man-pages/man5/pam.conf.5.html

Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
---
 meta/recipes-extended/pam/libpam_1.7.0.bb | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)
diff mbox series

Patch

diff --git a/meta/recipes-extended/pam/libpam_1.7.0.bb b/meta/recipes-extended/pam/libpam_1.7.0.bb
index 53839e8cd3..1be3c9e2bb 100644
--- a/meta/recipes-extended/pam/libpam_1.7.0.bb
+++ b/meta/recipes-extended/pam/libpam_1.7.0.bb
@@ -29,7 +29,7 @@  SRC_URI[sha256sum] = "57dcd7a6b966ecd5bbd95e1d11173734691e16b68692fa59661cdae9b1
 
 DEPENDS = "bison-native flex-native libxml2-native virtual/crypt"
 
-EXTRA_OEMESON = "-Ddocs=disabled"
+EXTRA_OEMESON = "-Ddocs=disabled -Dsecuredir=${base_libdir}/security"
 
 S = "${WORKDIR}/Linux-PAM-${PV}"
 
@@ -45,7 +45,7 @@  FILES:${PN} = " \
     ${libdir}/lib*${SOLIBS} \
     ${nonarch_libdir}/tmpfiles.d/*.conf \
 "
-FILES:${PN}-dev += "${libdir}/security/*.la ${libdir}/*.la ${libdir}/lib*${SOLIBSDEV}"
+FILES:${PN}-dev += "${base_libdir}/security/*.la ${libdir}/*.la ${libdir}/lib*${SOLIBSDEV}"
 FILES:${PN}-runtime = "${sysconfdir} ${sbindir} ${nonarch_libdir}/systemd/system"
 FILES:${PN}-xtests = "${datadir}/Linux-PAM/xtests"
 
@@ -105,9 +105,9 @@  python populate_packages:prepend () {
 
     mlprefix = d.getVar('MLPREFIX') or ''
     dvar = d.expand('${WORKDIR}/package')
-    pam_libdir = d.expand('${libdir}/security')
+    pam_libdir = d.expand('${base_libdir}/security')
     pam_sbindir = d.expand('${sbindir}')
-    pam_filterdir = d.expand('${libdir}/security/pam_filter')
+    pam_filterdir = d.expand('${base_libdir}/security/pam_filter')
     pam_pkgname = mlprefix + 'pam-plugin%s'
 
     do_split_packages(d, pam_libdir, r'^pam(.*)\.so$', pam_pkgname,