LDAPCLIENT(8) Maintenance Procedures LDAPCLIENT(8)
NAME
ldapclient - initialize LDAP client machine or output an LDAP client
profile in LDIF format
SYNOPSIS
/usr/sbin/ldapclient [
-v |
-q] init [
-a profileName=
profileName]
[
-a domainName=
domain] [
-a proxyDN=
proxyDN]
[
-a proxyPassword=
password]
[
-a authenticationMethod=
authenticationMethod]
[
-a enableShadowUpdate=true | false]
[
-a adminDN=
adminDN]
[
-a adminPassword=
adminPassword]
[
-a certificatePath=
path] [
-d bindDN] [
-w bindPassword]
[
-j passwdFile] [
-y passwdFile]
[
-z adminrPasswdFile]
LDAP_server[:
port_number]
/usr/sbin/ldapclient [
-v |
-q] manual [
-a attrName=
attrVal]
/usr/sbin/ldapclient [
-v |
-q] mod [
-a attrName=
attrVal]
/usr/sbin/ldapclient [
-v |
-q] list
/usr/sbin/ldapclient [
-v |
-q] uninit
/usr/sbin/ldapclient [
-v |
-q] genprofile
-a profileName=
profileName [
-a attrName=
attrVal]
DESCRIPTION
The
ldapclient utility can be used to:
o initialize LDAP client machines
o restore the network service environment on LDAP clients
o list the contents of the LDAP client cache in human readable
format.
The
init form of the
ldapclient utility is used to initialize an LDAP
client machine, using a profile stored on an LDAP server specified by
LDAP_server. The LDAP client will use the attributes in the specified
profile to determine the configuration of the LDAP client. Using a
configuration profile allows for easy installation of LDAP client and
propagation of configuration changes to LDAP clients. The
ldap_cachemgr(8) utility will update the LDAP client configuration when
its cache expires by reading the profile. For more information on the
configuration profile refer to IETF document
A Configuration Schema for LDAP Based Directory User Agents.
The
manual form of the
ldapclient utility is used to initialize an LDAP
client machine manually. The LDAP client will use the attributes
specified on the command line. Any unspecified attributes will be
assigned their default values. At least one server must be specified in
the
defaultServerList or the
preferredServerList attributes.The
domainName attribute must be specified if the client's
domainName is not
set.
The
mod form of the
ldapclient utility is used to modify the
configuration of an LDAP client machine that was setup manually. This
option modifies only those LDAP client configuration attributes specified
on the command line. The
mod option should only be used on LDAP clients
that were initialized using the
manual option.
Regardless of which method is used for initialization, if a client is to
be configured to use a proxy
credentialLevel, proxy credentials must be
provided using
-a proxyDN=proxyDN and
-a proxyPassword=proxyPassword options. However, if
-a proxyPassword=proxyPassword is not specified,
ldapclient will prompt for it. Note that
NULL passwords are not allowed
in LDAP. If a self
credentialLevel is configured,
authenticationMethod must be
sasl/GSSAPI.
Similarly, if a client is to be configured to enable shadow information
update and use a proxy credentialLevel, administrator credentials must be
provided using
-a adminDN=adminDN and
-a adminPassword=adminPassword.
However, the shadow information update does not need the administrator
credentials if a self
credentialLevel is configured.
If any file is modified during installation, it will be backed up to
/var/ldap/restore. The files that are typically modified during
initialization are:
o
/etc/nsswitch.conf o
/etc/defaultdomain (if it exists)
o
/var/yp/binding/`domainname` (for a
NIS(YP) client)
o
/var/ldap/ldap_client_file (for an existing LDAP client)
o
/var/ldap/ldap_client_cred (for an existing LDAP client)
ldapclient does not set up a client to resolve hostnames using DNS. It
simply copies
/etc/nsswitch.ldap to
/etc/nsswitch.conf. If you prefer to
use DNS for host resolution, please refer to the DNS documentation for
information on setting up DNS. See
resolv.conf(5). If you want to use
sasl/GSSAPI as the authentication method, you have to use DNS for
hosts and
ipnodes resolution.
The
list form of the
ldapclient utility is used to list the LDAP client
configuration. The output will be human readable. LDAP configuration
files are not guaranteed to be human readable. Note that for security
reason, the values for adminDN and adminPassword will not be displayed.
The
uninit form of the
ldapclient utility is used to uninitialize the
network service environment, restoring it to the state it was in prior to
the last execution of
ldapclient using
init or
manual. The restoration
will succeed only if the machine was initialized with the
init or
manual form of
ldapclient, as it uses the backup files created by these options.
The
genprofile option is used to write an LDIF formatted configuration
profile based on the attributes specified on the command line to standard
output. This profile can then be loaded into an LDAP server to be used as
the client profile, which can be downloaded by means of the
ldapclient init command. Loading the LDIF formatted profile to the directory server
can be done through
ldapadd(1), or through any server specific import
tool. Note that the attributes
proxyDN,
proxyPassword,
certificatePath,
domainName,
enableShadowUpdate,
adminDN, and
adminPassword are not part
of the configuration profile and thus are not permitted.
You must have superuser privileges to run the
ldapclient command, except
with the
genprofile option.
To access the information stored in the directory, clients can either
authenticate to the directory, or use an unauthenticated connection. The
LDAP client is configured to have a credential level of either
anonymous or
proxy. In the first case, the client does not authenticate to the
directory. In the second case, client authenticates to the directory
using a proxy identity for read access, and using a administrator
identity for write access if
enableShadowUpdate is configured. In the
third case, client authenticates to the directory using a Kerberos
principal that is mapped to an LDAP identity by the LDAP server. Refer to
the chapter on implementing security in the
System Administration Guide: Naming and Directory Services (DNS, NIS, and LDAP) or your appropriate
directory server documentation for identity mapping details.
If a client is configured to use an identity, you can configure which
authentication method the client will use. The LDAP client supports the
following authentication methods:
none simple sasl/CRAM-MD5 sasl/DIGEST-MD5 sasl/GSSAPI tls:none tls:simple tls:sasl/CRAM-MD5 tls:sasl/DIGEST-MD5 Note that some directory servers may not support all of these
authentication methods. For
simple, be aware that the bind password will
be sent in the clear to the LDAP server. For those authentication methods
using TLS (transport layer security), the entire session is encrypted.
You will need to install the appropriate certificate databases to use
TLS. Note that the
tls:none authentication method requires a
credentialLevel of
proxy to take effect.
Commands
The following commands are supported:
init Initialize client from a profile on a server.
manual Manually initialize client with the specified attribute values.
mod Modify attribute values in the configuration file after a manual
initialization of the client.
list Write the contents of the LDAP client cache to standard output in
human readable form.
uninit Uninitialize an LDAP client, assuming that
ldapclient was used to
initialize the client.
genprofile Generate a configuration profile in LDIF format that can then be
stored in the directory for clients to use, with the
init form of
this command.
Attributes
The following attributes are supported:
adminDN Specify the Bind Distinguished Name for the administrator identity
that is used for shadow information update. This option is required
if the credential level is
proxy, and
enableShadowUpdate is set to
true. There is no default value.
adminPassword Specify the administrator password. This option is required if the
credential level is
proxy, and
enableShadowUpdate is set to
true.
There is no default value.
attributeMap Specify a mapping from an attribute defined by a service to an
attribute in an alternative schema. This can be used to change the
default schema used for a given service. The syntax of
attributeMap is defined in the profile IETF draft. This option can be specified
multiple times. The default value for all services is
NULL. In the
example,
attributeMap: passwd:uid=employeeNumber
the LDAP client would use the LDAP attribute
employeeNumber rather
than
uid for the
passwd service. This is a multivalued attribute.
To use rfc2307bis style groups (with a DN rather than username as the
attribute value), map the
memberUid attribute to the group attribute
being used (typically either
uniqueMember or
member), for example:
attributeMap: group:memberUid=uniqueMember
Group membership in a given directory is expected to be maintained
with either username format member attributes, or DN format member
attributes. If both are present they must describe identical
memberships or unexpected results may be obtained. For DN format
attributes, the username is required to be the RDN of the entry. Note
that nested groups are not currently supported, and unexpected
results may be obtained if they are used.
authenticationMethod Specify the default authentication method used by all services unless
overridden by the
serviceAuthenticationMethod attribute. Multiple
values can be specified by using a semicolon-separated list. The
default value is
none. For those services that use
credentialLevel and
credentialLevel is
anonymous, this attribute is ignored. Services
such as
pam_ldap will use this attribute, even if
credentialLevel is
anonymous. The supported authentication methods are described above.
If the authenticationMethod is
sasl/GSSAPI, the
hosts and
ipnodes of
/etc/nsswitch.conf must be configured with DNS support, for example:
hosts: dns files
ipnodes: dns files
bindTimeLimit The maximum time in seconds that a client should spend performing a
bind operation. Set this to a positive integer. The default value is
30.
certificatePath The certificate path for the location of the certificate database.
The value is the path where security database files reside. This is
used for TLS support, which is specified in the
authenticationMethod and
serviceAuthenticationMethod attributes. The default is
/var/ldap.
credentialLevel Specify the credential level the client should use to contact the
directory. The credential levels supported are either
anonymous or
proxy. If a
proxy credential level is specified, then the
authenticationMethod attribute must be specified to determine the
authentication mechanism. Also, if the credential level is
proxy and
at least one of the authentication methods require a bind DN, the
proxyDN and
proxyPassword attribute values must be set. In addition,
if
enableShadowUpdate is set to
true, the
adminDN and
adminPassword values must be set. If a self credential level is specified, the
authenticationMethod must be
sasl/GSSAPI.
defaultSearchBase Specify the default search base DN. There is no default. The
serviceSearchDescriptor attribute can be used to override the
defaultSearchBase for given services.
defaultSearchScope=one | sub Specify the default search scope for the client's search operations.
This default can be overridden for a given service by specifying a
serviceSearchDescriptor. The default is one level search.
defaultServerList A space separated list of server names or server addresses, either
IPv4 or IPv6. If you specify server names, be sure that the LDAP
client can resolve the name without the LDAP name service. You must
resolve the LDAP servers' names by using either
files or
dns. If the
LDAP server name cannot be resolved, your naming service will fail.
The port number is optional. If not specified, the default LDAP
server port number 389 is used, except when TLS is specified in the
authentication method. In this case, the default LDAP server port
number is 636.
The format to specify the port number for an IPv6 address is:
[ipv6_addr]:port
To specify the port number for an IPv4 address, use the following
format:
ipv4_addr:port
If the host name is specified, use the format:
host_name:port
If you use TLS, the LDAP server's hostname must match the hostname in
the TLS certificate. Typically, the hostname in the TLS certificate
is a fully qualified domain name. With TLS, the LDAP server host
addresses must resolve to the hostnames in the TLS certificate. You
must use
files or
dns to resolve the host address.
domainName Specify the DNS domain name. This becomes the default domain for the
machine. The default is the current domain name. This attribute is
only used in client initialization.
enableShadowUpdate=true | false Specify whether the client is allowed to update shadow information.
If set to
true and the credential level is
proxy,
adminDN and
adminPassword must be specified.
followReferrals=true | false Specify the referral setting. A setting of true implies that
referrals will be automatically followed and false would result in
referrals not being followed. The default is true.
objectclassMap Specify a mapping from an
objectclass defined by a service to an
objectclass in an alternative schema. This can be used to change the
default schema used for a given service. The syntax of
objectclassMap is defined in the profile IETF draft. This option can be specified
multiple times. The default value for all services is
NULL. In the
example,
objectclassMap=passwd:posixAccount=unixAccount
the LDAP client would use the LDAP
objectclass of
unixAccount rather
than the
posixAccount for the
passwd service. This is a multivalued
attribute.
preferredServerList Specify the space separated list of server names or server addresses,
either IPv4 or IPv6, to be contacted before servers specified by the
defaultServerList attribute. If you specify server names, be sure
that the LDAP client can resolve the name without the LDAP name
service. You must resolve the LDAP servers' names by using either
files or
dns. If the LDAP server name cannot be resolved, your naming
service will fail.
The port number is optional. If not specified, the default LDAP
server port number 389 is used, except when TLS is specified in the
authentication method. In this case, the default LDAP server port
number is 636.
The format to specify the port number for an IPv6 address is:
[ipv6_addr]:port
To specify the port number for an IPv4 address, use the following
format:
ipv4_addr:port
If the host name is specified, use the format:
host_name:port
If you use TLS, the LDAP server's hostname must match the hostname in
the TLS certificate. Typically, the hostname in the TLS certificate
is a fully qualified domain name. With TLS, the LDAP server host
addresses must resolve to the hostnames in the TLS certificate. You
must use
files or
dns to resolve the host address.
profileName Specify the profile name. For
ldapclient init, this attribute is the
name of an existing profile which may be downloaded periodically
depending on the value of the
profileTTL attribute. For
ldapclient genprofile, this is the name of the profile to be generated. The
default value is
default.
profileTTL Specify the TTL value in seconds for the client information. This is
only relevant if the machine was initialized with a client profile.
If you do not want
ldap_cachemgr(8) to attempt to refresh the LDAP
client configuration from the LDAP server, set
profileTTL to 0
(zero). Valid values are either zero 0 (for no expiration) or a
positive integer in seconds. The default value is 12 hours.
proxyDN Specify the Bind Distinguished Name for the proxy identity. This
option is required if the credential level is
proxy, and at least one
of the authentication methods requires a bind DN. There is no default
value.
proxyPassword Specify client proxy password. This option is required if the
credential level is
proxy, and at least one of the authentication
methods requires a bind DN. There is no default.
searchTimeLimit Specify maximum number of seconds allowed for an LDAP search
operation. The default is 30 seconds. The server may have its own
search time limit.
serviceAuthenticationMethod Specify authentication methods to be used by a service in the form
servicename:
authenticationmethod, for example:
pam_ldap:tls:simple
For multiple authentication methods, use a semicolon-separated list.
The default value is no service authentication methods, in which
case, each service would default to the
authenticationMethod value.
The supported authentications are described above.
Three services support this feature:
passwd-cmd,
keyserv, and
pam_ldap. The
passwd-cmd service is used to define the authentication
method to be used by
passwd(1) to change the user's password and
other attributes. The
keyserv service is used to identify the
authentication method to be used by the
chkey(1) and
newkey(8) utilities. The
pam_ldap service defines the authentication method to
be used for authenticating users when
pam_ldap(7) is configured. If
this attribute is not set for any of these services, the
authenticationMethod attribute is used to define the authentication
method. This is a multivalued attribute.
serviceCredentialLevel Specify credential level to be used by a service. Multiple values can
be specified in a space-separated list. The default value for all
services is
NULL. The supported credential levels are:
anonymous or
proxy. At present, no service uses this attribute. This is a
multivalued attribute.
serviceSearchDescriptor Override the default base DN for LDAP searches for a given service.
The format of the descriptors also allow overriding the default
search scope and search filter for each service. The syntax of
serviceSearchDescriptor is defined in the profile IETF draft. The
default value for all services is
NULL. This is a multivalued
attribute. In the example,
serviceSearchDescriptor=passwd:ou=people,dc=a1,dc=example,dc=com?one
the LDAP client would do a one level search in
ou=people,dc=a1,dc=example,dc=com rather than
ou=people,defaultSearchBase for the
passwd service.
OPTIONS
The following options are supported:
-a attrName=attrValue Specify
attrName and its value. See
SYNOPSIS for a complete list of
possible attribute names and values.
-D bindDN Specifies an entry that has read permission for the requested
database.
-j passwdFile Specify a file containing the password for the bind DN or the
password for the SSL client's key database. To protect the password,
use this option in scripts and place the password in a secure file.
This option is mutually exclusive of the
-w option.
-q Quiet mode. No output is generated.
-v Verbose output.
-w bindPassword Password to be used for authenticating the bind DN. If this parameter
is missing, the command will prompt for a password.
NULL passwords
are not supported in LDAP.
When you use
-w bindPassword to specify the password to be used for
authentication, the password is visible to other users of the system
by means of the
ps command, in script files, or in shell history.
If you supply "
-" (hyphen) as a password, the command will prompt for
a password.
-y passwdFile Specify a file containing the password for the proxy DN. To protect
the password, use this option in scripts and place the password in a
secure file. This option is mutually exclusive of the
-a proxyPassword option.
-z adminrPasswdFile Specify a file containing the password for the
adminDN. To protect
the password, use this option in scripts and place the password in a
secure file. This option is mutually exclusive of the
-a adminPassword option.
OPERANDS
The following operand is supported:
LDAP_server An address or a name for the LDAP server from which the profile will
be loaded. The current naming service specified in the
nsswitch.conf file is used. Once the profile is loaded, the
preferredServerList and
defaultServerList specified in the profile are used.
EXAMPLES
Example 1: Setting Up a Client By Using the Default Profile Stored on a
Specified LDAP Server
The following example shows how to set up a client using the default
profile stored on the specified LDAP server. This command will only be
successful if either the credential level in the profile is set to
anonymous or the authentication method is set to
none.
example#
ldapclient init 172.16.100.1 Example 2: Setting Up a Client By Using the simple Profile Stored on a
Specified LDAP Server
The following example shows how to set up a client using the
simple profile stored on the specified LDAP server. The domainname is set to
xyz.example.com and the proxyPassword is
secret.
example#
ldapclient init -a profileName=simple \ -a domainName=xyz.example.com \ -a proxyDN=cn=proxyagent,ou=profile,dc=xyz,dc=example,dc=com \ -a proxyPassword=secret '['fe80::a00:20ff:fea3:388']':386 Example 3: Setting Up a Client Using Only One Server
The following example shows how to set up a client using only one server.
The authentication method is set to
none, and the search base is
dc=example,dc=com.
example#
ldapclient manual -a authenticationMethod=none \ -a defaultSearchBase=dc=example,dc=com \ -a defaultServerList=172.16.100.1 Example 4: Setting Up a Client Using Only One Server That Does Not Follow
Referrals
The following example shows how to set up a client using only one server.
The credential level is set to
proxy. The authentication method of is
sasl/CRAM-MD5, with the option not to follow referrals. The domain name
is
xyz.example.com, and the LDAP server is running on port number 386 at
IP address
172.16.100.1.
example#
ldapclient manual \ -a credentialLevel=proxy \ -a authenticationMethod=sasl/CRAM-MD5 \ -a proxyPassword=secret \ -a proxyDN=cn=proxyagent,ou=profile,dc=xyz,dc=example,dc=com \ -a defaultSearchBase=dc=xyz,dc=example,dc=com \ -a domainName=xyz.example.com \ -a followReferrals=false \ -a defaultServerList=172.16.100.1:386 Example 5: Using genprofile to Set Only the defaultSearchBase and the
Server Addresses
The following example shows how to use the
genprofile command to set the
defaultSearchBase and the server addresses.
example#
ldapclient genprofile -a profileName=myprofile \ -a defaultSearchBase=dc=eng,dc=sun,dc=com \ -a "defaultServerList=172.16.100.1 172.16.234.15:386" \ > myprofile.ldif Example 6: Creating a Profile on IPv6 servers
The following example creates a profile on IPv6 servers
example#
ldapclient genprofile -a profileName=eng \ -a credentialLevel=proxy \ -a authenticationMethod=sasl/DIGEST-MD5 \ -a defaultSearchBase=dc=eng,dc=example,dc=com \ -a "serviceSearchDescriptor=passwd:ou=people,dc=a1,dc=example,dc=com?one"\ -a preferredServerList= '['fe80::a00:20ff:fea3:388']' \ -a "defaultServerList='['fec0::111:a00:20ff:fea3:edcf']' \ '['fec0::111:a00:20ff:feb5:e41']'" > eng.ldif Example 7: Creating a Profile That Overrides Every Default Value
The following example shows a profile that overrides every default value.
example#
ldapclient genprofile -a profileName=eng \ -a credentialLevel=proxy -a authenticationMethod=sasl/DIGEST-MD5 \ -a bindTimeLimit=20 \ -a defaultSearchBase=dc=eng,dc=example,dc=com \ -a "serviceSearchDescriptor=passwd:ou=people,dc=a1,dc=example,dc=com?one"\ -a serviceAuthenticationMethod=pam_ldap:tls:simple \ -a defaultSearchScope=sub \ -a attributeMap=passwd:uid=employeeNumber \ -a objectclassMap=passwd:posixAccount=unixAccount \ -a followReferrals=false -a profileTTL=6000 \ -a preferredServerList=172.16.100.30 -a searchTimeLimit=30 \ -a "defaultServerList=172.16.200.1 172.16.100.1 192.168.5.6" > eng.ldifEXIT STATUS
The following exit values are returned:
0 The command successfully executed.
1 An error occurred. An error message is output.
2 proxyDN and
proxyPassword attributes are required, but they are not
provided.
FILES
/var/ldap/ldap_client_cred /var/ldap/ldap_client_file Contain the LDAP configuration of the client. These files are not to
be modified manually. Their content is not guaranteed to be human
readable. Use
ldapclient to update them.
/etc/defaultdomain System default domain name, matching the domain name of the data in
the LDAP servers. See
defaultdomain(5).
/etc/nsswitch.conf Configuration file for the name-service switch. See
nsswitch.conf(5).
/etc/nsswitch.ldap Sample configuration file for the name-service switch configured with
LDAP and files.
ATTRIBUTES
See
attributes(7) for descriptions of the following attributes:
+--------------------+-----------------+
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
+--------------------+-----------------+
|Interface Stability | Evolving |
+--------------------+-----------------+
SEE ALSO
chkey(1),
ldap(1),
ldapadd(1),
ldapdelete(1),
ldaplist(1),
ldapmodify(1),
ldapmodrdn(1),
ldapsearch(1),
defaultdomain(5),
nsswitch.conf(5),
resolv.conf(5),
attributes(7),
idsconfig(8),
ldap_cachemgr(8),
ldapaddent(8)CAUTION
Currently
StartTLS is not supported by
libldap.so.5, therefore the port
number provided refers to the port used during a TLS open, rather than
the port used as part of a
StartTLS sequence. To avoid timeout delays,
mixed use of TLS and non-TLS authentication mechanisms is not
recommended.
For example:
-h foo:1000 -a authenticationMethod=tls:simple
...or:
defaultServerList= foo:1000
authenticationMethod= tls:simple
The preceding refers to a raw TLS open on host
foo port 1000, not an
open, StartTLS sequence on an unsecured port 1000. If port 1000 is
unsecured the connection will not be made.
As a second example, the following will incur a significant timeout delay
while attempting the connection to
foo:636 with an unsecured bind.
defaultServerList= foo:636 foo:389
authenticationMethod= simple
November 22, 2021
LDAPCLIENT(8)