diff options
author | Bo Yang <boyang@samba.org> | 2009-07-15 15:34:10 +0800 |
---|---|---|
committer | Bo Yang <boyang@samba.org> | 2009-07-15 17:05:45 +0800 |
commit | 9ef6af73b319048fc6f3891573f0e10066dffee6 (patch) | |
tree | 078f7f4bc24089939e1b473fb5f3932f33db1a73 /source3/include | |
parent | 99c7ee3c9145b6187113ff29500b55a32320a9bc (diff) | |
download | samba-9ef6af73b319048fc6f3891573f0e10066dffee6.tar.gz samba-9ef6af73b319048fc6f3891573f0e10066dffee6.tar.bz2 samba-9ef6af73b319048fc6f3891573f0e10066dffee6.zip |
s3: Make smbd aware of permission change of usershare. Since usershare are relatively volatile and non-previledge users must disconnect from smbd and reconnect to it to make share permission in effect.
Diffstat (limited to 'source3/include')
-rw-r--r-- | source3/include/proto.h | 7 | ||||
-rw-r--r-- | source3/include/smb.h | 6 |
2 files changed, 12 insertions, 1 deletions
diff --git a/source3/include/proto.h b/source3/include/proto.h index 0dd1e98c86..d141de44cf 100644 --- a/source3/include/proto.h +++ b/source3/include/proto.h @@ -4296,6 +4296,7 @@ enum usershare_err parse_usershare_file(TALLOC_CTX *ctx, char **pp_comment, SEC_DESC **ppsd, bool *pallow_guest); +bool am_usershare(int iService); int load_usershare_service(const char *servicename); int load_usershare_shares(void); void gfree_loadparm(void); @@ -7063,7 +7064,8 @@ void reply_transs2(struct smb_request *req); bool change_to_guest(void); void conn_clear_vuid_cache(connection_struct *conn, uint16_t vuid); -bool change_to_user(connection_struct *conn, uint16 vuid); +bool change_to_user_force_recheck(connection_struct *conn, uint16 vuid, + bool recheck, NTSTATUS *pstatus); bool change_to_root_user(void); bool become_authenticated_pipe_user(pipes_struct *p); bool unbecome_authenticated_pipe_user(void); @@ -7072,6 +7074,9 @@ void unbecome_root(void); bool become_user(connection_struct *conn, uint16 vuid); bool unbecome_user(void); +#define change_to_user(conn, vuid) \ + change_to_user_force_recheck(conn, vuid, 0, NULL) + /* The following definitions come from smbd/utmp.c */ void sys_utmp_claim(const char *username, const char *hostname, diff --git a/source3/include/smb.h b/source3/include/smb.h index 2e9cf1b54a..44216f856a 100644 --- a/source3/include/smb.h +++ b/source3/include/smb.h @@ -550,6 +550,7 @@ typedef struct connection_struct { unsigned cnum; /* an index passed over the wire */ struct share_params *params; bool force_user; + bool force_recheck_perm; struct vuid_cache vuid_cache; struct dptr_struct *dirptr; bool printer; @@ -1398,6 +1399,11 @@ struct bitmap { #define FILE_NOTIFY_CHANGE_STREAM_NAME 0x00000200 #define FILE_NOTIFY_CHANGE_STREAM_SIZE 0x00000400 #define FILE_NOTIFY_CHANGE_STREAM_WRITE 0x00000800 +#define FILE_NOTIFY_CHANGE_FILE_CONTENT \ + (FILE_NOTIFY_CHANGE_FILE_NAME | FILE_NOTIFY_CHANGE_DIR_NAME \ + | FILE_NOTIFY_CHANGE_ATTRIBUTES | FILE_NOTIFY_CHANGE_SIZE \ + | FILE_NOTIFY_CHANGE_CREATION | FILE_NOTIFY_CHANGE_EA \ + | FILE_NOTIFY_CHANGE_SECURITY) #define FILE_NOTIFY_CHANGE_NAME \ (FILE_NOTIFY_CHANGE_FILE_NAME|FILE_NOTIFY_CHANGE_DIR_NAME) |