NFSv4 + Kerberos + users
Zoltan Menyhart
Zoltan.Menyhart at bull.net
Thu Jun 14 13:01:27 EDT 2007
The following program can easily reproduce the problem.
(Remember to define your own IP host / port.)
#include <sys/socket.h>
#include <rpcsecgss/rpc/auth_gss.h>
#define PORT 264 // I saw gssd using this
#define IP_ADDR "174.16.110.72" // lucy2_10g.frec.bull.fr
#define PROG 100003
#define VERS 4
#define R_S_SIZE 32768
#define PRINC "nfs at lucy2_10g.frec.bull.fr" // '@' !!!
/* from kerberos source, gssapi_krb5.c */
gss_OID_desc krb5oid = {9, "\052\206\110\206\367\022\001\002\002"};
struct rpc_gss_sec sec;
struct sockaddr_in sa_in;
CLIENT *cl;
AUTH *auth;
main()
{
int s;
sa_in.sin_family = AF_INET;
sa_in.sin_port = htons(PORT);
sa_in.sin_addr.s_addr = inet_addr(IP_ADDR);
cl = clnttcp_create(&sa_in, PROG, VERS, &s, R_S_SIZE, R_S_SIZE);
if (cl == NULL){
fprintf(stderr, "clnttcp_create() failed\n");
return 1;
}
sec.qop = GSS_C_QOP_DEFAULT;
sec.svc = RPCSEC_GSS_SVC_NONE;
sec.cred = GSS_C_NO_CREDENTIAL;
sec.req_flags = 0;
sec.mech = (gss_OID) &krb5oid;
sec.req_flags = GSS_C_MUTUAL_FLAG;
printf("Calling authgss_create_default()\n");
auth = authgss_create_default(cl, PRINC, &sec);
if (auth == NULL){
fprintf(stderr, "authgss_create_default() failed\n");
return 1;
}
printf("authgss_create_default() done\n");
cl->cl_auth = auth;
return 0;
}
# gdb a.out
(gdb) r
Calling authgss_create_default()
... many unprintable characters...
REC.BULL.FR(0&0fsucy2_10g.frec.bull.fr0O.3R at 1MXZ
... more unprintable characters...
^C
Program received signal SIGINT, Interrupt.
0xa000000000010641 in __kernel_syscall_via_break ()
(gdb) bt
#0 0xa000000000010641 in __kernel_syscall_via_break ()
#1 0x200000000024c5c0 in select () from /lib/tls/libc.so.6.1
#2 0x2000000000085f00 in readtcp (ct=0x6000000000010030, buf=0x6000000000018150 "", len=32768)
at clnt_tcp.c:432
#3 0x20000000002b7010 in set_input_fragment () from /lib/tls/libc.so.6.1
#4 0x20000000002b7780 in xdrrec_getbytes () from /lib/tls/libc.so.6.1
#5 0x20000000002b7b80 in xdrrec_getlong () from /lib/tls/libc.so.6.1
#6 0x20000000002b3880 in xdr_u_long_internal () from /lib/tls/libc.so.6.1
#7 0x20000000002ab930 in xdr_replymsg_internal () from /lib/tls/libc.so.6.1
#8 0x20000000000855e0 in clnttcp_call (h=0x6000000000010010, proc=Variable "proc" is not available.
) at clnt_tcp.c:293
#9 0x2000000000078060 in authgss_refresh (auth=0x6000000000023ae0) at auth_gss.c:516
#10 0x2000000000078940 in authgss_create (clnt=0x6000000000010010, name=0x60000000000234e0,
sec=0x60000000000016d8) at auth_gss.c:220
#11 0x2000000000078cc0 in authgss_create_default (clnt=0x6000000000010010,
service=0x4000000000000fc8 "nfs at lucy2_10g.frec.bull.fr", sec=0x60000000000016d0) at auth_gss.c:253
#12 0x4000000000000c10 in main () at t1.c:46
I cannot see the print-outs after authgss_create_default(), neither
"authgss_create_default() failed\n" nor "authgss_create_default() done\n".
Thanks,
Zoltan
More information about the NFSv4
mailing list