1
0
mirror of https://github.com/samba-team/samba.git synced 2025-08-02 00:22:11 +03:00

s4:provision: don't use hardcoded values for 'nextRid' and 'rIDAvailablePool'

On Windows dcpromo imports nextRid from the local SAM,
which means it's not hardcoded to 1000.

The initlal rIDAvailablePool starts at nextRid + 100.

I also found that the RID Set of the local dc
should be created via provision and not at runtime,
when the first rid is needed.
(Tested with dcpromo on w2k8r2, while disabling the DNS
 check box).

After provision we should have this (assuming nextRid=1000):

rIDAllocationPool: 1100-1599
rIDPrevAllocationPool: 1100-1599
rIDUsedPool: 0
rIDNextRID: 1100

rIDAvailablePool: 1600-1073741823

Because provision sets rIDNextRid=1100, the first created account
(typically DNS related accounts) will get 1101 as rid!

metze
This commit is contained in:
Stefan Metzmacher
2010-06-25 11:11:56 +02:00
parent 89f94a43d8
commit 712a149802
5 changed files with 24 additions and 6 deletions

View File

@ -868,7 +868,7 @@ def setup_samdb_rootdse(samdb, setup_path, names):
def setup_self_join(samdb, names, def setup_self_join(samdb, names,
machinepass, dnspass, machinepass, dnspass,
domainsid, invocationid, setup_path, domainsid, next_rid, invocationid, setup_path,
policyguid, policyguid_dc, domainControllerFunctionality, policyguid, policyguid_dc, domainControllerFunctionality,
ntdsguid): ntdsguid):
"""Join a host to its own domain.""" """Join a host to its own domain."""
@ -890,6 +890,7 @@ def setup_self_join(samdb, names,
"REALM": names.realm, "REALM": names.realm,
"DOMAIN": names.domain, "DOMAIN": names.domain,
"DOMAINSID": str(domainsid), "DOMAINSID": str(domainsid),
"DCRID": str(next_rid),
"DNSDOMAIN": names.dnsdomain, "DNSDOMAIN": names.dnsdomain,
"SAMBA_VERSION_STRING": version, "SAMBA_VERSION_STRING": version,
"NTDSGUID": ntdsguid_line, "NTDSGUID": ntdsguid_line,
@ -920,6 +921,8 @@ def setup_self_join(samdb, names,
"NETBIOSNAME": names.netbiosname, "NETBIOSNAME": names.netbiosname,
"NTDSGUID": names.ntdsguid, "NTDSGUID": names.ntdsguid,
"DNSPASS_B64": b64encode(dnspass), "DNSPASS_B64": b64encode(dnspass),
"RIDALLOCATIONSTART": str(next_rid + 100),
"RIDALLOCATIONEND": str(next_rid + 100 + 499),
}) })
def getpolicypath(sysvolpath, dnsdomain, guid): def getpolicypath(sysvolpath, dnsdomain, guid):
@ -947,7 +950,8 @@ def setup_gpo(sysvolpath, dnsdomain, policyguid, policyguid_dc):
def setup_samdb(path, setup_path, session_info, provision_backend, lp, names, def setup_samdb(path, setup_path, session_info, provision_backend, lp, names,
logger, domainsid, domainguid, policyguid, policyguid_dc, fill, logger, domainsid, domainguid, policyguid, policyguid_dc, fill,
adminpass, krbtgtpass, machinepass, invocationid, dnspass, ntdsguid, adminpass, krbtgtpass, machinepass, invocationid, dnspass, ntdsguid,
serverrole, am_rodc=False, dom_for_fun_level=None, schema=None): serverrole, am_rodc=False, dom_for_fun_level=None, schema=None,
next_rid=1000):
"""Setup a complete SAM Database. """Setup a complete SAM Database.
:note: This will wipe the main SAM database file! :note: This will wipe the main SAM database file!
@ -1027,6 +1031,7 @@ def setup_samdb(path, setup_path, session_info, provision_backend, lp, names,
setup_modify_ldif(samdb, setup_path("provision_basedn_modify.ldif"), { setup_modify_ldif(samdb, setup_path("provision_basedn_modify.ldif"), {
"CREATTIME": str(int(time.time() * 1e7)), # seconds -> ticks "CREATTIME": str(int(time.time() * 1e7)), # seconds -> ticks
"DOMAINSID": str(domainsid), "DOMAINSID": str(domainsid),
"NEXTRID": str(next_rid),
"SCHEMADN": names.schemadn, "SCHEMADN": names.schemadn,
"NETBIOSNAME": names.netbiosname, "NETBIOSNAME": names.netbiosname,
"DEFAULTSITE": names.sitename, "DEFAULTSITE": names.sitename,
@ -1109,6 +1114,7 @@ def setup_samdb(path, setup_path, session_info, provision_backend, lp, names,
"DEFAULTSITE": names.sitename, "DEFAULTSITE": names.sitename,
"CONFIGDN": names.configdn, "CONFIGDN": names.configdn,
"SERVERDN": names.serverdn, "SERVERDN": names.serverdn,
"RIDAVAILABLESTART": str(next_rid + 600),
"POLICYGUID_DC": policyguid_dc "POLICYGUID_DC": policyguid_dc
}) })
@ -1132,7 +1138,9 @@ def setup_samdb(path, setup_path, session_info, provision_backend, lp, names,
setup_self_join(samdb, names=names, invocationid=invocationid, setup_self_join(samdb, names=names, invocationid=invocationid,
dnspass=dnspass, dnspass=dnspass,
machinepass=machinepass, machinepass=machinepass,
domainsid=domainsid, policyguid=policyguid, domainsid=domainsid,
next_rid=next_rid,
policyguid=policyguid,
policyguid_dc=policyguid_dc, policyguid_dc=policyguid_dc,
setup_path=setup_path, setup_path=setup_path,
domainControllerFunctionality=domainControllerFunctionality, domainControllerFunctionality=domainControllerFunctionality,

View File

@ -809,7 +809,7 @@ dn: CN=RID Manager$,CN=System,${DOMAINDN}
objectClass: top objectClass: top
objectClass: rIDManager objectClass: rIDManager
systemFlags: -1946157056 systemFlags: -1946157056
rIDAvailablePool: 1001-1073741823 rIDAvailablePool: ${RIDAVAILABLESTART}-1073741823
isCriticalSystemObject: TRUE isCriticalSystemObject: TRUE
dn: CN=RpcServices,CN=System,${DOMAINDN} dn: CN=RpcServices,CN=System,${DOMAINDN}

View File

@ -68,7 +68,7 @@ replace: msDS-PerUserTrustTombstonesQuota
msDS-PerUserTrustTombstonesQuota: 10 msDS-PerUserTrustTombstonesQuota: 10
- -
replace: nextRid replace: nextRid
nextRid: 1000 nextRid: ${NEXTRID}
- -
replace: nTMixedDomain replace: nTMixedDomain
nTMixedDomain: 0 nTMixedDomain: 0

View File

@ -32,7 +32,7 @@ servicePrincipalName: ldap/${DNSNAME}
servicePrincipalName: ldap/${DNSNAME}/${REALM} servicePrincipalName: ldap/${DNSNAME}/${REALM}
userAccountControl: 532480 userAccountControl: 532480
userPassword:: ${MACHINEPASS_B64} userPassword:: ${MACHINEPASS_B64}
objectSID: ${DOMAINSID}-1000 objectSID: ${DOMAINSID}-${DCRID}
# Here are missing the objects for the NTFRS subscription since we don't # Here are missing the objects for the NTFRS subscription since we don't
# support this technique yet. # support this technique yet.

View File

@ -28,11 +28,21 @@ changetype: modify
replace: interSiteTopologyGenerator replace: interSiteTopologyGenerator
interSiteTopologyGenerator: CN=NTDS Settings,${SERVERDN} interSiteTopologyGenerator: CN=NTDS Settings,${SERVERDN}
dn: CN=RID Set,CN=${NETBIOSNAME},OU=Domain Controllers,${DOMAINDN}
changetype: add
objectClass: rIDSet
rIDAllocationPool: ${RIDALLOCATIONSTART}-${RIDALLOCATIONEND}
rIDPreviousAllocationPool: ${RIDALLOCATIONSTART}-${RIDALLOCATIONEND}
rIDUsedPool: 0
rIDNextRID: ${RIDALLOCATIONSTART}
dn: CN=${NETBIOSNAME},OU=Domain Controllers,${DOMAINDN} dn: CN=${NETBIOSNAME},OU=Domain Controllers,${DOMAINDN}
changetype: modify changetype: modify
add: servicePrincipalName add: servicePrincipalName
servicePrincipalName: E3514235-4B06-11D1-AB04-00C04FC2DCD2/${NTDSGUID}/${DNSDOMAIN} servicePrincipalName: E3514235-4B06-11D1-AB04-00C04FC2DCD2/${NTDSGUID}/${DNSDOMAIN}
servicePrincipalName: ldap/${NTDSGUID}._msdcs.${DNSDOMAIN} servicePrincipalName: ldap/${NTDSGUID}._msdcs.${DNSDOMAIN}
add: rIDSetReferences
rIDSetReferences: CN=RID Set,CN=${NETBIOSNAME},OU=Domain Controllers,${DOMAINDN}
# NOTE: This account is SAMBA4 specific! # NOTE: This account is SAMBA4 specific!
dn: CN=dns,CN=Users,${DOMAINDN} dn: CN=dns,CN=Users,${DOMAINDN}