Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何调试Linux PAM模块?_Linux_Pam - Fatal编程技术网

如何调试Linux PAM模块?

如何调试Linux PAM模块?,linux,pam,Linux,Pam,我需要为Linux编写PAM模块。当我需要测试它时,不需要每次重新启动系统就可以调试它,这是一种很好的方式吗?如果装置不能正常运行并泄漏,会发生什么情况?我怎么关掉它?如果模块加载失败(例如,缺少依赖项的原因),会发生什么情况?方法1:您可以尝试修改pam.d中不易受影响的文件来测试模块。例如,更改/etc/pam.d/中“sudo”的pam配置,然后添加模块以执行测试。例如:在以下配置中,“sudo”文件被修改以检查“pam_auth.so”文件的工作情况 #%PAM-1.0 auth

我需要为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模块。

许多PAM模块具有使用syslog的
debug
选项。还有更多的登录/var/log/secure。
大多数配置都可以使用服务进行测试。例如,如果您在/etc/pam.d/su中有一行:
account required pam\u time.so debug

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