question regarding lprm/session_tag

Andrew Park apark at
Wed Jan 26 16:42:24 GMT 2000


We have a samba server (2.0.5a) that serves about 100 NT stations.  It is our
master browser, domain controller, file server, and print server.  All are
fine and dandy, but when trying to delete print jobs it runs into trouble.
I've been looking at the source code and observing the behaviour of samba
process and found out that when executing lprm the UID changes to nobody.
This is not good since print jobs are submitted as authenticated user.  From
what I can tell it opens the connection to the printer as nobody.  Only place
I can find possible UID switch is in process.c 

	if (session_tag != last_session_tag) {
          user_struct *vuser = NULL;
          last_session_tag = session_tag;
          if(session_tag != UID_FIELD_INVALID)
            vuser = get_valid_user_struct(session_tag);
          if(vuser != NULL)
            pstrcpy( sesssetup_user, vuser->requested_name);

or further down the code

	if ((flags & AS_USER) && !become_user(conn,session_tag)) {
          if (flags & AS_GUEST)
            flags &= ~AS_USER;

I see the first case more likely.  But I'm having trouble understanding
the concept behind session_tag, since each client gets assigned its own copy
of smbd process.  Could anyone help or explain?

Andrew Park
CDFlab Systems Administrator                 |

More information about the samba-technical mailing list