LDAPCLIENT(8) Maintenance Commands and 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)