URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 5689
[ Назад ]

Исходное сообщение
"PAM модуль работает странно"

Отправлено DeGreez , 05-Сен-06 17:08 
Уважаемые господа!

Создал простейший тестовый 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) но не создает никаких файлов.
Помогите чайнику!!!

Заранее спасибо


Содержание

Сообщения в этом обсуждении
"PAM модуль работает странно"
Отправлено int_0d , 05-Сен-06 17:25 
а что возращает wrm() в обоих случаях?



"PAM модуль работает странно"
Отправлено DeGreez , 05-Сен-06 17:28 
>а что возращает wrm() в обоих случаях?
возвращает PAM_SUCCESS


"PAM модуль работает странно"
Отправлено int_0d , 05-Сен-06 17:39 
>>а что возращает wrm() в обоих случаях?
>возвращает PAM_SUCCESS
можно спросить каким фигом, если
1) судя по вашему коду вы не возвращаете PAM_SUCCESS в wmb()
2) вы вообше никак не анализируете код возврата wmb()  
      ?


"PAM модуль работает странно"
Отправлено DeGreez , 05-Сен-06 17:55 
>>>а что возращает wrm() в обоих случаях?
>>возвращает PAM_SUCCESS
> можно спросить каким фигом, если
>1) судя по вашему коду вы не возвращаете PAM_SUCCESS в wmb()
>2) вы вообше никак не анализируете код возврата wmb()
>      ?

да, вы, наверное, правы...
теперь в стек возвращаются значение PAM_SUCCESS из wrm().
правда, это ни на что не повлияло.