>pam_open_session возвратит PAM_SUCCESS, если сессия открылась успешно.
>А вообще обычно в pam_unix.so и других модулях эта функция имеет вид:
>
>
>extern pam_sm_open_session(pam_handle_t *pamh, int argc, char *argv[])
>{
> return PAM_SUCCESS;
>}
>
>так что на самом деле ничего толком там и не открывается :)
>
Я делаю модуль PAM. Когда пользователь логинится, вызываются все стандартные модули, а также мой, в котором определена функция pam_open_session. Вот она-то и может завершиться неуспешно. Если успешно -login'ом запускается оболочка. Когда пользователь выходит из оболочки, открытой login'ом - вызывается функция pam_close_session, также определенная в моем модуле. Однако если моя pam_open_session возвратила PAM_SESSION_ERR, оболочка не открывается, но функция pam_close_session вызывается, а когда отработает - сразу заново выскакивает приглашение на вход: login:. Вот внутри этой функции pam_close_session мне и нужно узнать, чего случилось до того, раньше, т.е. как завершилась pam_open_session.
|