我需要为Linux编写PAM模块。每次我需要测试它时,是否可以在没有重启系统的情况下调试它?如果设备无法正常运行并进入,会发生什么?我该如何关闭它?如果模块加载失败会发生什么,例如,缺少依赖性的原因?
答案 0 :(得分:1)
方法1:您可以尝试在pam.d中修改不太敏感的文件来测试您的模块。例如,更改' sudo'的pam配置。在/etc/pam.d/里面然后添加你的模块来执行测试。例如:在以下配置中,' sudo'文件被修改以检查' pam_auth.so'的工作情况。文件。
return items.Join(itemStores, i => ItemId, is => is.ItemID, (i, is) => new ItemViewBasic {etc });
通过在终端中使用sudo命令进行测试,如下所示:
#%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
请注意,' .so'文件在路径/ lib / security /中。如果安全目录不存在,请创建一个具有相同名称的新目录。
方法2:您可以使用专用工具(如pam-tester)来测试您的PAM模块。
答案 1 :(得分:1)
许多PAM模块具有debug
选项,这些选项使用syslog。 / var / log / secure中还有更多日志记录。
您可以使用服务测试大多数配置。例如,如果在/etc/pam.d/su中包含以下行:
account required pam_time.so debug
您可以通过运行su
进行测试并检查会发生什么情况。
如果您在服务上具有PAM配置,则需要重新启动才能进行测试(例如login
),我建议使用虚拟机在部署前完全测试您的PAM配置。您还可以重新引导到运行级别1,并将更改恢复到/etc/pam.d文件。