问题描述
我正在构建一个新的PAM模块,以在打开新会话时执行一些操作。该模块将不会执行身份验证,只会进行一些日志记录和监视。
我创建了一个简单的测试来开始学习。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <security/pam_appl.h>
#include <security/pam_modules.h>
PAM_EXTERN int pam_sm_open_session(pam_handle_t *pamh,int flags,int argc,const char **argv){
printf("session opened\n");
return PAM_SUCCESS;
}
我对此进行了编译并链接了.so文件。在/etc/pam.d/sshd
的末尾,我添加了一行
session optional pamtest.so
我重新启动sshd并通过新终端登录。我收到了测试消息并收到了外壳。一切似乎都正常工作。然后,我尝试通过scp将文件从工作站复制到具有PAM测试模块的服务器。我收到测试消息,但文件未复制。
~/dev/monitor scp test storage:/home/user/dev/monitor/test
session opened
这是为什么?我怀疑我会在实时模块中使用printf,但是我仍然想弄清楚自己在将来的开发中做错了什么。
谢谢!
编辑:
我忘了提一个事实,如果我退出printf
行,一切似乎都可以正常运行。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)