s3: For read-only shares, filter out write bits from conn->access_mask
authorVolker Lendecke <vl@samba.org>
Wed, 26 Sep 2012 22:26:35 +0000 (15:26 -0700)
committerKarolin Seeger <kseeger@samba.org>
Fri, 28 Sep 2012 07:23:07 +0000 (09:23 +0200)
Signed-off-by: Jeremy Allison <jra@samba.org>
(cherry picked from commit 54e5590cc1267e9c886bc9abd37d8a8eb33cf3f6)

The last 2 patches address bug #9217 - CreateFile with FILE_DIRECTORY_FILE can
create directories on read-only shares.

source3/smbd/service.c

index b2d3d4ddc1642b5d29dda97b243d0d8307951994..b74192cec873833ceb29f82df03becbbbf12f4e9 100644 (file)
@@ -524,6 +524,13 @@ static void create_share_access_mask(connection_struct *conn, int snum)
                        MAXIMUM_ALLOWED_ACCESS,
                        &conn->share_access);
 
+       if (!CAN_WRITE(conn)) {
+               conn->share_access &=
+                       ~(SEC_FILE_WRITE_DATA | SEC_FILE_APPEND_DATA |
+                         SEC_FILE_WRITE_EA | SEC_FILE_WRITE_ATTRIBUTE |
+                         SEC_DIR_DELETE_CHILD );
+       }
+
        if (security_token_has_privilege(token, SEC_PRIV_SECURITY)) {
                conn->share_access |= SEC_FLAG_SYSTEM_SECURITY;
        }