[OpenAFS] ssh and afs

Derek T. Yarnell derek@cs.umd.edu
Mon, 13 May 2002 14:40:24 -0400

On Sat, May 04, 2002 at 11:34:36AM -0500, Charles Clancy wrote:
> > Has anyone gotten pam-openafs-session working on Solaris 8? I am having
> > a hell of a time with it...
> I had major problems with it too.  It just doesn't work.  It should be
> called pam-linux-openafs-session.  That's why I wrote pam_aklog for
> Solaris.
> http://www.ifp.uiuc.edu/~tclancy/proj/pam-aklog-1.0.tar.gz
> Of course, to be fair, mine should be called pam-solaris-aklog, because it
> simply does not work on Linux.  Linux and Solaris have slightly different
> PAM interfaces.  Most claim that Solaris's is the "broken" one.

Thanks Charles for the pam module but I can't get it to work,

extern int pam_sm_open_session(pam_handle_t *pamh, int flags, int argc, CONST char **argv) {
        char *user;             /* username of the person logging in */
        pid_t pid;              /* PID after fork */
        int status;             /* waitpid fun */

        pam_get_user(pamh, &user, NULL);                /* PAM call to get username of person logging in */

        if (setpag()==-1) return PAM_SUCCESS;   /* Create New Process Authentication Group for token */

        pid=fork();                                     /* procreate! */
        if (pid==0) {                                   /* stuff to do if we're the kid */
                setuid(getpwnam(user)->pw_uid);         /* set the UID to the person logging in, just for fun */
                execvp(argv[0],argv);                   /* exec the aklog binary specified in the PAM conf line */
        waitpid(pid, &status, 0);                       /* wait for child to be brutally murdered */
        if(WIFEXITED(status)) return PAM_SUCCESS;       /* if died peacefully, exit with SUCCESS */

        return PAM_SUCCESS;                             /* return success anyway, because we want to */

This is the main function that should get called, i can "echo 5 > /etc/pam_debug"
and see that it is loading the module and the module is returning PAM_SUCCESS which
it does regardless if it ran aklog or not, from what I can tell. I tested this, and
it is returning where if it died peacefully. 

I get this though when compiling, gcc 2.95.3 on solaris 8

pam_aklog.c: In function `pam_sm_open_session':
pam_aklog.c:39: warning: passing arg 2 of `execvp' from incompatible pointer type

execvp's second argument via the man page is const *char argv[] which as far as I 
knew was not incompatiable with const char **argv?

Derek T. Yarnell
University of Maryland
Computer Science Department Unix Staff