目的:linux系统默认使用自己的Unix用户,我们有时需要多台主机都使用同一个用户,这样的还用户管理就比较麻烦。比较简单的解决方法是配置这些linux主机都使用同一个ldap的用户,这样只需要在ldap中进行用户更改即可,不再需要所有主机都进行更改了。
配置客户端:
a、安装ldap客户端:
yum install nss-pam-ldapd pam_ldap -y
b、图形化配置:
LANG=C authconfig-tui
或者用命令修改:
authconfig --enablemkhomedir --disableldaptls --enableldap --enableldapauth --ldapserver=ldap://110.1.236.51 --ldapbasedn='dc=yinkp,dc=com' --update
cat /etc/sysconfig/authconfig |grep yes
USEMKHOMEDIR=yes
CACHECREDENTIALS=yes
USESHADOW=yes
FORCELEGACY=yes
USELDAPAUTH=yes
USELDAP=yes
USELOCAUTHORIZE=yes
USEPWQUALITY=yes
1、增加/etc/openldap/ldap.conf
BASE dc=yinkp,dc=com
URI ldap://10.1.236.51:389
2、修改 /etc/nsswitch.conf中sss为ldap
passwd: files sss
shadow: files sss
group: files sss
netgroup: files sss
3、 修改/etc/pam.d/system-auth,/etc/pam.d/password-auth
pam_sss.so 替换为pam_ldap.so
sed -i 's/pam_sss.so/pam_ldap.so/g' /etc/pam.d/system-auth
sed -i 's/pam_sss.so/pam_ldap.so/g' /etc/pam.d/password-auth
4、修改sssd配置文件:
vi /etc/sssd/sssd.conf
[domain/default]
ldap_search_base = dc=yinkp,dc=com
id_provider = ldap
auth_provider = ldap
chpass_provider = ldap
ldap_uri = ldap://10.1.236.51/
autofs_provider = ldap
cache_credentials = True
krb5_realm = ocdp
krb5_server = host-10-1-236-51
ldap_id_use_start_tls = False
ldap_tls_cacertdir = /etc/openldap/cacerts
[sssd]
services = nss, pam, autofs
config_file_version = 2
domains = default
[nss]
homedir_substring = /home
5、修改nslcd配置文件:
vi /etc/nslcd.conf
uri ldap://10.1.236.51/
base dc=yinkp,dc=com
ssl no
6、重启nslcd/sssd
service nslcd restart
service sssd restart
验证:
切换为系统中没有,ldap中有的用户。如果OK,则成功。
ldapsearch -x -b 'ou=people,dc=yinkp,dc=com'
su - [ldapuser]
批量修改主机使用ldap用户:
分发上面已经配置好的主机上的文件到其它linux主机
注:如果没有分发脚本,也可以一个一个文件scp
deploy.sh /etc/sysconfig/authconfig /etc/sysconfig/ all
deploy.sh /etc/openldap/ldap.conf /etc/openldap/ all
deploy.sh /etc/nsswitch.conf /etc/ all
deploy.sh /etc/pam.d/system-auth /etc/pam.d/ all
deploy.sh /etc/sssd/sssd.conf /etc/sssd/ all
deploy.sh /etc/nslcd.conf /etc/ all
重启nslcd/sssd服务
runRemoteCmd.sh "/bin/systemctl restart nslcd.service && /bin/systemctl restart sssd.service" ldap_client