如何调试Linux PAM模块?

问题描述 投票:0回答:3

我需要为Linux编写PAM模块。当我每次需要测试它时,是否可以在不重新启动系统的情况下进行调试?如果设备无法正常运行并无法进入,会发生什么情况?我该如何关闭它?如果模块加载失败,例如缺少依赖项,会发生什么?

linux pam
3个回答
2
投票

方法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模块。


2
投票

许多 PAM 模块都有使用 syslog 的

debug
选项。 /var/log/secure 中有更多日志记录。
您可以使用服务来测试大多数配置。例如,如果 /etc/pam.d/su 中有以下行:
account required pam_time.so debug

您可以通过运行
su
来测试它并检查会发生什么。
如果您的服务上有 PAM 配置,需要重新启动才能进行测试(如
login
),我建议在部署之前使用虚拟机来全面测试您的 PAM 配置。您还可以重新启动到运行级别 1 并恢复 /etc/pam.d 文件中的更改。


0
投票

最好参考正在使用的模块的操作系统手册页。 例如 Debian

曼 pam_exec

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 ...
© www.soinside.com 2019 - 2024. All rights reserved.