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