据我所知,pam模块有很多
#ll /usr/lib64/security/ | grep pam | wc -l
57
#ll /usr/lib64/security/ | grep pam_unix.so
lrwxrwxrwx 1 root root 11 Apr 14 23:40 pam_unix_acct.so -> pam_unix.so
lrwxrwxrwx 1 root root 11 Apr 14 23:40 pam_unix_auth.so -> pam_unix.so
lrwxrwxrwx 1 root root 11 Apr 14 23:40 pam_unix_passwd.so -> pam_unix.so
lrwxrwxrwx 1 root root 11 Apr 14 23:40 pam_unix_session.so -> pam_unix.so
-rwxr-xr-x 1 root root 57688 Dec 13 2015 pam_unix.so
#ll /usr/lib64/security/ | grep pam_systemd.so
-rwxr-xr-x 1 root root 267840 Sep 18 2016 pam_systemd.so
pam_unix
但是,和之间有什么区别pam_systemd
?
例如: crond
当我屏蔽时systemd-logind
,我发现: crond process ---->pam_systemd----->systemd-logind,但是,是什么让 crond 决定调用pam_systemd
但不调用pam_unix
?pam_unix
和 和之间有什么区别pam_systemd
?
crond[48269]: pam_systemd(crond:session): Failed to create session: Unit systemd-logind.service is masked.
答案1
pam_unix
和pam_systemd
是两个不同的模块,具有不同的作用。根据他们各自的手册页:
pam_unix[是传统密码认证的模块]
[...]
这是标准的 Unix 身份验证模块。它使用系统库中的标准调用来检索和设置帐户信息以及身份验证。通常,如果启用了shadow,则可以从/etc/passwd 和/etc/shadow 文件中获取该信息。
和
pam_systemd在 systemd 登录管理器中注册用户会话
[...]
pam_systemd 使用 systemd 登录管理器 systemd-logind.service(8) 注册用户会话,从而注册 systemd 控制组层次结构。