在哪里放置 PAM 模块?
Where to put a PAM module?
我目前正在尝试测试一个 PAM 模块,这个:http://www.linux-pam.org/Linux-PAM-html/adg-example.html。
没有关于放置 .o
文件的位置的指示。
我试着把它放在 /lib/security
和 /usr/lib/security
但它不起作用。
我在编译时没有出错:
$ gcc -fPIC -c check_user.c
$ ld -x --shared -o check_user.so check_user.o
如上所示,我将这些行放在 /etc/pam.d/check_user
:
auth required pam_unix.so
account required pam_unix.so
它似乎不起作用,因为当我尝试使用另一个帐户登录时,我没有收到消息。怎么了?
您链接的文件不是 pam 模块,只是一个使用 pam_unix.so 用 C 语言编写的简短应用程序。你必须编译 运行 check_user.
实际上,您正在浏览 Linux PAM 应用程序开发人员指南,您可能需要查看模块开发指南:http://www.linux-pam.org/Linux-PAM-html/Linux-PAM_MWG.html
如果您需要在登录时启动应用程序(如您的评论中所述)并且您想要使用 pam,您可以在 pam_exec (http://linux.die.net/man/8/pam_exec) 上进行中继。
将此行添加到 /etc/pam。d/login:
session optional pam_exec.so /usr/local/bin/my_prog
另请参阅此 post:https://unix.stackexchange.com/questions/122424/execute-a-command-on-user-logon
对于那些想要创建 PAM 模块的人来说,这里有一个很好的例子:https://github.com/beatgammit/simple-pam。
就我而言,在我的 PAM 模块中调用以在 login/logout 处执行某些操作的函数是:
PAM_EXTERN int pam_sm_open_session(pam_handle_t *pamh, int flags,int argc, const char **argv ) {
printf("Connected\n");
return PAM_SUCCESS;
}
PAM_EXTERN int pam_sm_close_session(pam_handle_t *pamh, int flags,int argc, const char **argv ) {
printf("Disconnected\n");
return PAM_SUCCESS;
}
如README
中所示,so
文件需要放入/lib/security/
。
我目前正在尝试测试一个 PAM 模块,这个:http://www.linux-pam.org/Linux-PAM-html/adg-example.html。
没有关于放置 .o
文件的位置的指示。
我试着把它放在 /lib/security
和 /usr/lib/security
但它不起作用。
我在编译时没有出错:
$ gcc -fPIC -c check_user.c
$ ld -x --shared -o check_user.so check_user.o
如上所示,我将这些行放在 /etc/pam.d/check_user
:
auth required pam_unix.so
account required pam_unix.so
它似乎不起作用,因为当我尝试使用另一个帐户登录时,我没有收到消息。怎么了?
您链接的文件不是 pam 模块,只是一个使用 pam_unix.so 用 C 语言编写的简短应用程序。你必须编译 运行 check_user.
实际上,您正在浏览 Linux PAM 应用程序开发人员指南,您可能需要查看模块开发指南:http://www.linux-pam.org/Linux-PAM-html/Linux-PAM_MWG.html
如果您需要在登录时启动应用程序(如您的评论中所述)并且您想要使用 pam,您可以在 pam_exec (http://linux.die.net/man/8/pam_exec) 上进行中继。
将此行添加到 /etc/pam。d/login:
session optional pam_exec.so /usr/local/bin/my_prog
另请参阅此 post:https://unix.stackexchange.com/questions/122424/execute-a-command-on-user-logon
对于那些想要创建 PAM 模块的人来说,这里有一个很好的例子:https://github.com/beatgammit/simple-pam。
就我而言,在我的 PAM 模块中调用以在 login/logout 处执行某些操作的函数是:
PAM_EXTERN int pam_sm_open_session(pam_handle_t *pamh, int flags,int argc, const char **argv ) {
printf("Connected\n");
return PAM_SUCCESS;
}
PAM_EXTERN int pam_sm_close_session(pam_handle_t *pamh, int flags,int argc, const char **argv ) {
printf("Disconnected\n");
return PAM_SUCCESS;
}
如README
中所示,so
文件需要放入/lib/security/
。