The format of the map entries varies by database. The full list of attributes that can be used with an entry and a detailed description of each attribute can be found in the DBIS IETF drafts. This page provides a summary and an example for each database.
Note that the map entries shown here match the DBIS schema, and rely on configuration maps set-up as described in [Configuration Maps]. If you are supporting older legacy RFC2307 entries, see [ConfigurationMaps-RFC2307]
netgroup
databaseNetgroups are groups of users and hosts, and generally used in access control lists.
Traditionally, a netgroup is defined as a triple of the format:
(user, host, domain)
While the DBIS Reference Implementation supports netgroup triples for backwards compatibility with NIS and RFC2307, the netgroup format has been revised in DBIS so that users are represented by the netgroupUser
attribute and hosts by the netgroupHost
attribute.
The table below gives an example of how a traditional netgroup triple is represented in the new format:
nisNetgroupTriple | netgroupUser | netgroupHost |
---|---|---|
(mark, , ) | mark | - |
(, riker, ) | - | riker |
(, , uss.net) | - | *.uss.net |
(mark, riker, ) | mark@riker | - |
(mark, riker, uss.net) | mark@riker.uss.net | - |
(mark, , uss.net) | mark@*.uss.net | - |
(, riker, uss.net) | - | riker.uss.net |
The innetgr
library call has not changed and supports netgroups defined using either scheme.
Here is an example netgroup defined using the DBIS schema:
dn: en=sales-mgmt,ou=netgroup,ou=sales,o=infra objectClass: top objectClass: netgroupObject en: sales-mgmt netgroupHost: picard.sales.corp netgroupHost: *.fleet.sales.corp netgroupUser: mark@riker.sales.corp netgroupUser: julie@*.market.sales.corp exactNetgroup: board-mgmt exactNetgroup: board-mgmt-remote description: Sales Management Privileges
The exactNetgroup
attribute is used to include other netgroups inside this one.
The DBIS schema also defines the netgroupTriple
attribute for backwards compatibility with RFC2307 client software. This may be used as well as or instead of the netgroupHost
and netgroupUser
attributes.
netservice
databaseThe netservice
database is a new feature of DBIS that allows application services or roles to be assigned by netgroup membership, and is described in [Netservices].
A netservice is defined by a netserviceObject
underneath which is a hierarchy of netserviceDescriptor
entries. The following example defines a netservice called ssh:login
, granting the service to hosts and users in the unix2-admin
netgroup and to the same hosts and users that have the ftp:login
and web:login/anonymous
service.
dn: en=login,en=ssh,ou=netservice,o=infra objectClass: top objectClass: netserviceDescriptor en: login exactNetservice: ftp:login exactNetservice: web:login/anonymous exactNetgroup: unix2-admin
passwd
databaseDBIS defines the posixUserAccount
object class for user entries that appear in the passwd
database. This is an auxiliary class, not a structural class, which means that user entries will also need a structural class assigned to them too. The DBIS IETF drafts suggest using inetOrgPerson
although there are several other choices.
The user name is identified by the en
attribute (exactName
) which is used in the RDN and is case sensitive.
Here is an example passwd
entry that uses the inetOrgPerson
and posixUserAccount
classes. In this case, the configuration map that uses this entry will have the dbisMapGecos
attribute set to displayName
.
dn: en=mark,ou=passwd,ou=sales,o=infra objectClass: top objectClass: inetOrgPerson objectClass: posixUserAccount cn: Mark sn: Bannister displayName: Bannister, Mark en: mark uidNumber: 801 gidNumber: 900 homeDirectory: /home/mark loginShell: /bin/bash
group
databaseEntries in the group
database are identified by the posixGroupAccount
object class. The group name is contained in the en
attribute (exactName
) which is used in the RDN and is case sensitive.
If this is a user's primary group then the group ID (gidNumber
) will appear in that user's posixUserAccount
entry (see above). If this is to be one of the user's secondary groups, then the user name must be assigned to the group entry using the exactUser
attribute, which is case sensitive.
Here is an example:
dn: en=finance,ou=group,ou=sales,o=infra objectClass: top objectClass: posixGroupAccount en: finance gidNumber: 952 exactUser: mark exactUser: julie
hosts
databaseHost names and their IP addresses in the hosts
database are represented by entries using the structural class ipHostObject
. An auxiliary class is used to identify whether this is for an IPv4 or IPv6 address: ipv4HostObject
vs. ipv6HostObject
.
The fully-qualified canonical host name is identified by the rn
attribute (regularName
) which is case insensitive. Then either the ipv4Address
or ipv6Address
attribute is used to provide the IP address, depending on class.
Host aliases may also be configured, as described in [Aliases].
Here is an IPv4 example:
dn: rn=picard,ou=hosts,o=infra objectClass: top objectClass: ipHostObject objectClass: ipv4HostObject rn: picard ipv4Address: 10.11.12.13
Here is an IPv6 example:
dn: rn=picard-hive,ou=hosts,o=infra objectClass: top objectClass: ipHostObject objectClass: ipv6HostObject rn: picard-hive ipv6Address: 0:1:2:3:4:5:6:7
ethers
databaseA host object may be extended to contain the Ethernet address (aka "MAC address") reported in the ethers
database. This is achieved by adding the auxiliary class ieee802Device
and attribute macAddress
to a host entry, as in the following example:
dn: rn=picard-hive,ou=hosts,o=infra objectClass: top objectClass: ipHostObject objectClass: ipv6HostObject objectClass: ieee802Device rn: picard-hive ipv6Address: 0:1:2:3:4:5:6:7 macAddress: 08:00:27:00:50:f4
bootparams
databaseA host object may be extended to contain boot parameters reported in the bootparams
database. This is achieved by adding the auxiliary class bootableDevice
and multi-value attribute bootParameter
to a host entry, as in the following example:
dn: rn=picard-hive,ou=hosts,o=infra objectClass: top objectClass: ipHostObject objectClass: ipv6HostObject objectClass: ieee802Device objectClass: bootableDevice rn: picard-hive ipv6Address: 0:1:2:3:4:5:6:7 macAddress: 08:00:27:00:50:f4 bootParameter: root=hive:/export/cube/root bootParameter: domain=resistance.futile.org
networks
databaseIP network names and netmasks are stored in LDAP entries that use the class ipNetworkObject
. The network name is identified by the en
attribute (exactName
) which is case sensitive. The network number and netmask are recorded by the ipNetworkNumber
and ipNetmaskNumber
attributes respectively.
Network aliases may also be configured, as described in [Aliases].
Here is an example network entry:
dn: en=lab,ou=networks,o=infra objectClass: top objectClass: ipNetworkObject en: lab ipNetworkNumber: 10.23.10 ipNetmaskNumber: 255.255.255.0
protocols
databaseNetwork protocol names and numbers are stored in LDAP entries using the class ipProtocolObject
. The protocol name is identified by the en
attribute (exactName
) which is case sensitive. The protocol number is stored in the ipProtocolNumber
attribute.
Protocol aliases may also be configured, as described in [Aliases].
Here is an example protocol entry:
dn: en=ip,ou=protocols,o=infra objectClass: top objectClass: ipProtocolObject en: ip ipProtocolNumber: 0
rpc
databaseRPC program names and numbers are stored in LDAP entries that use the class rpcObject
. The RPC program name is identified by the en
attribute (exactName
) which is case sensitive. The RPC program number is stored in the rpcNumber
attribute.
RPC aliases may also be configured, as described in [Aliases].
Here is an example rpc entry:
dn: en=rpcbind,ou=rpc,o=infra objectClass: top objectClass: rpcObject en: rpcbind rpcNumber: 100000
services
databaseNetwork service names, port numbers and protocols are stored in LDAP entries using the class ipServiceObject
. The service name is identified by the en
attribute (exactName
) which is case sensitive. The port number and protocol are stored in the ipServicePort
and ipProtocolName
attributes respectively.
Service aliases may also be configured, as described in [Aliases].
Here is an example service entry:
dn: en=smtp,ou=services,o=infra objectClass: top objectClass: ipServiceObject en: smtp ipServicePort: 25 ipProtocolName: tcp
If the same service name supports two protocols, two entries must be provided using a multi-value RDN, as in the following example:
dn: en=rpcbind+ipProtocolName=udp,ou=services,o=infra objectClass: top objectClass: ipServiceObject en: rpcbind ipServicePort: 111 ipProtocolName: udp dn: en=rpcbind+ipProtocolName=tcp,ou=services,o=infra objectClass: top objectClass: ipServiceObject en: rpcbind ipServicePort: 111 ipProtocolName: tcp
automount
databaseDBIS supports three different types of automount entries: master map entries, direct map entries and indirect map entries. It additionally supports multiple mount entries, i.e. where multiple mount-points are defined for a single key in an indirect map.
Master map entries are identified by the automountMapObject
and automountMaster
classes. The key is recorded in the en
attribute (exactName
) which is case sensitive. The corresponding automount options (optional) and automount map are given in the automountOption
and automountUseMap
attributes respectively.
Here are two example master map entries, the first for a direct map entry, the second for an indirect map entry:
dn: en=/-,ou=master,ou=automount,o=infra objectClass: top objectClass: automountMapObject objectClass: automountMaster en: /- automountUseMap: auto_direct description: Master entry for direct maps, see auto_direct dn: en=/home,ou=master,ou=automount,o=infra objectClass: top objectClass: automountMapObject objectClass: automountMaster en: /home automountOption: nobrowse automountUseMap: auto_home description: Master entry for /home, see auto_home map
Automount maps have a top-level entry with the automountMapObject
class, followed by the map entries themselves as child objects with the automountEntry
class. In both cases the map key is identified by the en
attribute (exactName
) which is case sensitive. An automountEntry
object also has a automountLocation
attribute and may have one or more automountOption
attributes.
Here is an example of a direct map entry:
dn: en=auto_direct,ou=maps,ou=automount,o=infra objectClass: top objectClass: automountMapObject en: auto_direct description: auto_direct map entries are child objects dn: en=/usr/install,en=auto_direct,ou=maps,ou=automount,o=infra objectClass: top objectClass: automountEntry en: /usr/install automountOption: ro automountLocation: esher,kingston(1):/export/install automountLocation: hampton(3):/usr/install description: Mount /usr/install from three possible servers
Here are some example indirect map entries:
dn: en=auto_home,ou=maps,ou=automount,o=infra objectClass: top objectClass: automountMapObject en: auto_home description: auto_home map entries are child objects dn: en=fred,en=auto_home,ou=maps,ou=automount,o=infra objectClass: top objectClass: automountEntry en: fred automountLocation: surbiton:/export/home/& description: /home/fred dn: en=sheila,en=auto_home,ou=maps,ou=automount,o=infra objectClass: top objectClass: automountEntry en: sheila automountLocation: surbiton:/export/home/& description: /home/sheila dn: en=*,en=auto_home,ou=maps,ou=automount,o=infra objectClass: top objectClass: automountEntry en: * automountLocation: ditton:/export/home/& description: Catch-all for user home directories not listed
Multiple mount entries use an additional level by inserting an entry with the automountMulti
class underneath the automountMapObject
and then the automountEntry
objects come under that. Here is an example:
dn: en=qa,ou=maps,ou=automount,o=infra objectClass: top objectClass: automountMapObject en: qa description: qa map entries are child objects dn: en=qa_root,en=qa,ou=maps,ou=automount,o=infra objectClass: top objectClass: automountMulti en: qa_root automountOption: ro description: qa_root multi-mount entries are child objects dn: en=/,en=qa_root,en=qa,ou=maps,ou=automount,o=infra objectClass: top objectClass: automountEntry en: / automountLocation: esher:/export/qa description: /qa dn: en=/docs,en=qa_root,en=qa,ou=maps,ou=automount,o=infra objectClass: top objectClass: automountEntry en: /docs automountLocation: surbiton:/export/qa/docs description: /qa/docs dn: en=/tmp,en=qa_root,en=qa,ou=maps,ou=automount,o=infra objectClass: top objectClass: automountEntry en: /tmp automountOption: rw automountLocation: surbiton:/export/qa/tmp description: /qa/tmp
custom
databaseCustom map entries are identified by the customMapEntry
object class. The map key is recorded by the en
attribute (exactName
) which is case sensitive. The map value is given by the customMapValue
attribute.
Here are some example custom map entries:
dn: ou=console,ou=custom,o=infra objectClass: top objectClass: organizationalUnit ou: console dn: en=kirk,ou=console,ou=custom,o=infra objectClass: top objectClass: customMapEntry en: kirk customMapValue: 2079 ssh dn: en=spock,ou=console,ou=custom,o=infra objectClass: top objectClass: customMapEntry en: spock customMapValue: 53179 telnet
Return to [Configuring DBIS] for the next steps in setting up a new installation. This includes setting up advanced features such as [Remapping Rules], [Transformation Rules], [Overlays], [Netgroup Constraints] and [Netservices].
Wiki: Aliases
Wiki: Configuration Maps
Wiki: ConfigurationMaps-RFC2307
Wiki: Configuring DBIS
Wiki: DBIS and RFC2307 - A Comparison
Wiki: DBIS and RFC2307 schemas
Wiki: Netgroup Constraints
Wiki: Netservices
Wiki: Overlays
Wiki: Remapping Rules
Wiki: Transformation Rules