s4-provision: Provide YP/NIS subtree to allow ADUC to see and set rfc2307 attrs
authorGeza Gemes <geza@kzsdabas.hu>
Thu, 12 Jul 2012 14:05:04 +0000 (16:05 +0200)
committerAndrew Bartlett <abartlet@samba.org>
Fri, 13 Jul 2012 04:00:17 +0000 (06:00 +0200)
When provisioning with --use_rfc2307=yes populate the subtree:
CN=ypServ30,CN=RpcServices,CN=System,${DOMAINDN} This makes it
possible to manipulate the posix attributes via ADUC

(commit message adjusted by abartlet)

Signed-off-by: Andrew Bartlett <abartlet@samba.org>
source4/scripting/python/samba/provision/__init__.py
source4/setup/provision
source4/setup/ypServ30.ldif [new file with mode: 0644]

index d9d1ce9eab4c902eff3974e9600f95c4bd0c788e..192130ea1cd29f877c1f94d25de5aa174bda533d 100644 (file)
@@ -1590,6 +1590,27 @@ def sanitize_server_role(role):
     except KeyError:
         raise ValueError(role)
 
+def provision_fake_ypserver(logger, samdb, domaindn, netbiosname, nisdomain, maxuid, maxgid):
+    """Creates AD entries for the fake ypserver
+    needed for being able to manipulate posix attrs via ADUC
+    """
+    samdb.transaction_start()
+    try:
+        logger.info("Setting up fake yp server settings")
+        setup_add_ldif(samdb, setup_path("ypServ30.ldif"), {
+        "DOMAINDN": domaindn,
+        "NETBIOSNAME": netbiosname,
+        "NISDOMAIN": nisdomain,
+         })
+    except Exception:
+        samdb.transaction_cancel()
+        raise
+    else:
+        samdb.transaction_commit()
+    if maxuid != None:
+        pass
+    if maxgid != None:
+        pass
 
 def provision(logger, session_info, credentials, smbconf=None,
         targetdir=None, samdb_fill=FILL_FULL, realm=None, rootdn=None,
@@ -1605,7 +1626,7 @@ def provision(logger, session_info, credentials, smbconf=None,
         ol_mmr_urls=None, ol_olc=None, slapd_path="/bin/false",
         useeadb=False, am_rodc=False,
         lp=None, use_ntvfs=False,
-        use_rfc2307=False):
+        use_rfc2307=False, maxuid=None, maxgid=None):
     """Provision samba4
 
     :note: caution, this wipes all existing data!
@@ -1898,6 +1919,10 @@ def provision(logger, session_info, credentials, smbconf=None,
 
     result.backend_result = backend_result
 
+    if use_rfc2307:
+        provision_fake_ypserver(logger=logger, samdb=samdb, domaindn=names.domaindn, netbiosname=names.netbiosname,
+                                 nisdomain=(names.domain).lower(), maxuid=maxuid, maxgid=maxgid)
+
     return result
 
 
index 339b05e0381471acbb1a53bb8d14668a0a3da226..2df718e4ece122e011195cdb9aae4f62cc4468ac 100755 (executable)
@@ -124,6 +124,7 @@ parser.add_option("--ol-mmr-urls", type="string", metavar="LDAPSERVER",
                 help="List of LDAP-URLS [ ldap://<FQHN>:<PORT>/  (where <PORT> has to be different than 389!) ] separated with comma (\",\") for use with OpenLDAP-MMR (Multi-Master-Replication), e.g.: \"ldap://s4dc1:9000,ldap://s4dc2:9000\"")
 parser.add_option("--use-xattrs", type="choice", choices=["yes", "no", "auto"], help="Define if we should use the native fs capabilities or a tdb file for storing attributes likes ntacl, auto tries to make an inteligent guess based on the user rights and system capabilities", default="auto")
 parser.add_option("--use-ntvfs", action="store_true", help="Use NTVFS for the fileserver (default = no)")
+parser.add_option("--use-rfc2307", action="store_true", help="Use AD to store posix attributes (default = no)")
 
 opts = parser.parse_args()[0]
 
@@ -257,7 +258,8 @@ try:
           serverrole=opts.server_role, dom_for_fun_level=dom_for_fun_level,
           backend_type=opts.ldap_backend_type,
           ldapadminpass=opts.ldapadminpass, ol_mmr_urls=opts.ol_mmr_urls,
-          useeadb=eadb, next_rid=opts.next_rid, lp=lp, use_ntvfs=(opts.use_ntvfs))
+          useeadb=eadb, next_rid=opts.next_rid, lp=lp, use_ntvfs=(opts.use_ntvfs),
+          use_rfc2307=(opts.use_rfc2307))
 except ProvisioningError, e:
     print str(e)
     sys.exit(1)
diff --git a/source4/setup/ypServ30.ldif b/source4/setup/ypServ30.ldif
new file mode 100644 (file)
index 0000000..6103266
--- /dev/null
@@ -0,0 +1,507 @@
+dn: CN=ypServ30,CN=RpcServices,CN=System,${DOMAINDN}
+objectClass: top
+objectClass: container
+schemaVersion: 40
+
+dn: CN=mail,CN=ypServ30,CN=RpcServices,CN=System,${DOMAINDN}
+objectClass: top
+objectClass: container
+
+dn: CN=byaddr,CN=mail,CN=ypServ30,CN=RpcServices,CN=System,${DOMAINDN}
+objectClass: top
+objectClass: msSFU30NISMapConfig
+msSFU30KeyAttributes: msSFU30Aliases
+msSFU30FieldSeparator:: Og==
+msSFU30IntraFieldSeparator: ,
+msSFU30SearchAttributes: msSFU30Aliases
+msSFU30SearchAttributes: msSFU30Name
+msSFU30ResultAttributes: msSFU30Aliases
+msSFU30MapFilter: (objectCategory=msSFU30MailAliases)
+
+dn: CN=aliases,CN=mail,CN=ypServ30,CN=RpcServices,CN=System,${DOMAINDN}
+objectClass: top
+objectClass: msSFU30NISMapConfig
+msSFU30KeyAttributes: msSFU30Name
+msSFU30FieldSeparator:: Og==
+msSFU30IntraFieldSeparator: ,
+msSFU30SearchAttributes: msSFU30Aliases
+msSFU30SearchAttributes: msSFU30Name
+msSFU30ResultAttributes: msSFU30Aliases
+msSFU30MapFilter: (objectCategory=msSFU30MailAliases)
+
+dn: CN=${NISDOMAIN},CN=mail,CN=ypServ30,CN=RpcServices,CN=System,${DOMAINDN}
+objectClass: top
+objectClass: msSFU30DomainInfo
+msSFU30MasterServerName: ${NETBIOSNAME}
+msSFU30OrderNumber: 10000
+msSFU30Domains: ${NISDOMAIN}
+
+dn: CN=services,CN=ypServ30,CN=RpcServices,CN=System,${DOMAINDN}
+objectClass: top
+objectClass: container
+
+dn: CN=byname,CN=services,CN=ypServ30,CN=RpcServices,CN=System,${DOMAINDN}
+objectClass: top
+objectClass: msSFU30NISMapConfig
+msSFU30KeyAttributes: CN
+msSFU30FieldSeparator: "        "
+msSFU30SearchAttributes: msSFU30Aliases
+msSFU30SearchAttributes: CN
+msSFU30SearchAttributes: msSFU30Name
+msSFU30ResultAttributes: msSFU30Aliases
+msSFU30ResultAttributes: CN
+msSFU30ResultAttributes: msSFU30Name
+msSFU30MapFilter: (objectCategory=ipService)
+
+dn: CN=${NISDOMAIN},CN=services,CN=ypServ30,CN=RpcServices,CN=System,${DOMAINDN}
+objectClass: top
+objectClass: msSFU30DomainInfo
+msSFU30MasterServerName: ${NETBIOSNAME}
+msSFU30OrderNumber: 10000
+msSFU30Domains: ${NISDOMAIN}
+
+dn: CN=bootparams,CN=ypServ30,CN=RpcServices,CN=System,${DOMAINDN}
+objectClass: top
+objectClass: container
+
+dn: CN=bydefaults,CN=bootparams,CN=ypServ30,CN=RpcServices,CN=System,${DOMAINDN}
+objectClass: top
+objectClass: msSFU30NISMapConfig
+msSFU30KeyAttributes: msSFU30Name
+msSFU30FieldSeparator: "        "
+msSFU30IntraFieldSeparator: "        "
+msSFU30SearchAttributes: bootParameter
+msSFU30SearchAttributes: msSFU30Name
+msSFU30ResultAttributes: bootParameter
+msSFU30ResultAttributes: msSFU30Name
+msSFU30MapFilter: (&(objectCategory=Device)(bootParameter=*))
+
+dn: CN=${NISDOMAIN},CN=bootparams,CN=ypServ30,CN=RpcServices,CN=System,${DOMAINDN}
+objectClass: top
+objectClass: msSFU30DomainInfo
+msSFU30MasterServerName: ${NETBIOSNAME}
+msSFU30OrderNumber: 10000
+msSFU30Domains: ${NISDOMAIN}
+
+dn: CN=netgroup,CN=ypServ30,CN=RpcServices,CN=System,${DOMAINDN}
+objectClass: top
+objectClass: container
+
+dn: CN=bydefaults,CN=netgroup,CN=ypServ30,CN=RpcServices,CN=System,${DOMAINDN}
+objectClass: top
+objectClass: msSFU30NISMapConfig
+msSFU30KeyAttributes: msSFU30Name
+msSFU30FieldSeparator: "        "
+msSFU30IntraFieldSeparator: ,
+msSFU30SearchAttributes: NisNetgroupTriple
+msSFU30SearchAttributes: msSFU30Name
+msSFU30ResultAttributes: NisNetgroupTriple
+msSFU30MapFilter: (objectCategory=NisNetgroup)
+
+dn: CN=byuser,CN=netgroup,CN=ypServ30,CN=RpcServices,CN=System,${DOMAINDN}
+objectClass: top
+objectClass: msSFU30NISMapConfig
+msSFU30KeyAttributes: msSFU30NetgroupUserAtDomain
+msSFU30FieldSeparator: "        "
+msSFU30IntraFieldSeparator: ,
+msSFU30SearchAttributes: msSFU30Name
+msSFU30SearchAttributes: MemberNisNetgroup
+msSFU30SearchAttributes: msSFU30NetgroupUserAtDomain
+msSFU30ResultAttributes: MemberNisNetgroup
+msSFU30ResultAttributes: msSFU30Name
+msSFU30MapFilter: (objectCategory=NisNetgroup)
+
+dn: CN=byhost,CN=netgroup,CN=ypServ30,CN=RpcServices,CN=System,${DOMAINDN}
+objectClass: top
+objectClass: msSFU30NISMapConfig
+msSFU30KeyAttributes: msSFU30NetgroupHostAtDomain
+msSFU30FieldSeparator: "        "
+msSFU30IntraFieldSeparator: ,
+msSFU30SearchAttributes: msSFU30Name
+msSFU30SearchAttributes: MemberNisNetgroup
+msSFU30SearchAttributes: msSFU30NetgroupHostAtDomain
+msSFU30ResultAttributes: MemberNisNetgroup
+msSFU30ResultAttributes: msSFU30Name
+msSFU30MapFilter: (objectCategory=NisNetgroup)
+
+dn: CN=${NISDOMAIN},CN=netgroup,CN=ypServ30,CN=RpcServices,CN=System,${DOMAINDN}
+objectClass: top
+objectClass: msSFU30DomainInfo
+msSFU30MasterServerName: ${NETBIOSNAME}
+msSFU30OrderNumber: 10000
+msSFU30Domains: ${NISDOMAIN}
+
+dn: CN=netmasks,CN=ypServ30,CN=RpcServices,CN=System,${DOMAINDN}
+objectClass: top
+objectClass: container
+
+dn: CN=byaddr,CN=netmasks,CN=ypServ30,CN=RpcServices,CN=System,${DOMAINDN}
+objectClass: top
+objectClass: msSFU30NISMapConfig
+msSFU30KeyAttributes: ipNetworkNumber
+msSFU30FieldSeparator: "        "
+msSFU30IntraFieldSeparator: "        "
+msSFU30SearchAttributes: ipNetmaskNumber
+msSFU30SearchAttributes: ipNetworkNumber
+msSFU30SearchAttributes: msSFU30Name
+msSFU30ResultAttributes: ipNetmaskNumber
+msSFU30ResultAttributes: ipNetworkNumber
+msSFU30MapFilter: (&(objectCategory=ipNetwork)(ipNetmaskNumber=*))
+
+dn: CN=${NISDOMAIN},CN=netmasks,CN=ypServ30,CN=RpcServices,CN=System,${DOMAINDN}
+objectClass: top
+objectClass: msSFU30DomainInfo
+msSFU30MasterServerName: ${NETBIOSNAME}
+msSFU30OrderNumber: 10000
+msSFU30Domains: ${NISDOMAIN}
+
+dn: CN=hosts,CN=ypServ30,CN=RpcServices,CN=System,${DOMAINDN}
+objectClass: top
+objectClass: container
+
+dn: CN=byaddr,CN=hosts,CN=ypServ30,CN=RpcServices,CN=System,${DOMAINDN}
+objectClass: top
+objectClass: msSFU30NISMapConfig
+msSFU30KeyAttributes: ipHostNumber
+msSFU30FieldSeparator: "        "
+msSFU30IntraFieldSeparator: "        "
+msSFU30SearchAttributes: msSFU30Aliases
+msSFU30SearchAttributes: msSFU30Name
+msSFU30SearchAttributes: ipHostNumber
+msSFU30ResultAttributes: msSFU30Aliases
+msSFU30ResultAttributes: msSFU30Name
+msSFU30ResultAttributes: ipHostNumber
+msSFU30MapFilter: (objectCategory=Computer)
+
+dn: CN=byname,CN=hosts,CN=ypServ30,CN=RpcServices,CN=System,${DOMAINDN}
+objectClass: top
+objectClass: msSFU30NISMapConfig
+msSFU30KeyAttributes: msSFU30Aliases
+msSFU30KeyAttributes: msSFU30Name
+msSFU30FieldSeparator: "        "
+msSFU30IntraFieldSeparator: "        "
+msSFU30SearchAttributes: msSFU30Aliases
+msSFU30SearchAttributes: msSFU30Name
+msSFU30SearchAttributes: ipHostNumber
+msSFU30ResultAttributes: msSFU30Aliases
+msSFU30ResultAttributes: msSFU30Name
+msSFU30ResultAttributes: ipHostNumber
+msSFU30MapFilter: (objectCategory=Computer)
+
+dn: CN=${NISDOMAIN},CN=hosts,CN=ypServ30,CN=RpcServices,CN=System,${DOMAINDN}
+objectClass: top
+objectClass: msSFU30DomainInfo
+msSFU30MasterServerName: ${NETBIOSNAME}
+msSFU30OrderNumber: 10000
+msSFU30Domains: ${NISDOMAIN}
+
+dn: CN=ethers,CN=ypServ30,CN=RpcServices,CN=System,${DOMAINDN}
+objectClass: top
+objectClass: container
+
+dn: CN=byaddr,CN=ethers,CN=ypServ30,CN=RpcServices,CN=System,${DOMAINDN}
+objectClass: top
+objectClass: msSFU30NISMapConfig
+msSFU30KeyAttributes: macAddress
+msSFU30FieldSeparator: "        "
+msSFU30SearchAttributes: msSFU30Name
+msSFU30SearchAttributes: macAddress
+msSFU30ResultAttributes: msSFU30Name
+msSFU30ResultAttributes: macAddress
+msSFU30MapFilter: (&(objectCategory=Device)(macAddress=*))
+
+dn: CN=byname,CN=ethers,CN=ypServ30,CN=RpcServices,CN=System,${DOMAINDN}
+objectClass: top
+objectClass: msSFU30NISMapConfig
+msSFU30KeyAttributes: msSFU30Name
+msSFU30FieldSeparator: "        "
+msSFU30SearchAttributes: msSFU30Name
+msSFU30SearchAttributes: macAddress
+msSFU30ResultAttributes: msSFU30Name
+msSFU30ResultAttributes: macAddress
+msSFU30MapFilter: (&(objectCategory=Device)(macAddress=*))
+
+dn: CN=${NISDOMAIN},CN=ethers,CN=ypServ30,CN=RpcServices,CN=System,${DOMAINDN}
+objectClass: top
+objectClass: msSFU30DomainInfo
+msSFU30MasterServerName: ${NETBIOSNAME}
+msSFU30OrderNumber: 10000
+msSFU30Domains: ${NISDOMAIN}
+
+dn: CN=networks,CN=ypServ30,CN=RpcServices,CN=System,${DOMAINDN}
+objectClass: top
+objectClass: container
+
+dn: CN=byaddr,CN=networks,CN=ypServ30,CN=RpcServices,CN=System,${DOMAINDN}
+objectClass: top
+objectClass: msSFU30NISMapConfig
+msSFU30KeyAttributes: ipNetworkNumber
+msSFU30FieldSeparator: "        "
+msSFU30IntraFieldSeparator: "        "
+msSFU30SearchAttributes: msSFU30Aliases
+msSFU30SearchAttributes: ipNetworkNumber
+msSFU30SearchAttributes: msSFU30Name
+msSFU30ResultAttributes: msSFU30Aliases
+msSFU30ResultAttributes: ipNetworkNumber
+msSFU30ResultAttributes: msSFU30Name
+msSFU30MapFilter: (objectCategory=ipNetwork)
+
+dn: CN=byname,CN=networks,CN=ypServ30,CN=RpcServices,CN=System,${DOMAINDN}
+objectClass: top
+objectClass: msSFU30NISMapConfig
+msSFU30KeyAttributes: msSFU30Aliases
+msSFU30KeyAttributes: msSFU30Name
+msSFU30FieldSeparator: "        "
+msSFU30IntraFieldSeparator: "        "
+msSFU30SearchAttributes: msSFU30Aliases
+msSFU30SearchAttributes: ipNetworkNumber
+msSFU30SearchAttributes: msSFU30Name
+msSFU30ResultAttributes: msSFU30Aliases
+msSFU30ResultAttributes: ipNetworkNumber
+msSFU30ResultAttributes: msSFU30Name
+msSFU30MapFilter: (objectCategory=ipNetwork)
+
+dn: CN=${NISDOMAIN},CN=networks,CN=ypServ30,CN=RpcServices,CN=System,${DOMAINDN}
+objectClass: top
+objectClass: msSFU30DomainInfo
+msSFU30MasterServerName: ${NETBIOSNAME}
+msSFU30OrderNumber: 10000
+msSFU30Domains: ${NISDOMAIN}
+
+dn: CN=protocols,CN=ypServ30,CN=RpcServices,CN=System,${DOMAINDN}
+objectClass: top
+objectClass: container
+
+dn: CN=bynumber,CN=protocols,CN=ypServ30,CN=RpcServices,CN=System,${DOMAINDN}
+objectClass: top
+objectClass: msSFU30NISMapConfig
+msSFU30KeyAttributes: ipProtocolNumber
+msSFU30FieldSeparator: "        "
+msSFU30IntraFieldSeparator: "        "
+msSFU30SearchAttributes: msSFU30Aliases
+msSFU30SearchAttributes: ipProtocolNumber
+msSFU30SearchAttributes: msSFU30Name
+msSFU30ResultAttributes: msSFU30Aliases
+msSFU30ResultAttributes: ipProtocolNumber
+msSFU30ResultAttributes: msSFU30Name
+msSFU30MapFilter: (objectCategory=ipProtocol)
+
+dn: CN=byname,CN=protocols,CN=ypServ30,CN=RpcServices,CN=System,${DOMAINDN}
+objectClass: top
+objectClass: msSFU30NISMapConfig
+msSFU30KeyAttributes: msSFU30Name
+msSFU30FieldSeparator: "        "
+msSFU30IntraFieldSeparator: "        "
+msSFU30SearchAttributes: msSFU30Aliases
+msSFU30SearchAttributes: ipProtocolNumber
+msSFU30SearchAttributes: msSFU30Name
+msSFU30ResultAttributes: msSFU30Aliases
+msSFU30ResultAttributes: ipProtocolNumber
+msSFU30ResultAttributes: msSFU30Name
+msSFU30MapFilter: (objectCategory=ipProtocol)
+
+dn: CN=${NISDOMAIN},CN=protocols,CN=ypServ30,CN=RpcServices,CN=System,${DOMAINDN}
+objectClass: top
+objectClass: msSFU30DomainInfo
+msSFU30MasterServerName: ${NETBIOSNAME}
+msSFU30OrderNumber: 10000
+msSFU30Domains: ${NISDOMAIN}
+
+dn: CN=rpc,CN=ypServ30,CN=RpcServices,CN=System,${DOMAINDN}
+objectClass: top
+objectClass: container
+
+dn: CN=bynumber,CN=rpc,CN=ypServ30,CN=RpcServices,CN=System,${DOMAINDN}
+objectClass: top
+objectClass: msSFU30NISMapConfig
+msSFU30KeyAttributes: oncRpcNumber
+msSFU30FieldSeparator: "        "
+msSFU30SearchAttributes: msSFU30Aliases
+msSFU30SearchAttributes: oncRpcNumber
+msSFU30SearchAttributes: msSFU30Name
+msSFU30ResultAttributes: msSFU30Aliases
+msSFU30ResultAttributes: oncRpcNumber
+msSFU30ResultAttributes: msSFU30Name
+msSFU30MapFilter: (objectCategory=oncRpc)
+
+dn: CN=${NISDOMAIN},CN=rpc,CN=ypServ30,CN=RpcServices,CN=System,${DOMAINDN}
+objectClass: top
+objectClass: msSFU30DomainInfo
+msSFU30MasterServerName: ${NETBIOSNAME}
+msSFU30OrderNumber: 10000
+msSFU30Domains: ${NISDOMAIN}
+
+dn: CN=netid,CN=ypServ30,CN=RpcServices,CN=System,${DOMAINDN}
+objectClass: top
+objectClass: container
+
+dn: CN=byname,CN=netid,CN=ypServ30,CN=RpcServices,CN=System,${DOMAINDN}
+objectClass: top
+objectClass: msSFU30NISMapConfig
+msSFU30KeyAttributes: msSFU30Name
+msSFU30FieldSeparator: "        "
+msSFU30SearchAttributes: msSFU30KeyValues
+msSFU30SearchAttributes: msSFU30Name
+msSFU30ResultAttributes: msSFU30KeyValues
+msSFU30MapFilter: (objectCategory=msSFU30NetId)
+
+dn: CN=${NISDOMAIN},CN=netid,CN=ypServ30,CN=RpcServices,CN=System,${DOMAINDN}
+objectClass: top
+objectClass: msSFU30DomainInfo
+msSFU30MasterServerName: ${NETBIOSNAME}
+msSFU30OrderNumber: 10000
+msSFU30Domains: ${NISDOMAIN}
+
+dn: CN=passwd,CN=ypServ30,CN=RpcServices,CN=System,${DOMAINDN}
+objectClass: top
+objectClass: container
+
+dn: CN=byuid,CN=passwd,CN=ypServ30,CN=RpcServices,CN=System,${DOMAINDN}
+objectClass: top
+objectClass: msSFU30NISMapConfig
+msSFU30KeyAttributes: uidNumber
+msSFU30FieldSeparator:: Og==
+msSFU30SearchAttributes: loginShell
+msSFU30SearchAttributes: unixHomeDirectory
+msSFU30SearchAttributes: gecos
+msSFU30SearchAttributes: gidNumber
+msSFU30SearchAttributes: uidNumber
+msSFU30SearchAttributes: unixUserPassword
+msSFU30SearchAttributes: msSFU30Name
+msSFU30ResultAttributes: loginShell
+msSFU30ResultAttributes: unixHomeDirectory
+msSFU30ResultAttributes: gecos
+msSFU30ResultAttributes: gidNumber
+msSFU30ResultAttributes: uidNumber
+msSFU30ResultAttributes: unixUserPassword
+msSFU30ResultAttributes: msSFU30Name
+msSFU30MapFilter: (uidNumber=*)
+
+dn: CN=byname,CN=passwd,CN=ypServ30,CN=RpcServices,CN=System,${DOMAINDN}
+objectClass: top
+objectClass: msSFU30NISMapConfig
+msSFU30KeyAttributes: msSFU30Name
+msSFU30FieldSeparator:: Og==
+msSFU30SearchAttributes: loginShell
+msSFU30SearchAttributes: unixHomeDirectory
+msSFU30SearchAttributes: gecos
+msSFU30SearchAttributes: gidNumber
+msSFU30SearchAttributes: uidNumber
+msSFU30SearchAttributes: unixUserPassword
+msSFU30SearchAttributes: msSFU30Name
+msSFU30ResultAttributes: loginShell
+msSFU30ResultAttributes: unixHomeDirectory
+msSFU30ResultAttributes: gecos
+msSFU30ResultAttributes: gidNumber
+msSFU30ResultAttributes: uidNumber
+msSFU30ResultAttributes: unixUserPassword
+msSFU30ResultAttributes: msSFU30Name
+msSFU30MapFilter: (uidNumber=*)
+
+dn: CN=${NISDOMAIN},CN=passwd,CN=ypServ30,CN=RpcServices,CN=System,${DOMAINDN}
+objectClass: top
+objectClass: msSFU30DomainInfo
+msSFU30MasterServerName: ${NETBIOSNAME}
+msSFU30OrderNumber: 10000
+msSFU30Domains: ${NISDOMAIN}
+
+dn: CN=shadow,CN=ypServ30,CN=RpcServices,CN=System,${DOMAINDN}
+objectClass: top
+objectClass: container
+
+dn: CN=bydefaults,CN=shadow,CN=ypServ30,CN=RpcServices,CN=System,${DOMAINDN}
+objectClass: top
+objectClass: msSFU30NISMapConfig
+msSFU30KeyAttributes: msSFU30Name
+msSFU30FieldSeparator:: Og==
+msSFU30IntraFieldSeparator:: Og==
+msSFU30SearchAttributes: shadowFlag
+msSFU30SearchAttributes: shadowExpire
+msSFU30SearchAttributes: shadowInactive
+msSFU30SearchAttributes: shadowWarning
+msSFU30SearchAttributes: shadowMax
+msSFU30SearchAttributes: shadowMin
+msSFU30SearchAttributes: shadowLastChange
+msSFU30SearchAttributes: unixUserPassword
+msSFU30SearchAttributes: msSFU30Name
+msSFU30ResultAttributes: shadowFlag
+msSFU30ResultAttributes: shadowExpire
+msSFU30ResultAttributes: shadowInactive
+msSFU30ResultAttributes: shadowWarning
+msSFU30ResultAttributes: shadowMax
+msSFU30ResultAttributes: shadowMin
+msSFU30ResultAttributes: shadowLastChange
+msSFU30ResultAttributes: unixUserPassword
+msSFU30ResultAttributes: msSFU30Name
+msSFU30MapFilter: (uidNumber=*)
+
+dn: CN=${NISDOMAIN},CN=shadow,CN=ypServ30,CN=RpcServices,CN=System,${DOMAINDN}
+objectClass: top
+objectClass: msSFU30DomainInfo
+msSFU30MasterServerName: ${NETBIOSNAME}
+msSFU30OrderNumber: 10000
+msSFU30Domains: ${NISDOMAIN}
+
+dn: CN=group,CN=ypServ30,CN=RpcServices,CN=System,${DOMAINDN}
+objectClass: top
+objectClass: container
+
+dn: CN=bygid,CN=group,CN=ypServ30,CN=RpcServices,CN=System,${DOMAINDN}
+objectClass: top
+objectClass: msSFU30NISMapConfig
+msSFU30KeyAttributes: gidNumber
+msSFU30FieldSeparator:: Og==
+msSFU30IntraFieldSeparator: ,
+msSFU30SearchAttributes: memberUid
+msSFU30SearchAttributes: gidNumber
+msSFU30SearchAttributes: unixUserPassword
+msSFU30SearchAttributes: msSFU30Name
+msSFU30ResultAttributes: memberUid
+msSFU30ResultAttributes: gidNumber
+msSFU30ResultAttributes: unixUserPassword
+msSFU30ResultAttributes: msSFU30Name
+msSFU30MapFilter: (&(objectCategory=group)(gidNumber=*))
+
+dn: CN=byname,CN=group,CN=ypServ30,CN=RpcServices,CN=System,${DOMAINDN}
+objectClass: top
+objectClass: msSFU30NISMapConfig
+msSFU30KeyAttributes: msSFU30Name
+msSFU30FieldSeparator:: Og==
+msSFU30IntraFieldSeparator: ,
+msSFU30SearchAttributes: memberUid
+msSFU30SearchAttributes: gidNumber
+msSFU30SearchAttributes: unixUserPassword
+msSFU30SearchAttributes: msSFU30Name
+msSFU30ResultAttributes: memberUid
+msSFU30ResultAttributes: gidNumber
+msSFU30ResultAttributes: unixUserPassword
+msSFU30ResultAttributes: msSFU30Name
+msSFU30MapFilter: (&(objectCategory=group)(gidNumber=*))
+
+dn: CN=${NISDOMAIN},CN=group,CN=ypServ30,CN=RpcServices,CN=System,${DOMAINDN}
+objectClass: top
+objectClass: msSFU30DomainInfo
+msSFU30MasterServerName: ${NETBIOSNAME}
+msSFU30OrderNumber: 10000
+msSFU30Domains: ${NISDOMAIN}
+
+dn: CN=ypservers,CN=ypServ30,CN=RpcServices,CN=System,${DOMAINDN}
+objectClass: top
+objectClass: container
+
+dn: CN=bydefaults,CN=ypservers,CN=ypServ30,CN=RpcServices,CN=System,${DOMAINDN}
+objectClass: top
+objectClass: msSFU30NISMapConfig
+msSFU30KeyAttributes: msSFU30Name
+msSFU30FieldSeparator:: IA==
+msSFU30IntraFieldSeparator:: IA==
+msSFU30SearchAttributes: msSFU30Name
+msSFU30ResultAttributes: msSFU30Name
+msSFU30MapFilter: (objectCategory=msSFU30YpServers)
+
+dn: CN=${NISDOMAIN},CN=ypservers,CN=ypServ30,CN=RpcServices,CN=System,${DOMAINDN}
+objectClass: top
+objectClass: msSFU30DomainInfo
+msSFU30MasterServerName: ${NETBIOSNAME}
+msSFU30OrderNumber: 10000
+msSFU30Domains: ${NISDOMAIN}