xref: /openbsd/usr.bin/ldap/ldap.1 (revision 6e0fd565)
1.\" $OpenBSD: ldap.1,v 1.4 2018/06/13 18:26:03 jmc Exp $
2.\"
3.\" Copyright (c) 2018 Reyk Floeter <reyk@openbsd.org>
4.\"
5.\" Permission to use, copy, modify, and distribute this software for any
6.\" purpose with or without fee is hereby granted, provided that the above
7.\" copyright notice and this permission notice appear in all copies.
8.\"
9.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16.\"
17.Dd $Mdocdate: June 13 2018 $
18.Dt LDAP 1
19.Os
20.Sh NAME
21.Nm ldap
22.Nd simple LDAP client
23.Sh SYNOPSIS
24.Nm ldap
25.Ar command
26.Op Fl LvWxZ
27.Op Fl b Ar basedn
28.Op Fl c Ar CAfile
29.Op Fl D Ar binddn
30.Op Fl H Ar host
31.Op Fl l Ar timelimit
32.Op Fl s Ar scope
33.Op Fl w Ar secret
34.Op Fl z Ar sizelimit
35.Op Ar arguments ...
36.Sh DESCRIPTION
37The
38.Nm
39program is a simple LDAP client program.
40It queries an LDAP server to perform a command and outputs the results
41in the LDAP Data Interchange Format (LDIF).
42.Pp
43The command is as follows:
44.Bl -tag -width Ds
45.It Cm search Ar options Ar filter Op Ar attribute ...
46Perform a directory search request.
47The optional
48.Ar filter
49argument specifies the LDAP filter for the directory search.
50The default is
51.Ar (objectClass=*)
52and the format must comply to the
53.Dq String Representation of Search Filters
54as described in RFC 4515.
55If one or more
56.Ar attribute
57options are specified,
58.Nm
59restricts the output to the specified attributes.
60.El
61.Pp
62The options are as follows:
63.Bl -tag -width Ds
64.It Fl b Ar basedn
65Use the specified distinguished name (dn) as the starting point for
66directory search requests.
67.It Fl c Ar CAfile
68When TLS is enabled, load the CA bundle for certificate verification
69from the specified file.
70The default is
71.Pa /etc/ssl/cert.pem .
72If the LDAP server uses a self-signed certificate,
73use a file that contains the server certificate in PEM format, e.g.
74.Pa /etc/ssl/ldapserver.example.com.crt .
75.It Fl D Ar binddn
76Use the specified distinguished name to bind to the directory.
77.It Fl H Ar host
78The hostname of the LDAP server or an LDAP URL.
79The LDAP URL is described in RFC 4516 with the following format:
80.Pp
81.Sm off
82.Op Ar protocol No ://
83.Ar host Op : Ar port
84.Oo / basedn
85.Op ? Ar attribute , ...
86.Op ? Ar scope
87.Op ? Ar filter
88.Oc
89.Sm on
90.Pp
91The following protocols are supported:
92.Pp
93.Bl -tag -width "ldap+tls" -compact
94.It ldap
95Connect with TCP in plain text.
96This is the default.
97.It ldaps
98Connect with TLS.
99The default port is 636.
100.It ldap+tls
101Connect with TCP and enable TLS using the StartTLS operation.
102This is the same as the
103.Fl Z
104option.
105.It ldapi
106Connect to a UNIX-domain socket.
107The host argument is required to be a URL-encoded path, for example
108.Ar ldapi://%2fvar%2frun%2fldapi
109for
110.Pa /var/run/ldapi .
111.El
112.Pp
113The default is
114.Ar ldap://localhost:389/ .
115.It Fl L
116Output the directory search result in a standards-compliant version of
117the LDAP Data Interchange Format (LDIF).
118This encodes attribute values that include non-printable or UTF-8
119characters in the Base64 format and wraps lines at a 79-character limit.
120If this option is not specified,
121.Nm
122encodes
123.Dq unsafe
124characters and newlines in a visual format using
125.Xr vis 3
126instead.
127.It Fl l Ar timelimit
128Request the server to abort the search request after
129.Ar timelimit
130seconds.
131The default value is 0.
132for no limit.
133.It Fl s Ar scope
134Specify the
135.Ar scope
136to be either
137.Ic base ,
138.Ic one ,
139or
140.Ic sub .
141The default is
142.Ic sub
143for subtree searches.
144.It Fl v
145Product more verbose output.
146.It Fl W
147Prompt for the bind secret with echo turned off.
148.It Fl w Ar secret
149Specify the bind secret on the command line.
150.It Fl x
151Use simple authentication.
152This is the default as
153.Nm
154does not support SASL authentication.
155.It Fl Z
156Enable TLS using the StartTLS operation.
157.It Fl z Ar sizelimit
158Request the server to limit the search result to a maximum number of
159.Ar sizelimit
160entries.
161The default value is 0.
162for no limit.
163.El
164.Sh FILES
165.Bl -tag -width "/etc/ssl/cert.pemXXX" -compact
166.It Pa /etc/ssl/cert.pem
167Default CA file.
168.El
169.Sh EXAMPLES
170The following script can be used with the
171.Ar AuthorizedKeysCommand
172option of
173.Xr sshd 8 :
174.Bd -literal -offset indent
175#!/bin/sh
176ldap search -D cn=Reader,dc=example,dc=com -w mypass123 \e
177	-b ou=People,dc=example,dc=com \e
178	-H ldapserver -c /etc/ssl/ldapserver.crt -Z \e
179	"(&(objectClass=bsdAccount)(uid=$1))" sshPublicKey | \e
180	sed 's/^sshPublicKey: //p;d;'
181exit 0
182.Ed
183.Pp
184And the related configuration in
185.Xr sshd_config 5 :
186.Bd -literal -offset indent
187Match Group ldapusers
188	AuthorizedKeysCommand /etc/ssh/ldap-authorized_keys.sh
189	AuthorizedKeysCommandUser _ldap
190.Ed
191.Sh SEE ALSO
192.Xr sshd_config 5 ,
193.Xr ldapd 8 ,
194.Xr sshd 8
195.Sh STANDARDS
196.Rs
197.%A G. Good
198.%D June 2000
199.%R RFC 2849
200.%T The LDAP Data Interchange Format (LDIF) - Technical Specification
201.Re
202.Pp
203.Rs
204.%A M. Smith, Ed.
205.%A T. Howes
206.%D June 2006
207.%R RFC 4515
208.%T Lightweight Directory Access Protocol (LDAP): String Representation of Search Filters
209.Re
210.Pp
211.Rs
212.%A M. Smith, Ed.
213.%A T. Howes
214.%D June 2006
215.%R RFC 4516
216.%T Lightweight Directory Access Protocol (LDAP): Uniform Resource Locator
217.Re
218.Sh AUTHORS
219.An -nosplit
220The
221.Nm
222program was written by
223.An Reyk Floeter Aq Mt reyk@openbsd.org .
224.Sh CAVEATS
225The
226.Nm
227tool does not support SASL authentication.
228Authentication should be performed using simple authentication over a
229TLS connection.
230