【发布时间】:2019-01-02 04:20:24
【问题描述】:
我需要为 Linux 编写 PAM 模块。每次我需要测试它时,它是不是在不重新启动系统的情况下调试它的好方法?如果设备无法正常运行并无法进入,会发生什么情况?我该如何关闭它?如果模块加载失败,例如缺少依赖项,会发生什么?
【问题讨论】:
我需要为 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 中有更多的日志记录。
您可以使用服务测试大多数配置。例如,如果您在 /etc/pam.d/su 中有以下行:account required pam_time.so debug
您可以通过运行 su 来测试它并检查会发生什么。
如果您在服务上有 PAM 配置,需要重新启动才能进行测试(例如 login),我建议在部署之前使用虚拟机来全面测试您的 PAM 配置。您还可以重新启动到运行级别 1 并将更改还原到 /etc/pam.d 文件中。
【讨论】: