Incomputing, adirectory service orname service maps the names of network resources to their respectivenetwork addresses. It is a shared information infrastructure for locating, managing, administering and organizing everyday items and network resources, which can include volumes, folders, files, printers, users, groups, devices, telephone numbers and other objects. A directory service is a critical component of anetwork operating system. Adirectory server orname server is aserver which provides such a service. Each resource on the network is considered anobject by the directory server. Information about a particular resource is stored as a collection ofattributes associated with that resource or object.
A directory service defines anamespace for the network. The namespace is used to assign aname (unique identifier) to each of the objects. Directories typically have a set of rules determining how network resources are named and identified, which usually includes a requirement that the identifiers beunique andunambiguous. When using a directory service, a user does not have to remember the physical address of a network resource; providing a name locates the resource. Some directory services includeaccess control provisions, limiting the availability of directory information toauthorized users.
Several things distinguish a directory service from arelational database. Data can be made redundant if it aids performance (e.g. by repeating values through rows in a table instead of relating them to the contents of a different table through a key, which technique is calleddenormalization; another technique could be the utilization ofreplicas for increasing actual throughput).[1]
Directory schemas are object classes, attributes, name bindings and knowledge (namespaces) where an object class has:
Attributes are sometimes multi-valued, allowing multiple naming attributes at one level (such as machine type and serial numberconcatenation, or multiple phone numbers for "work phone"). Attributes and object classes are usually standardized throughout the industry; for example,X.500 attributes and classes are often formally registered with theIANA for their object ID.[citation needed] Therefore, directory applications try to reuse standard classes and attributes to maximize the benefit of existing directory-server software.
Object instances are slotted into namespaces; each object classinherits from its parent object class (and ultimately from the root of thehierarchy), adding attributes to the must-may list. Directory services are often central to thesecurity design of an IT system and have a correspondingly-fine granularity of access control.
Replication and distribution have distinct meanings in the design and management of a directory service. Replication is used to indicate that the same directory namespace (the same objects) are copied to another directory server for redundancy and throughput reasons; the replicated namespace is governed by the same authority. Distribution is used to indicate that multiple directory servers in different namespaces are interconnected to form a distributed directory service; each namespace can be governed by a different authority.
Directory services were part of anOpen Systems Interconnection (OSI) initiative for common network standards and multi-vendor interoperability. During the 1980s, theITU andISO created theX.500 set of standards for directory services, initially to support the requirements of inter-carrier electronic messaging and network-name lookup. TheLightweight Directory Access Protocol (LDAP) is based on the X.500 directory-information services, using theTCP/IP stack and an X.500Directory Access Protocol (DAP) string-encoding scheme on theInternet.
Systems developed before the X.500 include:
LDAP/X.500-based implementations include:
Open-source tools to create directory services include OpenLDAP, theKerberos protocol andSamba software, which can function as a Windowsdomain controller with Kerberos and LDAPback ends. Administration is by GOsa or Samba SWAT.
Name services on Unix systems are typically configured throughnsswitch.conf. Information from name services can be retrieved withgetent.