Вобщем настроил на сервере контроллер.
Samba 3.6
Openldap 2.4 клиент/сервер
nss_ldap
pam_ldap из портов.
Как контроллер работает все нормально. Пользователей видит, все хорошо. Встала задача, добавить авторизацию через pam_ldap. Нужно в частности для ftp сервера proftpd.
У меня стоит версия 1.3.4b судя по всему прямой поддежки лдап авторизации у нее нет, видимо убрали в этой версии.
Вобщем проблема в настройке pam_ldap. Никак не хочет работать. Вот конфиги имеющие отношение к проблеме. /usr/local/etc/openldap/slapd.conf
include /usr/local/etc/openldap/schema/core.schema
include /usr/local/etc/openldap/schema/cosine.schema
include /usr/local/etc/openldap/schema/inetorgperson.schema
include /usr/local/etc/openldap/schema/misc.schema
include /usr/local/etc/openldap/schema/nis.schema
include /usr/local/etc/openldap/schema/openldap.schema
include /usr/local/etc/openldap/schema/samba.schemapidfile /var/run/openldap/slapd.pid
argsfile /var/run/openldap/slapd.args
loglevel -1
logfile /var/log/slapd.log
modulepath /usr/local/libexec/openldap
moduleload back_bdb
database bdb
suffix "dc=bcity,dc=local"
rootdn "cn=root,dc=bcity,dc=local"
rootpw {SSHA}rbMALk0oE1jqeQnxjTsp6OJvwapI8yK1
directory /var/db/openldap-data
index objectClass,uid,uidNumber,gidNumber eq
index cn,mail,surname,givenname eq,subinitial
index sambaSID eq
index sambaPrimaryGroupSID eq
index sambaDomainName eq
access to attrs=userPassword
by self write
by anonymous auth
by * none
access to attrs=sambaLMPassword,sambaNTPassword
by dn="cn=root,dc=bcity,dc=local" write
by * none
access to *
by self write
by anonymous read
by * none
/usr/local/etc/nss_ldap.conf
host 192.168.1.254
base dc=bcity,dc=localldap_version 3
port 389
scope one
timelimit 30
bind_timelimit 10
bind_policy soft
nss_connect_policy persist
idle_timelimit 3600
nss_paged_results yes
pagesize 1000
nss_base_passwd ou=users,dc=bcity,dc=local?one
nss_base_group ou=groups,dc=bcity,dc=local?one
nss_base_shadow ou=users,dc=bcity,dc=local?one
/usr/local/etc/ldap.conf
host 127.0.0.1
base dc=bcity,dc=local
uri ldapi://%2fvar%2frun%2fopenldap%2fldapi/
ldap_version 3
binddn cn=root,dc=bcity,dc=local
bindpw password
rootbinddn cn=root,dc=bcity,dc=local
port 389
scope one
timelimit 30
bind_timelimit 30
nss_reconnect_tries 4
nss_reconnect_sleeptime 1
nss_reconnect_maxsleeptime 10
nss_reconnect_maxconntries 2
bind_policy soft
idle_timelimit 3600
pam_filter objectclass=top
pam_login_attribute uid
pam_min_uid 0
pam_max_uid 65530
pam_password SSHA
nss_base_passwd ou=users,dc=bcity,dc=local?one
nss_base_group ou=groups,dc=bcity,dc=local?one
nss_base_shadow ou=users,dc=bcity,dc=local?one
/etc/nsswithc.conf
group: files ldap
group_compat: nis
hosts: files dns
networks: files
passwd: files ldap
passwd_compat: nis
shells: files
services: compat
services_compat: nis
protocols: files
rpc: files
shadow: files ldap
При загрузке в /var/log/messages выдает такое:
Oct 16 11:05:22 pdcbc slapd[1287]: nss_ldap: could not search LDAP server - Server is unavailable
Oct 16 11:05:22 pdcbc slapd[1287]: nss_ldap: could not search LDAP server - Server is unavailable
O
Покапался в интернете, вроде все сводится к тому, что проблема разовая при загрузке. Связана с тем что nss_ldap стартует раньше slapd, если не повторяется при запросах то и бог с ним. Возможно перегружен сервер, но в моем случае это вряд ли.
top показывает нулевую загрузку.
Хотя есть один странным момент, когда логинишься после ввода имени пользователя идет большая задержка перед приглашением ввести пароль, видимо что то ищет. Возможно как раз и пытаесят связаться с сервером. Хотя не должен, потому что в pam.d ничего не менял связанное с ssh.
/etc/pam.d/ftp
auth sufficient pam_opie.so no_warn no_fake_prompts
auth requisite pam_opieaccess.so no_warn allow_local
auth required pam_unix.so no_warn try_first_pass
auth sufficient /usr/local/lib/pam_ldap.so no_warnaccount required pam_nologin.so
account required pam_unix.so
account sufficient /usr/local/lib/pam_ldap.so
session required pam_permit.so
/usr/local/etc/proftpd.conf
ServerName "B-city FTP servet"
ServerType standalone
DefaultServer on
ScoreboardFile /var/run/proftpd/proftpd.scoreboard
Port 21
AuthPAM on
Umask 022
MaxInstances 30
CommandBufferSize 512
RootLogin on
User nobody
Group nogroup
DefaultRoot / root
DefaultRoot /usr/local/www/pdcbc/ bcity
AllowOverwrite on
<Limit SITE_CHMOD>
DenyAll
</Limit>
Авторизация не проходит, в логах пишет следущее:
/var/log/messages
Oct 16 11:32:14 pdcbc proftpd: pam_ldap: error trying to bind as user "uid=admin,ou=users,dc=bcity,dc=local" (Invalid credentials)
/var/log/auth.log
pdcbc proftpd[1985]: pdcbc (192.168.1.5[192.168.1.5]) - USER admin (Login failed): Incorrect password.
/var/log/debug.log
Oct 16 11:45:25 pdcbc slapd[2088]: conn=1002 fd=10 ACCEPT from IP=127.0.0.1:50502 (IP=127.0.0.1:389)
Oct 16 11:45:25 pdcbc slapd[2088]: conn=1002 op=0 BIND dn="cn=root,dc=bcity,dc=local" method=128
Oct 16 11:45:25 pdcbc slapd[2088]: conn=1002 op=0 BIND dn="cn=root,dc=bcity,dc=local" mech=SIMPLE ssf=0
Oct 16 11:45:25 pdcbc slapd[2088]: conn=1002 op=0 RESULT tag=97 err=0 text=
Oct 16 11:45:25 pdcbc slapd[2088]: connection_input: conn=1002 deferring operation: binding
Oct 16 11:45:25 pdcbc slapd[2088]: conn=1002 op=1 SRCH base="" scope=0 deref=0 filter="(objectClass=*)"
Oct 16 11:45:25 pdcbc slapd[2088]: conn=1002 op=1 SRCH attr=supportedControl
Oct 16 11:45:25 pdcbc slapd[2088]: conn=1002 op=1 SEARCH RESULT tag=101 err=0 nentries=1 text=
Oct 16 11:45:25 pdcbc slapd[2088]: conn=1002 op=2 SRCH base="sambaDomainName=BCITY,dc=bcity,dc=local" scope=2 deref=0 filter="(objectClass=sambaTrustedDomainPassword)"
Oct 16 11:45:25 pdcbc slapd[2088]: conn=1002 op=2 SRCH attr=sambaDomainName sambaSID
Oct 16 11:45:25 pdcbc slapd[2088]: conn=1002 op=2 SEARCH RESULT tag=101 err=0 nentries=0 text=
Oct 16 11:45:29 pdcbc slapd[2088]: conn=1003 fd=15 ACCEPT from IP=192.168.1.254:22511 (IP=192.168.1.254:389)
Oct 16 11:45:29 pdcbc slapd[2088]: conn=1003 op=0 BIND dn="" method=128
Oct 16 11:45:29 pdcbc slapd[2088]: conn=1003 op=0 RESULT tag=97 err=0 text=
Oct 16 11:45:29 pdcbc slapd[2088]: connection_input: conn=1003 deferring operation: binding
Oct 16 11:45:29 pdcbc slapd[2088]: conn=1003 op=1 SRCH base="ou=users,dc=bcity,dc=local" scope=1 deref=0 filter="(&(objectClass=posixAccount)(uid=admin))"
Oct 16 11:45:29 pdcbc slapd[2088]: conn=1003 op=1 SRCH attr=uid userPassword uidNumber gidNumber cn homeDirectory loginShell gecos description objectClass shadowLastChange shadowMax shadowExpire loginClass
Oct 16 11:45:29 pdcbc slapd[2088]: conn=1003 op=1 SEARCH RESULT tag=101 err=0 nentries=1 text=
Oct 16 11:45:29 pdcbc slapd[2088]: conn=1003 op=2 SRCH base="ou=groups,dc=bcity,dc=local" scope=1 deref=0 filter="(&(objectClass=posixGroup)(gidNumber=10001))"
Oct 16 11:45:29 pdcbc slapd[2088]: conn=1003 op=2 SRCH attr=cn userPassword memberUid uniqueMember gidNumber
Oct 16 11:45:29 pdcbc slapd[2088]: conn=1003 op=2 SEARCH RESULT tag=101 err=0 nentries=1 text=
Oct 16 11:45:29 pdcbc slapd[2088]: conn=1003 op=3 SRCH base="ou=users,dc=bcity,dc=local" scope=1 deref=0 filter="(&(objectClass=posixAccount)(uid=admin))"
Oct 16 11:45:29 pdcbc slapd[2088]: conn=1003 op=3 SRCH attr=uid userPassword uidNumber gidNumber cn homeDirectory loginShell gecos description objectClass shadowLastChange shadowMax shadowExpire loginClass
Oct 16 11:45:29 pdcbc slapd[2088]: conn=1003 op=3 SEARCH RESULT tag=101 err=0 nentries=1 text=
Oct 16 11:45:29 pdcbc slapd[2088]: conn=1003 op=4 SRCH base="ou=groups,dc=bcity,dc=local" scope=1 deref=0 filter="(&(objectClass=posixGroup)(gidNumber=10001))"
Oct 16 11:45:29 pdcbc slapd[2088]: conn=1003 op=4 SRCH attr=cn userPassword memberUid uniqueMember gidNumber
Oct 16 11:45:29 pdcbc slapd[2088]: conn=1003 op=4 SEARCH RESULT tag=101 err=0 nentries=1 text=
Oct 16 11:45:29 pdcbc slapd[2088]: conn=1003 op=5 SRCH base="ou=users,dc=bcity,dc=local" scope=1 deref=0 filter="(&(objectClass=posixAccount)(uid=admin))"
Oct 16 11:45:29 pdcbc slapd[2088]: conn=1003 op=5 SEARCH RESULT tag=101 err=0 nentries=1 text=
Oct 16 11:45:29 pdcbc slapd[2088]: conn=1003 op=6 SRCH base="ou=groups,dc=bcity,dc=local" scope=1 deref=0 filter="(&(objectClass=posixGroup)(|(memberUid=admin)(uniqueMember=uid=admin,ou=users,dc=bcity,dc=local)))"
Oct 16 11:45:29 pdcbc slapd[2088]: conn=1003 op=6 SRCH attr=gidNumber
Oct 16 11:45:29 pdcbc slapd[2088]: <= bdb_equality_candidates: (memberUid) not indexed
Oct 16 11:45:29 pdcbc slapd[2088]: <= bdb_equality_candidates: (uniqueMember) not indexed
Oct 16 11:45:29 pdcbc slapd[2088]: conn=1003 op=6 SEARCH RESULT tag=101 err=0 nentries=1 text=
Oct 16 11:45:29 pdcbc slapd[2088]: conn=1003 op=7 SRCH base="ou=groups,dc=bcity,dc=local" scope=1 deref=0 filter="(&(objectClass=posixGroup)(uniqueMember=cn=admins,ou=groups,dc=bcity,dc=local))"
Oct 16 11:45:29 pdcbc slapd[2088]: conn=1003 op=7 SRCH attr=gidNumber
Oct 16 11:45:29 pdcbc slapd[2088]: <= bdb_equality_candidates: (uniqueMember) not indexed
Oct 16 11:45:29 pdcbc slapd[2088]: conn=1003 op=7 SEARCH RESULT tag=101 err=0 nentries=0 text=
Oct 16 11:45:29 pdcbc slapd[2088]: conn=1003 op=8 SRCH base="ou=groups,dc=bcity,dc=local" scope=1 deref=0 filter="(&(objectClass=posixGroup)(gidNumber=10001))"
Oct 16 11:45:29 pdcbc slapd[2088]: conn=1003 op=8 SRCH attr=cn userPassword memberUid uniqueMember gidNumber
Oct 16 11:45:29 pdcbc slapd[2088]: conn=1003 op=8 SEARCH RESULT tag=101 err=0 nentries=1 text=
Oct 16 11:45:29 pdcbc slapd[2088]: conn=1003 op=9 SRCH base="ou=groups,dc=bcity,dc=local" scope=1 deref=0 filter="(&(objectClass=posixGroup)(gidNumber=10000))"
Oct 16 11:45:29 pdcbc slapd[2088]: conn=1003 op=9 SRCH attr=cn userPassword memberUid uniqueMember gidNumber
Oct 16 11:45:29 pdcbc slapd[2088]: conn=1003 op=9 SEARCH RESULT tag=101 err=0 nentries=1 text=
Oct 16 11:45:29 pdcbc slapd[2088]: conn=1003 op=10 UNBIND
Oct 16 11:45:29 pdcbc slapd[2088]: conn=1003 fd=15 closed
Oct 16 11:45:29 pdcbc slapd[2088]: conn=1004 fd=17 ACCEPT from IP=192.168.1.254:54238 (IP=192.168.1.254:389)
Oct 16 11:45:29 pdcbc slapd[2088]: conn=1004 op=0 BIND dn="" method=128
Oct 16 11:45:29 pdcbc slapd[2088]: conn=1004 op=0 RESULT tag=97 err=0 text=
Oct 16 11:45:29 pdcbc slapd[2088]: connection_input: conn=1004 deferring operation: binding
Oct 16 11:45:29 pdcbc slapd[2088]: conn=1004 op=1 SRCH base="ou=users,dc=bcity,dc=local" scope=1 deref=0 filter="(&(objectClass=posixAccount)(uid=admin))"
Oct 16 11:45:29 pdcbc slapd[2088]: conn=1004 op=1 SRCH attr=uid userPassword uidNumber gidNumber cn homeDirectory loginShell gecos description objectClass shadowLastChange shadowMax shadowExpire loginClass
Oct 16 11:45:29 pdcbc slapd[2088]: conn=1004 op=1 SEARCH RESULT tag=101 err=0 nentries=1 text=
Oct 16 11:45:29 pdcbc slapd[2088]: conn=1004 op=2 SRCH base="ou=users,dc=bcity,dc=local" scope=1 deref=0 filter="(&(objectClass=posixAccount)(uid=admin))"
Oct 16 11:45:29 pdcbc slapd[2088]: conn=1004 op=2 SRCH attr=uid userPassword uidNumber gidNumber cn homeDirectory loginShell gecos description objectClass shadowLastChange shadowMax shadowExpire loginClass
Oct 16 11:45:29 pdcbc slapd[2088]: conn=1004 op=2 SEARCH RESULT tag=101 err=0 nentries=1 text=
Oct 16 11:45:29 pdcbc slapd[2088]: conn=1005 fd=15 ACCEPT from PATH=/var/run/openldap/ldapi (PATH=/var/run/openldap/ldapi)
Oct 16 11:45:29 pdcbc slapd[2088]: conn=1005 op=0 BIND dn="cn=root,dc=bcity,dc=local" method=128
Oct 16 11:45:29 pdcbc slapd[2088]: conn=1005 op=0 BIND dn="cn=root,dc=bcity,dc=local" mech=SIMPLE ssf=0
Oct 16 11:45:29 pdcbc slapd[2088]: conn=1005 op=0 RESULT tag=97 err=0 text=
Oct 16 11:45:29 pdcbc slapd[2088]: connection_input: conn=1005 deferring operation: binding
Oct 16 11:45:29 pdcbc slapd[2088]: conn=1005 op=1 SRCH base="ou=users,dc=bcity,dc=local" scope=1 deref=0 filter="(&(objectClass=posixAccount)(uid=admin))"
Oct 16 11:45:29 pdcbc slapd[2088]: conn=1005 op=1 SRCH attr=host authorizedService shadowExpire shadowFlag shadowInactive shadowLastChange shadowMax shadowMin shadowWarning uidNumber
Oct 16 11:45:29 pdcbc slapd[2088]: conn=1005 op=1 SEARCH RESULT tag=101 err=0 nentries=1 text=
Oct 16 11:45:29 pdcbc slapd[2088]: conn=1005 op=2 BIND anonymous mech=implicit ssf=0
Oct 16 11:45:29 pdcbc slapd[2088]: conn=1005 op=2 BIND dn="uid=admin,ou=users,dc=bcity,dc=local" method=128
Oct 16 11:45:29 pdcbc slapd[2088]: conn=1005 op=2 RESULT tag=97 err=49 text=
Oct 16 11:45:29 pdcbc slapd[2088]: conn=1005 op=3 BIND dn="cn=root,dc=bcity,dc=local" method=128
Oct 16 11:45:29 pdcbc slapd[2088]: conn=1005 op=3 BIND dn="cn=root,dc=bcity,dc=local" mech=SIMPLE ssf=0
Oct 16 11:45:29 pdcbc slapd[2088]: conn=1005 op=3 RESULT tag=97 err=0 text=
Oct 16 11:45:29 pdcbc slapd[2088]: conn=1004 op=3 SRCH base="ou=users,dc=bcity,dc=local" scope=1 deref=0 filter="(&(objectClass=posixAccount)(uid=admin))"
Oct 16 11:45:29 pdcbc slapd[2088]: conn=1004 op=3 SRCH attr=uid userPassword uidNumber gidNumber cn homeDirectory loginShell gecos description objectClass shadowLastChange shadowMax shadowExpire loginClass
Oct 16 11:45:29 pdcbc slapd[2088]: conn=1004 op=3 SEARCH RESULT tag=101 err=0 nentries=1 text=
Собственно если сразу выделить ту часть где ошибка 49
Oct 16 11:45:29 pdcbc slapd[2088]: connection_input: conn=1005 deferring operation: binding
Oct 16 11:45:29 pdcbc slapd[2088]: conn=1005 op=1 SRCH base="ou=users,dc=bcity,dc=local" scope=1 deref=0 filter="(&(objectClass=posixAccount)(uid=admin))"
Oct 16 11:45:29 pdcbc slapd[2088]: conn=1005 op=1 SRCH attr=host authorizedService shadowExpire shadowFlag shadowInactive shadowLastChange shadowMax shadowMin shadowWarning uidNumber
Oct 16 11:45:29 pdcbc slapd[2088]: conn=1005 op=1 SEARCH RESULT tag=101 err=0 nentries=1 text=
Oct 16 11:45:29 pdcbc slapd[2088]: conn=1005 op=2 BIND anonymous mech=implicit ssf=0
Oct 16 11:45:29 pdcbc slapd[2088]: conn=1005 op=2 BIND dn="uid=admin,ou=users,dc=bcity,dc=local" method=128
Oct 16 11:45:29 pdcbc slapd[2088]: conn=1005 op=2 RESULT tag=97 err=49 text=
таких мест там пару есть.
Может что то не так со структурой базы: Вот что я добавлял в базу:
dn: dc=bcity,dc=local
objectClass: dcObject
objectClass: organization
objectClass: top
dc: bcity
o: bcitydn: ou=users,dc=bcity,dc=local
objectClass: top
objectClass: organizationalUnit
ou: users
dn: ou=groups,dc=bcity,dc=local
objectClass: top
objectClass: organizationalUnit
ou: groups
dn: ou=computers,dc=bcity,dc=local
objectClass: top
objectClass: organizationalUnit
ou: computers
команда:
ldapsearch -H ldap://192.168.1.254:389 -x -W -b "ou=users,dc=bcity,dc=local" -D "uid=admin,ou=users,dc=bcity,dc=local" "objectclass=organizationalUnit" uid userPassword
после проверки пароля выдает
Enter LDAP Password:
ldap_bind: Invalid credentials (49)
В логах пишет следущее:
Oct 16 12:10:42 pdcbc slapd[1881]: conn=1000 fd=10 ACCEPT from IP=192.168.1.254:59431 (IP=192.168.1.254:389)
Oct 16 12:10:42 pdcbc slapd[1881]: conn=1000 op=0 BIND dn="uid=admin,ou=users,dc=bcity,dc=local" method=128
Oct 16 12:10:42 pdcbc slapd[1881]: conn=1000 op=0 RESULT tag=97 err=49 text=
Oct 16 12:10:42 pdcbc slapd[1881]: conn=1000 op=1 UNBIND
Oct 16 12:10:42 pdcbc slapd[1881]: conn=1000 fd=10 closed
ну и на последок
]# ps -ax | grep slapd
1881 ?? Is 0:00.02 /usr/local/libexec/slapd -h ldapi://%2fvar%2frun%2fopenldap%2fldapi/ ldap://192.168.1.254/ ldap://127.0.0.1/ -u ldap -g ldap
Подскажите куда копать, все уже перепробовал. Никак не хочет авторизоваться.
Дело тут не в фтп. Пробовал в pam.d/login меня на pam_ldap.so ошибки те же самые, результат тот же.