summaryrefslogtreecommitdiff
path: root/source3/include
diff options
context:
space:
mode:
authorBo Yang <boyang@samba.org>2009-07-15 15:34:10 +0800
committerBo Yang <boyang@samba.org>2009-07-15 17:05:45 +0800
commit9ef6af73b319048fc6f3891573f0e10066dffee6 (patch)
tree078f7f4bc24089939e1b473fb5f3932f33db1a73 /source3/include
parent99c7ee3c9145b6187113ff29500b55a32320a9bc (diff)
downloadsamba-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.h7
-rw-r--r--source3/include/smb.h6
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)