« -: Nov 12, 2008, 09:56 »
Здравейте.
Имам еднa машинка на FreeBSD която искам да настроя да се оторизира посредством OpenLDAP. Успях да я нстроя да се оторизира, и потребителите от LDAP-а могат да се логват в FreeBSD-то. Но имам един малък проблем. Когато се логна от локален потребител на FreeBSD, командата "id" ми дава следното:
uid=2001(kiko) gid=2001(users) groups=2001(users),2004(admins)
а когато се логна с потебител от OpenLDAP ми дава следното:
uid=2002 gid=2000 groups=2000,2004,2006
Явно, защото групите и потребителите който са в OpenLDAP-a ги няма в passwd и group файловете за това не им вади наименованията. (с командата getent passwd не ги изкарва). Но тук идва същественият проблем. Когато потребител, който е от OpenLDAP-а се опита да се свържи с "ssh" от FreeBSD-то към друга машина, FreeBSD-то отговаря:
You don`t exist, go away!
В google намерих, че това съобщение означавали: "an attempt to get the password file entry for your numeric user ID failed". Въпроса ми е как мога да се справя с този проблем, и OpenLDAP потребителите да се разглеждат просто като потребители на системата. Направих го това на Debian и CentOS и работи, но явно в FreeBSD настройките са по специфични.
Прилагам моят nsswitch.conf:
group: files ldap
#group_compat: nis ldap
hosts: files dns
networks: files
passwd: files ldap
#passwd_compat: nis ldap
shells: files
services: compat
services_compat: nis
protocols: files
rpc: files
и /usr/local/etc/ldap.conf
base dc=host,dc=com
uri ldap://10.212.30.9
ldap_version 3
binddn cn=user,dc=host,dc=com
bindpw parolka
bind_policy soft
pam_login_attribute uid
pam_password crypt
nss_base_passwd ou=users,dc=host,dc=com?sub
nss_base_shadow ou=users,dc=host,dc=com?sub
nss_base_group ou=groups,dc=host,dc=com?sub
/usr/local/etc/nss_ldap.conf е линк към /usr/local/etc/ldap.conf
Ако ви трябва още информация, ще пиша отново.
Поздрави.