Remove the unix token info from connection_struct
authorVolker Lendecke <vl@samba.org>
Thu, 8 May 2008 13:53:55 +0000 (15:53 +0200)
committerVolker Lendecke <vl@samba.org>
Sat, 10 May 2008 09:17:01 +0000 (11:17 +0200)
(This used to be commit 2834dacc8d49f77fe55fb5d7e3eb2dda431d1d3d)

source3/include/smb.h
source3/lib/substitute.c
source3/modules/vfs_expand_msdfs.c
source3/modules/vfs_full_audit.c
source3/modules/vfs_recycle.c
source3/smbd/connection.c
source3/smbd/lanman.c
source3/smbd/service.c
source3/smbd/uid.c

index e1f17a178a706d8e52165a8a167e536dffc747b0..5248fd2725b8be6bb5354d647a2fc907e47830e6 100644 (file)
@@ -627,18 +627,10 @@ typedef struct connection_struct {
        struct auth_serversupplied_info *server_info;
 
        char *user; /* name of user who *opened* this connection */
-       uid_t uid; /* uid of user who *opened* this connection */
-       gid_t gid; /* gid of user who *opened* this connection */
        char client_address[INET6_ADDRSTRLEN]; /* String version of client IP address. */
 
        uint16 vuid; /* vuid of user who *opened* this connection, or UID_FIELD_INVALID */
 
-       /* following groups stuff added by ih */
-
-       /* This groups info is valid for the user that *opened* the connection */
-       size_t ngroups;
-       gid_t *groups;
-       
        time_t lastused;
        time_t lastused_count;
        bool used;
index c8ad6199e8bc84e64915fb3113bf2ccfb22e1b75..5be5af663760628c4c2b84d73a863ec396e9faf5 100644 (file)
@@ -907,7 +907,7 @@ char *standard_sub_conn(TALLOC_CTX *ctx, connection_struct *conn, const char *st
                                lp_servicename(SNUM(conn)),
                                conn->user,
                                conn->connectpath,
-                               conn->gid,
+                               conn->server_info->gid,
                                get_smb_user_name(),
                                "",
                                str);
index 9d4883c08544c78d3fecc77f56e9ff925807ed39..62222c48ffbd1d265810527257a5fe1c24e1a115 100644 (file)
@@ -147,7 +147,7 @@ static char *expand_msdfs_target(TALLOC_CTX *ctx,
                                lp_servicename(SNUM(conn)),
                                conn->user,
                                conn->connectpath,
-                               conn->gid,
+                               conn->server_info->gid,
                                get_current_username(),
                                current_user_info.domain,
                                targethost);
index 19a1d02de47996e8821e5aab30b15a6489e57028..1b44e02375b0b40ec8c4f6f074c7447c7613a7b9 100644 (file)
@@ -694,7 +694,8 @@ static char *audit_prefix(TALLOC_CTX *ctx, connection_struct *conn)
        }
        return talloc_sub_advanced(ctx,
                        lp_servicename(SNUM(conn)), conn->user,
-                       conn->connectpath, conn->gid,
+                       conn->connectpath,
+                       conn->server_info->gid,
                        get_current_username(),
                        current_user_info.domain,
                        prefix);
index da1716719ae5a9d09ec1d08e0e0db9a49c1e5ae0..27700367e640b58d81067e16448afc023f9ae7b9 100644 (file)
@@ -433,7 +433,8 @@ static int recycle_unlink(vfs_handle_struct *handle, const char *file_name)
 
        repository = talloc_sub_advanced(NULL, lp_servicename(SNUM(conn)),
                                        conn->user,
-                                       conn->connectpath, conn->gid,
+                                       conn->connectpath,
+                                       conn->server_info->gid,
                                        get_current_username(),
                                        current_user_info.domain,
                                        recycle_repository(handle));
index d7063c99894bcfd948d5c48d3162feea5b0c35a5..97f36971c863eef1d59d3de85991b7658619236d 100644 (file)
@@ -152,8 +152,8 @@ bool claim_connection(connection_struct *conn, const char *name,
        crec.pid = procid_self();
        crec.cnum = conn?conn->cnum:-1;
        if (conn) {
-               crec.uid = conn->uid;
-               crec.gid = conn->gid;
+               crec.uid = conn->server_info->uid;
+               crec.gid = conn->server_info->gid;
                strlcpy(crec.servicename, lp_servicename(SNUM(conn)),
                        sizeof(crec.servicename));
        }
index a2338934822e782ad9c6ff033a7819ca1e788464..4309622b26396e47da8c68de729ebaf3a2c61cd5 100644 (file)
@@ -103,7 +103,7 @@ static int CopyExpanded(connection_struct *conn,
                                lp_servicename(SNUM(conn)),
                                conn->user,
                                conn->connectpath,
-                               conn->gid,
+                               conn->server_info->gid,
                                get_current_username(),
                                current_user_info.domain,
                                buf);
@@ -154,7 +154,7 @@ static int StrlenExpanded(connection_struct *conn, int snum, char *s)
                                lp_servicename(SNUM(conn)),
                                conn->user,
                                conn->connectpath,
-                               conn->gid,
+                               conn->server_info->gid,
                                get_current_username(),
                                current_user_info.domain,
                                buf);
@@ -184,7 +184,7 @@ static char *Expand(connection_struct *conn, int snum, char *s)
                                lp_servicename(SNUM(conn)),
                                conn->user,
                                conn->connectpath,
-                               conn->gid,
+                               conn->server_info->gid,
                                get_current_username(),
                                current_user_info.domain,
                                buf);
@@ -3002,7 +3002,7 @@ static bool api_RNetServerGetInfo(connection_struct *conn,uint16 vuid,
                                                lp_servicename(SNUM(conn)),
                                                conn->user,
                                                conn->connectpath,
-                                               conn->gid,
+                                               conn->server_info->gid,
                                                get_current_username(),
                                                current_user_info.domain,
                                                comment);
index 77ed320e079a77d6d151920ad7599316a3fbff89..fd072135e8c31e9f00b97984c8abb404b8b25ed1 100644 (file)
@@ -833,14 +833,13 @@ static connection_struct *make_connection_snum(int snum, user_struct *vuser,
 
        conn->vuid = (vuser != NULL) ? vuser->vuid : UID_FIELD_INVALID;
 
-       conn->uid = conn->server_info->uid;
-       conn->gid = conn->server_info->gid;
        string_set(&conn->user, conn->server_info->unix_name);
 
        {
                char *s = talloc_sub_advanced(talloc_tos(),
                                        lp_servicename(SNUM(conn)), conn->user,
-                                       conn->connectpath, conn->gid,
+                                       conn->connectpath,
+                                       conn->server_info->gid,
                                        get_current_username(),
                                        current_user_info.domain,
                                        lp_pathname(snum));
@@ -960,7 +959,8 @@ static connection_struct *make_connection_snum(int snum, user_struct *vuser,
        if (*lp_rootpreexec(snum)) {
                char *cmd = talloc_sub_advanced(talloc_tos(),
                                        lp_servicename(SNUM(conn)), conn->user,
-                                       conn->connectpath, conn->gid,
+                                       conn->connectpath,
+                                       conn->server_info->gid,
                                        get_current_username(),
                                        current_user_info.domain,
                                        lp_rootpreexec(snum));
@@ -997,7 +997,8 @@ static connection_struct *make_connection_snum(int snum, user_struct *vuser,
        if (*lp_preexec(snum)) {
                char *cmd = talloc_sub_advanced(talloc_tos(),
                                        lp_servicename(SNUM(conn)), conn->user,
-                                       conn->connectpath, conn->gid,
+                                       conn->connectpath,
+                                       conn->server_info->gid,
                                        get_current_username(),
                                        current_user_info.domain,
                                        lp_preexec(snum));
@@ -1316,7 +1317,8 @@ void close_cnum(connection_struct *conn, uint16 vuid)
            change_to_user(conn, vuid))  {
                char *cmd = talloc_sub_advanced(talloc_tos(),
                                        lp_servicename(SNUM(conn)), conn->user,
-                                       conn->connectpath, conn->gid,
+                                       conn->connectpath,
+                                       conn->server_info->gid,
                                        get_current_username(),
                                        current_user_info.domain,
                                        lp_postexec(SNUM(conn)));
@@ -1330,7 +1332,8 @@ void close_cnum(connection_struct *conn, uint16 vuid)
        if (*lp_rootpostexec(SNUM(conn)))  {
                char *cmd = talloc_sub_advanced(talloc_tos(),
                                        lp_servicename(SNUM(conn)), conn->user,
-                                       conn->connectpath, conn->gid,
+                                       conn->connectpath,
+                                       conn->server_info->gid,
                                        get_current_username(),
                                        current_user_info.domain,
                                        lp_rootpostexec(SNUM(conn)));
index 8a4a54f86725b4420902c70e4cd072628d840ba4..004e48a44f25188f916d63057e492ec8694d841e 100644 (file)
@@ -157,7 +157,7 @@ bool change_to_user(connection_struct *conn, uint16 vuid)
         */
 
        if((lp_security() == SEC_SHARE) && (current_user.conn == conn) &&
-          (current_user.ut.uid == conn->uid)) {
+          (current_user.ut.uid == conn->server_info->uid)) {
                DEBUG(4,("change_to_user: Skipping user change - already "
                         "user\n"));
                return(True);
@@ -186,10 +186,10 @@ bool change_to_user(connection_struct *conn, uint16 vuid)
         */
 
        if (conn->force_user) /* security = share sets this too */ {
-               uid = conn->uid;
-               gid = conn->gid;
-               group_list = conn->groups;
-               num_groups = conn->ngroups;
+               uid = conn->server_info->uid;
+               gid = conn->server_info->gid;
+               group_list = conn->server_info->groups;
+               num_groups = conn->server_info->n_groups;
        } else if (vuser) {
                uid = conn->admin_user ? 0 : vuser->server_info->uid;
                gid = conn->server_info->gid;
@@ -220,15 +220,15 @@ bool change_to_user(connection_struct *conn, uint16 vuid)
 
                        int i;
                        for (i = 0; i < num_groups; i++) {
-                               if (group_list[i] == conn->gid) {
-                                       gid = conn->gid;
+                               if (group_list[i] == conn->server_info->gid) {
+                                       gid = conn->server_info->gid;
                                        gid_to_sid(&conn->server_info->ptok
                                                   ->user_sids[1], gid);
                                        break;
                                }
                        }
                } else {
-                       gid = conn->gid;
+                       gid = conn->server_info->gid;
                        gid_to_sid(&conn->server_info->ptok->user_sids[1],
                                   gid);
                }