summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--librpc/idl/svcctl.idl47
-rw-r--r--source3/include/rpc_secdes.h70
-rw-r--r--source3/librpc/gen_ndr/svcctl.h8
3 files changed, 54 insertions, 71 deletions
diff --git a/librpc/idl/svcctl.idl b/librpc/idl/svcctl.idl
index 3eb686fe15..fa8e10988c 100644
--- a/librpc/idl/svcctl.idl
+++ b/librpc/idl/svcctl.idl
@@ -4,7 +4,7 @@
svcctl interface definitions
*/
-import "misc.idl";
+import "misc.idl", "security.idl";
[ uuid("367abb81-9844-35f1-ad32-98f038001003"),
version(2.0),
pointer_default(unique),
@@ -227,6 +227,9 @@ import "misc.idl";
/*****************/
/* Function 0x0f */
+
+ /* Service Control Manager Bits */
+
typedef [bitmap32bit] bitmap {
SC_RIGHT_MGR_CONNECT = 0x0001,
SC_RIGHT_MGR_CREATE_SERVICE = 0x0002,
@@ -236,6 +239,23 @@ import "misc.idl";
SC_RIGHT_MGR_MODIFY_BOOT_CONFIG = 0x0020
} svcctl_MgrAccessMask;
+ const int SC_MANAGER_READ_ACCESS =
+ (SEC_STD_READ_CONTROL |
+ SC_RIGHT_MGR_CONNECT |
+ SC_RIGHT_MGR_ENUMERATE_SERVICE |
+ SC_RIGHT_MGR_QUERY_LOCK_STATUS);
+
+ const int SC_MANAGER_EXECUTE_ACCESS = SC_MANAGER_READ_ACCESS;
+
+ const int SC_MANAGER_WRITE_ACCESS =
+ (SEC_STD_REQUIRED |
+ SC_MANAGER_READ_ACCESS |
+ SC_RIGHT_MGR_CREATE_SERVICE |
+ SC_RIGHT_MGR_LOCK |
+ SC_RIGHT_MGR_MODIFY_BOOT_CONFIG);
+
+ const int SC_MANAGER_ALL_ACCESS = SC_MANAGER_WRITE_ACCESS;
+
WERROR svcctl_OpenSCManagerW(
[in,unique] [string,charset(UTF16)] uint16 *MachineName,
[in,unique] [string,charset(UTF16)] uint16 *DatabaseName,
@@ -245,6 +265,9 @@ import "misc.idl";
/*****************/
/* Function 0x10 */
+
+ /* Service Object Bits */
+
typedef [bitmap32bit] bitmap {
SC_RIGHT_SVC_QUERY_CONFIG = 0x0001,
SC_RIGHT_SVC_CHANGE_CONFIG = 0x0002,
@@ -257,6 +280,28 @@ import "misc.idl";
SC_RIGHT_SVC_USER_DEFINED_CONTROL = 0x0100
} svcctl_ServiceAccessMask;
+ const int SERVICE_READ_ACCESS =
+ (SEC_STD_READ_CONTROL |
+ SC_RIGHT_SVC_ENUMERATE_DEPENDENTS |
+ SC_RIGHT_SVC_INTERROGATE |
+ SC_RIGHT_SVC_QUERY_CONFIG |
+ SC_RIGHT_SVC_QUERY_STATUS |
+ SC_RIGHT_SVC_USER_DEFINED_CONTROL);
+
+ const int SERVICE_EXECUTE_ACCESS =
+ (SERVICE_READ_ACCESS |
+ SC_RIGHT_SVC_START |
+ SC_RIGHT_SVC_STOP |
+ SC_RIGHT_SVC_PAUSE_CONTINUE);
+
+ const int SERVICE_WRITE_ACCESS =
+ (SEC_STD_REQUIRED |
+ SERVICE_READ_ACCESS |
+ SERVICE_EXECUTE_ACCESS |
+ SC_RIGHT_SVC_CHANGE_CONFIG);
+
+ const int SERVICE_ALL_ACCESS = SERVICE_WRITE_ACCESS;
+
WERROR svcctl_OpenServiceW(
[in,ref] policy_handle *scmanager_handle,
[in] [string,charset(UTF16)] uint16 ServiceName[],
diff --git a/source3/include/rpc_secdes.h b/source3/include/rpc_secdes.h
index 71fba41fe9..fb73498b0d 100644
--- a/source3/include/rpc_secdes.h
+++ b/source3/include/rpc_secdes.h
@@ -386,76 +386,6 @@ struct standard_mapping {
SA_RIGHT_ALIAS_LOOKUP_INFO ) /* 0x00020008 */
/*
- * Acces bits for the svcctl objects
- */
-
-/* Service Control Manager Bits */
-
-#if 0
-#define SC_RIGHT_MGR_CONNECT 0x0001
-#define SC_RIGHT_MGR_CREATE_SERVICE 0x0002
-#define SC_RIGHT_MGR_ENUMERATE_SERVICE 0x0004
-#define SC_RIGHT_MGR_LOCK 0x0008
-#define SC_RIGHT_MGR_QUERY_LOCK_STATUS 0x0010
-#define SC_RIGHT_MGR_MODIFY_BOOT_CONFIG 0x0020
-
-#endif
-
-#define SC_MANAGER_READ_ACCESS \
- ( STANDARD_RIGHTS_READ_ACCESS | \
- SC_RIGHT_MGR_CONNECT | \
- SC_RIGHT_MGR_ENUMERATE_SERVICE | \
- SC_RIGHT_MGR_QUERY_LOCK_STATUS )
-
-#define SC_MANAGER_EXECUTE_ACCESS SC_MANAGER_READ_ACCESS
-
-#define SC_MANAGER_WRITE_ACCESS \
- ( STANDARD_RIGHTS_REQUIRED_ACCESS | \
- SC_MANAGER_READ_ACCESS | \
- SC_RIGHT_MGR_CREATE_SERVICE | \
- SC_RIGHT_MGR_LOCK | \
- SC_RIGHT_MGR_MODIFY_BOOT_CONFIG )
-
-#define SC_MANAGER_ALL_ACCESS SC_MANAGER_WRITE_ACCESS
-
-/* Service Object Bits */
-
-#if 0
-#define SC_RIGHT_SVC_QUERY_CONFIG 0x0001
-#define SC_RIGHT_SVC_CHANGE_CONFIG 0x0002
-#define SC_RIGHT_SVC_QUERY_STATUS 0x0004
-#define SC_RIGHT_SVC_ENUMERATE_DEPENDENTS 0x0008
-#define SC_RIGHT_SVC_START 0x0010
-#define SC_RIGHT_SVC_STOP 0x0020
-#define SC_RIGHT_SVC_PAUSE_CONTINUE 0x0040
-#define SC_RIGHT_SVC_INTERROGATE 0x0080
-#define SC_RIGHT_SVC_USER_DEFINED_CONTROL 0x0100
-
-#endif
-
-#define SERVICE_READ_ACCESS \
- ( STANDARD_RIGHTS_READ_ACCESS | \
- SC_RIGHT_SVC_ENUMERATE_DEPENDENTS | \
- SC_RIGHT_SVC_INTERROGATE | \
- SC_RIGHT_SVC_QUERY_CONFIG | \
- SC_RIGHT_SVC_QUERY_STATUS | \
- SC_RIGHT_SVC_USER_DEFINED_CONTROL )
-
-#define SERVICE_EXECUTE_ACCESS \
- ( SERVICE_READ_ACCESS | \
- SC_RIGHT_SVC_START | \
- SC_RIGHT_SVC_STOP | \
- SC_RIGHT_SVC_PAUSE_CONTINUE )
-
-#define SERVICE_WRITE_ACCESS \
- ( STANDARD_RIGHTS_REQUIRED_ACCESS | \
- SERVICE_READ_ACCESS | \
- SERVICE_EXECUTE_ACCESS | \
- SC_RIGHT_SVC_CHANGE_CONFIG )
-
-#define SERVICE_ALL_ACCESS SERVICE_WRITE_ACCESS
-
-/*
* Access Bits for registry ACLS
*/
diff --git a/source3/librpc/gen_ndr/svcctl.h b/source3/librpc/gen_ndr/svcctl.h
index 42ed039784..5da69794d2 100644
--- a/source3/librpc/gen_ndr/svcctl.h
+++ b/source3/librpc/gen_ndr/svcctl.h
@@ -18,6 +18,14 @@
#define SERVICE_STATE_INACTIVE ( 0x02 )
#define SERVICE_STATE_ALL ( 0x03 )
#define SV_TYPE_ALL ( 0xFFFFFFFF )
+#define SC_MANAGER_READ_ACCESS ( (STANDARD_RIGHTS_READ_ACCESS|SC_RIGHT_MGR_CONNECT|SC_RIGHT_MGR_ENUMERATE_SERVICE|SC_RIGHT_MGR_QUERY_LOCK_STATUS) )
+#define SC_MANAGER_EXECUTE_ACCESS ( SC_MANAGER_READ_ACCESS )
+#define SC_MANAGER_WRITE_ACCESS ( (STANDARD_RIGHTS_REQUIRED_ACCESS|SC_MANAGER_READ_ACCESS|SC_RIGHT_MGR_CREATE_SERVICE|SC_RIGHT_MGR_LOCK|SC_RIGHT_MGR_MODIFY_BOOT_CONFIG) )
+#define SC_MANAGER_ALL_ACCESS ( SC_MANAGER_WRITE_ACCESS )
+#define SERVICE_READ_ACCESS ( (STANDARD_RIGHTS_READ_ACCESS|SC_RIGHT_SVC_ENUMERATE_DEPENDENTS|SC_RIGHT_SVC_INTERROGATE|SC_RIGHT_SVC_QUERY_CONFIG|SC_RIGHT_SVC_QUERY_STATUS|SC_RIGHT_SVC_USER_DEFINED_CONTROL) )
+#define SERVICE_EXECUTE_ACCESS ( (SERVICE_READ_ACCESS|SC_RIGHT_SVC_START|SC_RIGHT_SVC_STOP|SC_RIGHT_SVC_PAUSE_CONTINUE) )
+#define SERVICE_WRITE_ACCESS ( (STANDARD_RIGHTS_REQUIRED_ACCESS|SERVICE_READ_ACCESS|SERVICE_EXECUTE_ACCESS|SC_RIGHT_SVC_CHANGE_CONFIG) )
+#define SERVICE_ALL_ACCESS ( SERVICE_WRITE_ACCESS )
struct SERVICE_LOCK_STATUS {
uint32_t is_locked;
const char *lock_owner;/* [unique,charset(UTF16)] */