r14432: Give in and grant BUILT\Administrators all privileges
authorGerald Carter <jerry@samba.org>
Wed, 15 Mar 2006 05:50:52 +0000 (05:50 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 16:15:30 +0000 (11:15 -0500)
(This used to be commit b6170910604dba6533b727de8d7f0cc75256d14f)

source3/lib/account_pol.c
source3/lib/privileges.c

index 75a1d62ee795f260b7e2635d33ae8b726fa16a43..0694b1c3f880fe17f8837a720bb0e14bb31fd8a3 100644 (file)
@@ -288,12 +288,17 @@ BOOL init_account_policy(void)
        /* These exist by default on NT4 in [HKLM\SECURITY\Policy\Accounts] */
 
        privilege_create_account( &global_sid_World );
-       privilege_create_account( &global_sid_Builtin_Administrators );
        privilege_create_account( &global_sid_Builtin_Account_Operators );
        privilege_create_account( &global_sid_Builtin_Server_Operators );
        privilege_create_account( &global_sid_Builtin_Print_Operators );
        privilege_create_account( &global_sid_Builtin_Backup_Operators );
 
+       /* BUILTIN\Administrators get everything -- *always* */
+
+       if ( !grant_all_privileges( &global_sid_Builtin_Administrators ) ) {
+               DEBUG(0,("init_account_policy: Failed to grant privileges to BUILTIN\\Administrators!\n"));
+       }
+
        return True;
 }
 
index ee69613df0e293815d0bfbfb80e93dcec0dcef86..d77d7857d72e71831945221052de6aa6e57ce107 100644 (file)
@@ -867,9 +867,27 @@ BOOL privilege_set_to_se_priv( SE_PRIV *mask, PRIVILEGE_SET *privset )
 /*******************************************************************
 *******************************************************************/
 
-BOOL is_privileged_sid( DOM_SID *sid )
+BOOL is_privileged_sid( const DOM_SID *sid )
 {
        SE_PRIV mask;
        
        return get_privileges( sid, &mask );
 }
+
+/*******************************************************************
+*******************************************************************/
+
+BOOL grant_all_privileges( const DOM_SID *sid )
+{
+       int i;
+       SE_PRIV mask;
+       uint32 num_privs = count_all_privileges();
+
+       se_priv_copy( &mask, &se_priv_none );
+       
+       for ( i=0; i<num_privs; i++ ) {
+               se_priv_add(&mask, &privs[i].se_priv); 
+       }
+
+       return grant_privilege( sid, &mask );
+}