我有同样的问题,以上答案都没有解决它。这是我在 Ubuntu 18.04 和 kali 上完成的配置
我们需要遵循的步骤如下
- 安装 libpam-ldap / libnss-ldap Ubuntu:
apt-get install libpam-ldap
卡利 Linux:
apt-get install libpam-ldap libnss-ldapd
配置 ldap 设置
dpkg-reconfigure libpam-ldap
将所有设置为是并创建本地数据库:是
base : ou-People,dc=sqtk,dc=team
root dn : dc=admin,dc=sqtk,dc=team
询问的每个选项都应该是(将数据库存储在本地是并指定 ldap 管理员用户名和密码)对于数据库内容仅使用管理员用户
- 更改 /etc/nsswitch.conf 让 passwd 、 group 、 shadow 使用ldap和netgroup到nis
/etc/nsswitch.conf
passwd: files ldap
group: files ldap
shadow: files ldap
gshadow: files
hosts: files mdns4_minimal [NOTFOUND=return] dns myhostname
networks: files
protocols: db files
services: db files
ethers: db files
rpc: db files
netgroup: nis
注意:将 netgroup 更改为 nis(网络信息系统),这表示组也是从 nis 从 netgroup 中获取的,因此在下面的步骤中我们进行组映射(我的假设,不要质疑它,它有效)
现在我们可以使用以下命令验证是否可以连接到 ldap 服务器
ldapsearch -x -W -D 'cn=ldaptest,ou=People,dc=sqtk,dc=team' -b "" -s base
3.一旦用户登录,我们需要设置创建一个主目录,这是通过使用pam_mkhomedir.so实现的(通过执行 find find / -name pam_mkhomedir.so 验证它是否存在,如果不存在则安装它应该是默认存在)
3.1 目前当我们运行命令时
pam-auth-config
我们没有看到 mkhomedir 的选项(创建用户登录时需要的主目录) 3.2 要获得此选项,如果不存在以下内容,我们需要创建一个文件 /usr/share/pam-configs/mkhomedir
内容 :
Name: activate mkhomedir
Default: yes
Priority: 900
Session-Type: Additional
Session:
required pam_mkhomedir.so umask=0022 skel=/etc/skel
3.3 现在如果我们运行命令
pam-auth-config
我们看到了mkhomedir的选项,所以我们也需要选择它(我们通过使用键盘上的空格来选择选项) 3.4 要验证是否设置了 mkhomedir,我们可以cat /etc/pam.d/common-session
归档并查看如下条目(不要手动编辑文件尝试使用 pam -auth-update only ) 它将具有如下条目
session required pam_mkhomedir.so umask=0022 skel=/etc/skel
- ldap 域到组映射
4.1 我们需要用 ldap 组技术做一个域映射 这个映射只不过是我们将 ldap 组名映射到本地 ldap 的组 id。
我遇到了一个问题,我曾经在本地系统上获取组 id 即 > 500 的 ldap 组,但不知何故,系统无法获取给定 id 的组名,所以我在下面进行了配置
4.2 要将本地组分配给域 (ldap) 用户,请执行以下编辑/etc/security/group.conf
并添加如下内容
*;*;*;Al0000-2400;audio,cdrom,dialout,floppy
4.3 为了让 pam_group 模块工作,您可以创建一个文件,如/usr/share/pam-configs/my_groups
:
Name: activate /etc/security/group.conf
Default: yes
Priority: 900
Auth-Type: Primary
Auth:
required pam_group.so use_first_pass
现在我们通过运行来激活它
pam-auth-update
这大致相当于/etc/pam.d/common-auth
手动编辑并在任何 pam_ldap 和 pam_krb5 设置之前添加以下行:
auth required pam_group.so use_first_pass
重要 # 您现在应该为通过 gdm 和 ssh 登录的用户显示本地组,并且可以
通过 # 执行 id 或组来验证这一点。
4.4 现在我们需要验证我们是否只获得了组名和 id 使用下面的命令
getent group
如果命令不起作用或显示验证您是否可以连接到 ldap 服务器
您还可以通过触发以下命令来验证我们是否可以从 ldap 获取用户
getent passwd
id <username in ldap>
再次,如果上述命令中的任何一个都没有按照接受的方式执行,那么验证我们是否可以成功连接到 ldap 使用以下命令
ldapsearch -x -W -D 'cn=bumbum,ou=People,dc=sqtk,dc=team' -b "" -s base
-W == prompt for password
-D == User to validate
ldap 组被授予 sudo 访问权限 授予对 ldap 上存在的组的 sudo 访问权限,并确保用户属于您登录的同一组
visudo % 全部=(全部)全部
如果组名是 ldaptest 则需要添加以下行
%ldaptest ALL=(ALL) ALL
您应该能够从桌面和终端登录
(注意:要使上述工作正常工作,请为kali Linux安装libnss-ldapd软件包,然后才能正常工作)