Skip to content
  • Kurt Zeilenga's avatar
    Patch: 'ldapmodify -y file' reads password from file (ITS#2031) · 8de258d2
    Kurt Zeilenga authored
                ================
    Written by Hallvard B. Furuseth and placed into the public domain.
    This software is not subject to any license of the University of Oslo.
                ================
    Adapted by Kurt Zeilenga for inclusion in OpenLDAP.  My comments are
    marked with enclosed with square brackets (e.g. [Kurt's comment] below.
                ================
    
    If I run ldapmodify & co from a script, I don't want to use '-W password'
    because the password shows up in the output of 'ps' for everyone,
    and I can't pipe the password to 'ldapmodify -w' because -w uses
    getpassphrase() which reads from the tty instead of stdin.
    So I added '-y file' which reads the password from file.  The programs
    exit if the file cannot be read.
    
    [Complete contents of file is used as password.  Use:
    	echo -n "secret" > password
    to create a file with "secret" as the password.  The -n avoids
    adding a newline (which would invalidate the password).  Note
    that echo is a builtin and hence its arguments are not visible
    to 'ps'.]
    
    I changed ldapmodify, ldapmodrdn, ldapdelete, ldapsearch, ldapcompare.
    I did not bother to change ldappasswd and ldapwhoami, because they
    prompt for many passwords.  [I fixed up ldapwhoami.]
    
    Rerun autoconf after applying this patch. [Done.]
    
    Note:  I do not know if Windows NT has fstat(), so I set HAVE_FSTAT to
    undef in portable.nt.  (fstat() is used to warn if the file is publicly
    readable or writeable.)  [I used fstat() to set the buffer size to
    read.]
    
    [Note: using the contents of a file extends the tools to support
    passwords which could not normally be provided using getpassphrase()
    or via the command line.]
    
    Hallvard B. Furuseth <h.b.furuseth@usit.uio.no>, Aug 2002.
    [Kurt D. Zeilenga <kurt@openldap.org>, Aug 2002.]
    8de258d2