0

如果你能给我一些关于我做错了什么的建议,你会让我很高兴。我一直在努力解决这个问题,没有运气,我有点绝望。

  • 我在 Windows Xp 上安装了一个带有 LDAP 服务器的虚拟机。它是 Apache 目录工作室。
  • 然后我有另一个虚拟机,上面有 Xubuntu。我希望它向 Apache Directory Studio 进行身份验证。
  • 两台机器可以互相看到并正确执行ping操作。

服务器部分(带有 Apache Directory Studio LDAP 服务器的 Windows XP):

  • 服务器运行良好,我在其上创建了一个域 dc=mydomain,dc=com,上面有两个 ou,ou=People 和 ou=Groups。
  • 做了一些 posixAccounts 和一些 posixGroup。选择高 uid 数(2000 年以后)以避免冲突。
  • 服务器端一切正常。

客户端部分(Xubuntu):

  • 以 root 身份输入。
  • 做过:

    apt-get 安装 libnss-ldap

  • 配置了我的 LDAP 服务器的 ip(检查它,它是“pingable”)。

LDAP 服务器 IP

  • 然后进入我的域,例如:dc=mydomain,dc=com。
  • 然后选择我的服务器正在运行的 LDAP 版本:

LDAP 版本

  • 然后选择“是”“使本地根数据库管理员”
  • 选择“否”“LDAP 数据库是否需要登录?” .
  • 然后选择LDAP服务器管理员的登录名和密码。这是 100% 确认为真实的实际登录,在 Apache Directory Studio 中检查并多次验证。

根

  • 将密码加密系统设置为“清除”。
  • 好的,我知道 Apache Directory Studio 正在监听 10389 而不是 389,所以我转到 /etc/ldap.conf 并手动将端口从 389 更改为 10389(389 是默认值,GUI 不会让你改变)。
  • 然后它可以工作,但只能通过终端,如果我这样做的话

    su 测试用户

它有效,因为我只在 LDAP 服务器中获得了该用户,当我与其他用户一起测试时它不起作用。getent passwd testuser 也是如此。

  • 然后我想做图形登录,我关闭会话,输入凭据,但它不起作用。它可以在终端中运行,但是使用 GUI 时不行,天哪,为什么?

  • PS:是否 apt-get install nscd (为某人工作)但对我没有效果。

  • PS2:提前感谢您的时间和耐心,并考虑这个问题(这不是严格的编程问题)。
  • PS3:我创建了 /home/testuser 目录,它并没有因此而失败,因为它仍然无法通过 GUI 登录到 LDAP(但可以通过终端工作)。
4

5 回答 5

2

您的问题是 GDM 尝试关注

自动创建主文件夹

只需手动编辑并在任何和设置/etc/pam.d/common-session之前添加以下行:pam_ldappam_krb5

session required        pam_mkhomedir.so umask=0022 skel=/etc/skel

确保您有 gdm 条目/etc/security/group.conf

并在以下行/etc/pam.d/gdm

auth optional pam_group.so
于 2013-02-20T16:07:03.650 回答
2

对于使用 X 登录的用户,必须修改 /etc/pam.d/gdm 以便 GDM 使用 LDAP。就像是:

auth     sufficient     pam_ldap.so
auth     required       pam_nologin.so
auth     required       pam_env.so
auth     required       pam_unix_auth.so

account  sufficient     pam_ldap.so
account  required       pam_unix_acct.so

password required       pam_ldap.so

session  sufficient     pam_ldap.so
session  required       pam_unix_session.so
于 2013-02-28T14:46:11.623 回答
0

回答太晚了,但可能会帮助其他人,因为我完成了这个。

在终端使用

sudo nano /etc/pam.d/common-auth

在底部添加这些行auth required pam_access.so

在这个文件中sudo nano /etc/security/access.conf

-:ALL EXCEPT root (admin):ALL EXCEPT LOCAL在底部添加这一行

有关详细信息:使用 LDAP 验证客户端计算机

谢谢。

于 2014-01-08T08:33:54.223 回答
0

您应该能够执行

getent passwd

形成命令行并显示用户是否从 LDAP 服务器返回。应该显示来自 /etc/passwd 的所有用户和来自 LDAP 的用户。

于 2013-02-21T11:44:51.227 回答
0

我有同样的问题,以上答案都没有解决它。这是我在 Ubuntu 18.04 和 kali 上完成的配置

我们需要遵循的步骤如下

  1. 安装 libpam-ldap / libnss-ldap Ubuntu:

apt-get install libpam-ldap

卡利 Linux:

apt-get install libpam-ldap libnss-ldapd
  1. 配置 ldap 设置

    dpkg-reconfigure libpam-ldap

将所有设置为是并创建本地数据库:是

base : ou-People,dc=sqtk,dc=team

root dn : dc=admin,dc=sqtk,dc=team

询问的每个选项都应该是(将数据库存储在本地是并指定 ldap 管理员用户名和密码)对于数据库内容仅使用管理员用户

  1. 更改 /etc/nsswitch.conf 让 passwd 、 group 、 shadow 使用ldapnetgroupnis

/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
  1. 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 
  1. ldap 组被授予 sudo 访问权限 授予对 ldap 上存在的组的 sudo 访问权限,并确保用户属于您登录的同一组

    visudo % 全部=(全部)全部

如果组名是 ldaptest 则需要添加以下行

%ldaptest ALL=(ALL) ALL 

您应该能够从桌面和终端登录

(注意:要使上述工作正常工作,请为kali Linux安装libnss-ldapd软件包,然后才能正常工作)

于 2018-10-11T11:51:56.483 回答