我需要为Linux编写PAM模块。当我每次需要测试它时,是否可以在不重新启动系统的情况下进行调试?如果设备无法正常运行并无法进入,会发生什么情况?我该如何关闭它?如果模块加载失败,例如缺少依赖项,会发生什么?
方法1:您可以尝试修改pam.d中不易受影响的文件来测试您的模块。例如,更改 /etc/pam.d/ 中“sudo”的 pam 配置,然后添加模块来执行测试。例如:在以下配置中,修改“sudo”文件以检查“pam_auth.so”文件的工作情况。
#%PAM-1.0
auth required pam_env.so readenv=1 user_readenv=0
auth required pam_env.so readenv=1 envfile=/etc/default/locale user_readenv=0
#@include common-auth #this line is commented to make it use my pam module
auth required pam_auth.so
@include common-account
@include common-session-noninteractive
在终端使用sudo命令测试如下:
username@computer:~$ sudo nautilus
请将“.so”文件放在路径/lib/security/中。如果安全目录不存在,请创建一个同名的新目录。
方法2:您可以使用专用工具(如pam-tester)来测试您的PAM模块。
许多 PAM 模块都有使用 syslog 的
debug
选项。 /var/log/secure 中有更多日志记录。account required pam_time.so debug
su
来测试它并检查会发生什么。login
),我建议在部署之前使用虚拟机来全面测试您的 PAM 配置。您还可以重新启动到运行级别 1 并恢复 /etc/pam.d 文件中的更改。
最好参考正在使用的模块的操作系统手册页。 例如 Debian
NAME
pam_exec - PAM module which calls an external command
SYNOPSIS
pam_exec.so [debug] [expose_authtok] [seteuid] [quiet] [stdout] [log=file] [type=type] command [...]
session optional pam_exec.so debug log=/var/log/debug seteuid ...