На данный момент это вся моя тестовая база данных ldap:
# extended LDIF
#
# LDAPv3
# base <dc=ldap,dc=example,dc=com> (default) with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#
# ldap.example.com
dn: dc=ldap,dc=example,dc=com
dc: ldap
description: Root for Test LDAP server
objectClass: top
objectClass: dcObject
objectClass: organization
o: Test
# People, ldap.example.com
dn: ou=People,dc=ldap,dc=example,dc=com
ou: People
objectClass: top
objectClass: organizationalUnit
description: All people in Test
# Group, ldap.example.com
dn: ou=Group,dc=ldap,dc=example,dc=com
ou: Group
objectClass: top
objectClass: organizationalUnit
description: All groups in Test
# Hosts, ldap.example.com
dn: ou=Hosts,dc=ldap,dc=example,dc=com
ou: Hosts
objectClass: top
objectClass: organizationalUnit
description: All hosts in Test
# HostGroups, ldap.example.com
dn: ou=HostGroups,dc=ldap,dc=example,dc=com
ou: HostGroups
objectClass: top
objectClass: organizationalUnit
description: All host groups in Test
# client1, Hosts, ldap.example.com
dn: cn=client1,ou=Hosts,dc=ldap,dc=example,dc=com
objectClass: hostGroup
objectClass: ipHost
objectClass: top
cn: client1
ipHostNumber: 192.168.56.21
# client2, Hosts, ldap.example.com
dn: cn=client2,ou=Hosts,dc=ldap,dc=example,dc=com
objectClass: hostGroup
objectClass: ipHost
objectClass: top
cn: client2
ipHostNumber: 192.168.56.22
# client3, Hosts, ldap.example.com
dn: cn=client3,ou=Hosts,dc=ldap,dc=example,dc=com
objectClass: hostGroup
objectClass: ipHost
objectClass: top
cn: client3
ipHostNumber: 192.168.56.23
# group1, HostGroups, ldap.example.com
dn: cn=group1,ou=HostGroups,dc=ldap,dc=example,dc=com
objectClass: hostGroup
objectClass: authorizedServiceObject
objectClass: top
authorizedService: sshd
hostmemberIP: 192.168.56.21
hostmemberIP: 192.168.56.23
cn: group1
# group2, HostGroups, ldap.example.com
dn: cn=group2,ou=HostGroups,dc=ldap,dc=example,dc=com
objectClass: hostGroup
objectClass: authorizedServiceObject
objectClass: top
authorizedService: sshd
hostmemberIP: 192.168.56.22
cn: group2
# users, Group, ldap.example.com
dn: cn=users,ou=Group,dc=ldap,dc=example,dc=com
cn: users
objectClass: posixGroup
objectClass: top
gidNumber: 701
memberUid: abhinav
memberUid: akumar
# admins, Group, ldap.example.com
dn: cn=admins,ou=Group,dc=ldap,dc=example,dc=com
objectClass: posixGroup
objectClass: top
gidNumber: 702
cn: admins
memberUid: abhinavk
# abhinav, People, ldap.example.com
dn: uid=abhinav,ou=People,dc=ldap,dc=example,dc=com
uid: abhinav
cn: abhinav
objectClass: account
objectClass: posixAccount
objectClass: top
uidNumber: 1000
gidNumber: 701
homeDirectory: /home/abhinav
loginShell: /bin/bash
gecos: abhinav
userPassword:: e1NTSEF9NitwODhYZHZnSjliZnJKcElHamdteXhsdUJDSlorNmI=
# akumar, People, ldap.example.com
dn: uid=akumar,ou=People,dc=ldap,dc=example,dc=com
uid: akumar
cn: akumar
objectClass: account
objectClass: posixAccount
objectClass: top
uidNumber: 1001
gidNumber: 701
homeDirectory: /home/akumar
loginShell: /bin/bash
gecos: akumar
userPassword:: e1NTSEF9NVdJdS9yTkIrUlRWelJJMWxHY2UvVzJXNGxmUjYwZ04=
# abhinavk, People, ldap.example.com
dn: uid=abhinavk,ou=People,dc=ldap,dc=example,dc=com
uid: abhinavk
cn: abhinavk
objectClass: account
objectClass: posixAccount
objectClass: top
uidNumber: 1002
gidNumber: 702
homeDirectory: /home/abhinavk
loginShell: /bin/bash
gecos: abhinavk
userPassword:: e1NTSEF9NVdJdS9yTkIrUlRWelJJMWxHY2UvVzJXNGxmUjYwZ04=
# search result
search: 2
result: 0 Success
# numResponses: 16
# numEntries: 15
Может быть n
количество групп узлов и m
количество групп пользователей.
Так можно ли разрешить определенным группам пользователей доступ только к определенным группам хостов? **
Например:
группа cn=admins,ou=Group,dc=ldap,dc=example,dc=com
должен иметь доступ ко всем хостам в группе хостов cn=group1,ou=HostGroups,dc=ldap,dc=example,dc=com
и "cn = group2, ou = HostGroups, dc = ldap, dc = example, dc = com"
группа cn=users,ou=Group,dc=ldap,dc=example,dc=com
должен иметь доступ только к хостам в группе хостов cn=group1,ou=HostGroups,dc=ldap,dc=example,dc=com
.
Я пытался поискать в Интернете помощь. не нашел ничего полезного.
Приведенная выше структура LDAP основана на моем понимании этот пост здесь.
Сервер ldap и клиентская ОС - CentOS 6.x, а версия сервера ldap - openldap-servers-2.4.39-8.el6.x86_64
С пятницы застряли на этом. Я предполагаю, что что-то нужно сделать с ACL на сервере ldap и базовым URL-адресом поиска в клиентах ldap. На самом деле не уверен, что именно нужно делать.
Обновите это
Чтение этот пост здесь, дал мне идею полностью отказаться от групп узлов сети и вместо этого использовать обычные группы для каждого типа узлов сети. начал с нуля (но очень похож на структуру выше). Я создал объект groupOfMembers (в основном posixGroup с полем member в нем) и начал делать группы и пользователей его частью.
Например:
# gt1, Group, ldap.example.com
dn: cn=gt1,ou=Group,dc=ldap,dc=example,dc=com
objectClass: posixGroup
objectClass: groupOfMembers
objectClass: top
gidNumber: 703
cn: gt1
member: cn=admins,ou=Group,dc=ldap,dc=example,dc=com
member: cn=user1,ou=People,dc=ldap,dc=example,dc=com
member: cn=users,ou=Group,dc=ldap,dc=example,dc=com
admins и users - это другие группы с участниками, а user1 - это учетная запись пользователя. Я также добавил это в файл /etc/pam_ldap.conf на стороне клиента:
pam_groupdn cn=gt1,ou=Group,dc=ldap,dc=example,dc=com
pam_member_attribute member
теперь, когда я вхожу в систему с пользователем user1, я могу это сделать. но когда я пробую это с другим пользователем admin (часть группы администраторов) и appuser (часть группы пользователей), я получаю это сообщение об ошибке:
Для входа вы должны быть участником cn = gt1, ou = Group, dc = ldap, dc = example, dc = com.
Могу ли я использовать DN другой группы в поле члена группы и заставить pam_ldap работать?
Механизм hostgroup является частью структуры tcpwrapper. Тем не менее, tcpwrapper не знает о логинах пользователей и обрабатывает только пары IP-хостов и их права доступа.
Хотя sshd может использовать tcpwrapper для управления доступом на основе хоста, эти ограничения tcpwrapper, конечно, наследуются.
Я убедился, что простое создание фрагментов файла конфигурации из LDAP с помощью сценария иногда является хорошим решением. Есть и другие способы решить эту проблему, то есть вы можете заставить nslcd (для libpam-ldapd) на серверах использовать установщики LDAP, которые позволяют им загружать только пользователей связанной группы.