Linux使用pam_ldap实现windows ad认证

时间:2022-03-10 14:26:54

配置linux通过ad认证的方法有很多,如samba使用的winbind方式。这里我使用的是pam_ldap方式,网上有很多这样相关的文章,都是按官网上一步步做,先配nsswitch.conf,再配ldap.conf。配置nsswitch.conf的作用是告诉系统去哪里获取到用户的pw信息(如getpwnam,getpwuid等函数调用时用),有时候,我们通常希望将帐号配置在系统的/etc/passwd,只需要使用ad作一个认证,没有必要按官网的步骤一步步来。

首行下载pam_ldap

wget http://www.padl.com/download/pam_ldap.tgz

解压编译安装:

tar -xzvf pam_ldap.tgz

cd pam_ldap

./configure --prefix=/usr --sysconfdir=/etc

mv /usr/lib/security/pam_ldap.so /lib64/security/

修改/etc/ldap.conf如下

Linux使用pam_ldap实现windows ad认证

接触过AD的朋友,我想一眼就能看懂,如果需要调试可以开启debug和logdir,这样就可以知道报错信息。

修改/etc/pam.d/system-auth添加红框部分如下:

Linux使用pam_ldap实现windows ad认证

在ad中新建一个用户,同时在linux系统建相同用户名的帐号,不用设密码,尝试一下可以用ad密码登陆了。

----------------------------以下是另一个网友的配置方案---------------------------------------------

Linux通过LDAP方式,使用windows AD帐户登录linux shell,这个想法很cool吧。

之前配置过一次,但过了太久忘记了,因此,今天把配置方法记录下来。

先说一下环境:

域控服务器:1.1.1.1 域名 123.cc dns就是域控。

linux是CentOS 5.4,使用pam认证方式认证ldap。

在windows 上将域配置好,唯一注意的是,要安装dns服务。域配置好之后,使用静态ip,并在windows网卡配置dns的地方,填上自己的ip,即1.1.1.1,同时,在域中新建一个用户,www.linuxidc.com用户名就用user吧,密码因为windows复杂性密码的要求,使用123qweASD。

linux的配置更加简单,请看配置文件:

# cat /etc/ldap.conf
host 1.1.1.1          //域控的IP
base dc=123,dc=cc
uri ldap://1.1.1.1/    //ldap服务器的uri,一般仅需更改其中的IP
binddn cn=user,cn=Users, dc=123,dc=cc   //dc需要按照域名的每个字节输入。 cn是用户及用户组。
bindpw 123qweASD    //认证用户的密码。
scope sub
debug 1
logdir /var/log
pam_login_attribute     sAMAccountName
pam_filter              objectclass=User
pam_password            ad
#pam_member_attribute    uniquemember
pam_groupdn             OU=Groups,DC=123,DC=CC?sub  //ou是组,dc同上。

# cat /etc/security/group.conf | grep -v "#"
* ; * ; * ; Al0000-2400 ; floppy, audio, cdrom, video, usb, plugdev, burning, users    //此文件不需要修改。

好了,配置完成了。登录的时候,使用域中的账号密码登录即可。



安装时出现出错误:

Node.js configure error: No acceptable C compiler found!Please
解决:yum install gcc

错误:configure: error: Cannot find ldap.h 
解决:yum install openldap openldap-devel