diff -r -u samba-2.0.6/source/include/proto.h samba-2.0.6-mod/source/include/proto.h --- samba-2.0.6/source/include/proto.h Thu Nov 11 13:06:01 1999 +++ samba-2.0.6-mod/source/include/proto.h Fri Nov 12 17:40:52 1999 @@ -1145,6 +1145,7 @@ char *lp_veto_files(int ); char *lp_hide_files(int ); char *lp_veto_oplocks(int ); +char *lp_veto_exempt(int ); char *lp_driverlocation(int ); BOOL lp_preexec_close(int ); BOOL lp_rootpreexec_close(int ); diff -r -u samba-2.0.6/source/include/smb.h samba-2.0.6-mod/source/include/smb.h --- samba-2.0.6/source/include/smb.h Thu Nov 11 13:06:01 1999 +++ samba-2.0.6-mod/source/include/smb.h Fri Nov 12 17:41:54 1999 @@ -573,6 +573,7 @@ BOOL ipc; BOOL read_only; BOOL admin_user; + BOOL veto_exempt; char *dirpath; char *connectpath; char *origpath; @@ -926,7 +927,7 @@ #define MAP_SYSTEM(conn) ((conn) && lp_map_system((conn)->service)) #define MAP_ARCHIVE(conn) ((conn) && lp_map_archive((conn)->service)) #define IS_HIDDEN_PATH(conn,path) ((conn) && is_in_path((path),(conn)->hide_list)) -#define IS_VETO_PATH(conn,path) ((conn) && is_in_path((path),(conn)->veto_list)) +#define IS_VETO_PATH(conn,path) ((conn) && is_in_path((path),(conn)->veto_list) && (!conn->veto_exempt)) #define IS_VETO_OPLOCK_PATH(conn,path) ((conn) && is_in_path((path),(conn)->veto_oplock_list)) /* diff -r -u samba-2.0.6/source/param/loadparm.c samba-2.0.6-mod/source/param/loadparm.c --- samba-2.0.6/source/param/loadparm.c Thu Nov 11 13:06:05 1999 +++ samba-2.0.6-mod/source/param/loadparm.c Fri Nov 12 17:43:54 1999 @@ -288,6 +288,7 @@ char *szVetoFiles; char *szHideFiles; char *szVetoOplockFiles; + char *szVetoExempt; char *comment; char *force_user; char *force_group; @@ -389,6 +390,7 @@ NULL, /* szVetoFiles */ NULL, /* szHideFiles */ NULL, /* szVetoOplockFiles */ + NULL, /* szVetoExempt */ NULL, /* comment */ NULL, /* force user */ NULL, /* force group */ @@ -717,6 +719,7 @@ {"veto files", P_STRING, P_LOCAL, &sDefault.szVetoFiles, NULL, NULL, FLAG_SHARE|FLAG_GLOBAL|FLAG_DOS_STRING}, {"hide files", P_STRING, P_LOCAL, &sDefault.szHideFiles, NULL, NULL, FLAG_SHARE|FLAG_GLOBAL|FLAG_DOS_STRING}, {"veto oplock files",P_STRING, P_LOCAL, &sDefault.szVetoOplockFiles,NULL, NULL, FLAG_SHARE|FLAG_GLOBAL|FLAG_DOS_STRING}, + {"veto exempt", P_STRING, P_LOCAL, &sDefault.szVetoExempt, NULL, NULL, FLAG_SHARE|FLAG_GLOBAL}, {"map system", P_BOOL, P_LOCAL, &sDefault.bMap_system, NULL, NULL, FLAG_SHARE|FLAG_GLOBAL}, {"map hidden", P_BOOL, P_LOCAL, &sDefault.bMap_hidden, NULL, NULL, FLAG_SHARE|FLAG_GLOBAL}, {"map archive", P_BOOL, P_LOCAL, &sDefault.bMap_archive, NULL, NULL, FLAG_SHARE|FLAG_GLOBAL}, @@ -1340,6 +1343,7 @@ FN_LOCAL_STRING(lp_veto_files,szVetoFiles) FN_LOCAL_STRING(lp_hide_files,szHideFiles) FN_LOCAL_STRING(lp_veto_oplocks,szVetoOplockFiles) +FN_LOCAL_STRING(lp_veto_exempt,szVetoExempt) FN_LOCAL_STRING(lp_driverlocation,szPrinterDriverLocation) FN_LOCAL_BOOL(lp_preexec_close,bPreexecClose) diff -r -u samba-2.0.6/source/smbd/service.c samba-2.0.6-mod/source/smbd/service.c --- samba-2.0.6/source/smbd/service.c Thu Nov 11 13:06:11 1999 +++ samba-2.0.6-mod/source/smbd/service.c Fri Nov 12 17:45:24 1999 @@ -322,7 +322,13 @@ } else { conn->admin_user = False; } - + + /* veto exempt check */ + if (user_in_list(user,lp_veto_exempt(snum))) + conn->veto_exempt = True; + else + conn->veto_exempt = False; + conn->force_user = force; conn->vuid = vuid; conn->uid = pass->pw_uid;