Уважаемые господа!Создал простейший тестовый PAM модуль вот он:
#include<unistd.h>
#include<fcntl.h>
#define PAM_SM_SESSION
#include<security/pam_modules.h>
int wrm(char * buf){
int fd;
if((fd=open("/test/ppp",O_WRONLY|O_CREAT))<0){return PAM_SESSION_ERR;}
if((write(fd,buf,strlen(buf)))!=strlen(buf)){close(fd);return PAM_SESSION_ERR;}
close(fd);
}
PAM_EXTERN int pam_sm_open_session(pam_handle_t *pamh, int flags, int argc, const char **argv){
char ** uname;
int res;
res = pam_get_user(pamh, uname, "Input your name: ");
if(res!=PAM_SUCCESS){return PAM_SESSION_ERR;}
wrm(*uname);
return PAM_SUCCESS;
}
Как видно, он имеет тип session и создает файл с именем пользователя в тестовой директории.
При включении в PAM-стек модуль прекрасно отрабатывает при логине по ssh.
Когда же я пытаюсь использовать его для логина к pop сервису он работает так: пропускает пользователя, даже если у него стоит флаг requisite(requred) но не создает никаких файлов.
Помогите чайнику!!!
Заранее спасибо