diff -uNr samba-3.0.5.org/source/smbd/uid.c samba-3.0.5/source/smbd/uid.c --- samba-3.0.5.org/source/smbd/uid.c Fri Jul 23 11:08:55 2004 +++ samba-3.0.5/source/smbd/uid.c Mon Jul 26 10:38:21 2004 @@ -190,11 +190,22 @@ snum = SNUM(conn); if (conn->force_user) /* security = share sets this too */ { + user_struct tmpuser; uid = conn->uid; gid = conn->gid; current_user.groups = conn->groups; current_user.ngroups = conn->ngroups; token = conn->nt_user_token; + + /* + * when security = share, Samba should checks for write list and + * read list parameters for this particular user. + */ + + fstrcpy(tmpuser.user.unix_name, conn->user); + tmpuser.groups = conn->groups; + tmpuser.n_groups = conn->ngroups; + conn->read_only = is_share_read_only_for_user(conn, &tmpuser); } else if ((vuser) && check_user_ok(conn, vuser, snum)) { uid = conn->admin_user ? 0 : vuser->uid; gid = vuser->gid;