tracking user logins

Alen Kovac alen at pharma.hr
Tue Nov 26 09:38:00 GMT 2002


Hello!

I'm running samba as PDC. I want to disable concurrent logins for
users. (not to be able to login from more than one workstation at the
same time) I haven't figured out how to disable this so I dig in to
the samba sources.

I found that _net_sam_logon() is the place where I could check if
users is logged in and in that case don't allow him to login.

rpc_server/srv_netlog_nt.c: _net_sam_logon()

  init_net_user_info3(p->mem_ctx, usr_info, sampass,
                            0, /* logon_count */
                            0, /* bad_pw_count */
                            num_gids,    /* uint32 num_groups */
                            gids    , /* DOM_GID *gids */
                            0x20    , /* uint32 user_flgs (?) */
                            NULL, /* char sess_key[16] */
                            my_name     , /* char *logon_srv */
                            my_workgroup, /* char *logon_dom */
                            &global_sam_sid,     /* DOM_SID *dom_sid */
                            NULL); /* char *other_sids */

   DEBUG(2, ("_net_sam_logon: [%s]", nt_username));

   if (_is_user_logged_in(nt_username)) {
      DEBUG(2, ("mydebug: Concurrent logins not allowed [%s]", 
                  nt_username));
     pdb_free_sam(sampass);
     return NT_STATUS_ACCOUNT_DISABLED;
   } else {
     _add_user_to_logged_in_list(nt_username);
   }
        
I have the following problems; don't know where could I remove user
from list when he logs out. _net_sam_logoff() isn't called, and second I
would like to remove need for my list for tracking users if samba
already do this.

So I would really need some pointers where to implement this check?

Thanks in advance!

  -- Alen Kovac




More information about the samba-technical mailing list