Copyright (C) 2008-2021 Oliver Bohlen.
Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
A copy of the license is included in the section entitled "GNU Free Documentation License".
This documentation comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law.
This is an example how you can authenticate your System-Accounts over PAM or SASLAuthD against LDAP. Users can change their passwords in LDAP with the passwd command as usual.
If you want to use this solution you need the following howto(s) finished:
emerge sys-auth/pam_ldap emerge sys-auth/nss_ldap
File permissions:
Owner: root
Group: root
Permissions: -rw-r--r--
Click here for a download of the complete file: /etc/conf.d/saslauthd
Changed on 18.05.09If you are using SASL for some authentications you should point to a configuration file with your LDAP settings.
SASLAUTHD_OPTS="-a pam"After change
SASLAUTHD_OPTS="-O /etc/saslauthd.conf -a ldap"
File permissions:
Owner: root
Group: root
Permissions: -rw-r--r--
Click here for a download of the complete file: /etc/crontab
Changed on 02.12.09Run the checkusers-script hourly
42 * * * * root /usr/local/sbin/checkusers.sh 2>&1 | ifne mail -s "Checkusers-Script" root
File permissions:
Owner: root
Group: root
Permissions: -rw-r--r--
Click here for a download of the complete file: /etc/ldap.conf.old
Changed on 18.05.09The LDAP BaesDN
base dc=padl,dc=comAfter change
base dc=example,dc=com
This is for accepting a self-signed SSL/TLS certificate
pam_login_attribute uid:caseExactMatch: tls_reqcert allow
File permissions:
Owner: root
Group: root
Permissions: -rw-r--r--
Click here for a download of the complete file: /etc/nsswitch.conf
Changed on 18.05.09The order how to check for passwd, shadow and group
group: files gshadow: filesAfter change
group: files ldap #gshadow: files
The order how to check for passwd, shadow and group
#passwd: filesAfter change
passwd: files ldap
The order how to check for passwd, shadow and group
shadow: filesAfter change
shadow: files ldap
File permissions:
Owner: root
Group: root
Permissions: -rw-r--r--
Click here for a download of the complete file: /etc/pam.d/system-auth
Changed on 18.05.09Authenticate with LDAP
auth required pam_unix.so try_first_pass likeauth nullokAfter change
auth sufficient pam_unix.so try_first_pass likeauth nullok auth sufficient pam_ldap.so use_first_pass #auth optional pam_smbpass.so migrate use_first_pass auth required pam_deny.so
Authenticate with LDAP
account sufficient pam_ldap.so
File permissions:
Owner: root
Group: root
Permissions: -rw-r--r--
Click here for a download of the complete file: /etc/pam.d/system-auth
Changed on 18.05.09Authenticate with LDAP
password required pam_unix.so try_first_pass use_authtok nullok sha512 shadowAfter change
password sufficient pam_unix.so try_first_pass use_authtok nullok sha512 shadow password sufficient pam_ldap.so use_authtok use_first_pass password required pam_deny.so
Authenticate with LDAP
session optional pam_ldap.so
File permissions:
Owner: root
Group: root
Permissions: -rw-r--r--
Click here for a download of the complete file: /etc/saslauthd.conf
Changed on 18.05.09If you are using SASL for some authentications you should configure the LDAP access for SASL here.
ldap_servers: ldaps://127.0.0.1:636 ldap_search_base: ou=Users,ou=People,dc=example,dc=com ldap_scope: one ldap_uidattr: uid ldap_filter: uid:caseExactMatch:=%U
File permissions:
Owner: root
Group: root
Permissions: -rwx------
Click here for a download of the complete file: /usr/local/sbin/checkusers.sh
Changed on 02.12.09This is a script I use to create a HomeDir and a Mailbox if a new LDAP-User is created. I depends on your environment if you can use ist.
#!/bin/bash . /etc/profile nscd --invalidate=group nscd --invalidate=passwd for i in `getent passwd | cut -d":" -f 3` do if [ $i -gt 999 ] then if [ $i -lt 8999 ] then # Get Infos USER=`getent passwd $i | cut -d":" -f 1` USERID=`getent passwd $i | cut -d":" -f 3` HOMEDIR=`getent passwd $i | cut -d":" -f 6` GROUP=`getent passwd $i | cut -d":" -f 4` LNAME="`getent passwd $i | cut -d':' -f 5`" #echo "Checking User $USER" # Check for non existing HomeDir if ! [ -d $HOMEDIR ] then echo "Creating Homedir $HOMEDIR for $USER ($i)" mkdir -p $HOMEDIR chown $USER:$GROUP $HOMEDIR chmod 0700 $HOMEDIR fi # Check for existing Backup-Dir if ! [ -d /srv/share/Backups/home/$USER ] then echo "Creating BackupDir /srv/share/Backups/home/$USER for $USER ($i)" mkdir -p /srv/share/Backups/home/$USER chown $USER:$GROUP /srv/share/Backups/home/$USER chmod 0700 /srv/share/Backups/home/$USER fi # SSH KEYs if ! [ -e $HOMEDIR/.ssh/id_ed25519 ] then echo "Generating openssh-key $USER for pubkey Auth e.g. for backups" su - $USER -c "ssh-keygen -q -t ed25519 -f $HOMEDIR/.ssh/id_ed25519 -N ''" fi # if ! [ -e $HOMEDIR/.ssh/dropbear.key ] # then # echo "Generating dropbear-key for pubkey Auth e.g. for syncopoli-backups" # mkdir -p $HOMEDIR/.ssh # su - $USER -c "dropbearkey -t ecdsa -f $HOMEDIR/.ssh/dropbear.key 2>/dev/null | grep ecdsa >>$HOMEDIR/.ssh/authorized_keys" # chown -R $USER:$GROUP $HOMEDIR/.ssh # chmod 644 $HOMEDIR/.ssh/authorized_keys # chmod 600 $HOMEDIR/.ssh/dropbear.key # chmod 700 $HOMEDIR/.ssh # fi # Check weather a mailbox exists if ! [ $USER = "admin" ] then if /usr/local/sbin/cyr-show-mailboxes | grep "^user.$USER" >/dev/null then echo "Mailbox for User $USER OK" >/dev/null else echo "Creating Mailbox for $USER" /usr/local/sbin/cyr-create-mbox user/$USER 100 fi # Check/Recreate removed folders like Trash /usr/local/sbin/cyr-create-mbox user/$USER fi # DMS User if id $USER | grep -q '2023(dms)' then if ! [ -d /home/${USER}/DMS ] then echo "Creating DMS mailbox/dirs/files for $USER" /usr/local/sbin/cyr-create-mbox user/${USER}dms mkdir -p /home/${USER}/DMS/Upload /home/${USER}/DMS/.done touch /home/${USER}/DMS/.dmsdel /home/${USER}/DMS/control chown -R ${USER} /home/${USER}/DMS fi fi fi fi done chmod 700 /home/* su - mailman -c "/usr/local/sbin/maillists.sh >/dev/null 2>&1"
Please send a feedback to: doc<at>gabosh.net
Howto listingHere you can find the official Gentoo Linux Forums where you can find a lot of answers.
Here a link to the official Gentoo Linux Homepage.