我的 PDC 使用 Samba 3.6 和 LDAP(最新版本),只要我使用 hdb 作为后端,它就能正常工作。不过,我将后端更改为 sql 后,尝试重新启动 slapd 守护程序时收到以下错误:
Segmentation fault
当我在 slapd.conf 上运行 slaptest 时,也没有收到任何结果,既没有成功也没有失败。
我的服务器是 Ubuntu 12.4 LTS,我也测试了 PostgreSQL 安装,它运行良好。有人知道吗?分段错误到底是什么意思?
这是我的slapd.conf:
# This is the main slapd configuration file. See slapd.conf(5) for more
# info on the configuration options.
#######################################################################
# Global Directives:
# Features to permit
#allow bind_v2
# Schema and objectClass definitions
include /etc/ldap/schema/core.schema
include /etc/ldap/schema/cosine.schema
include /etc/ldap/schema/nis.schema
include /etc/ldap/schema/inetorgperson.schema
include /etc/ldap/schema/samba.schema
include /etc/ldap/schema/misc.schema
# Where the pid file is put. The init.d script
# will not stop the server if you change this.
pidfile /var/run/slapd/slapd.pid
# List of arguments that were passed to the server
argsfile /var/run/slapd/slapd.args
# Read slapd.conf(5) for possible values
loglevel none
# Where the dynamically loaded modules are stored
modulepath /usr/lib/ldap
moduleload back_hdb
moduleload back_sql
# The maximum number of entries that is returned for a search operation
sizelimit 500
# The tool-threads parameter sets the actual amount of cpu's that is used
# for indexing.
tool-threads 1
#######################################################################
# Specific Backend Directives for @BACKEND@:
# Backend specific directives apply to this backend until another
# 'backend' directive occurs
backend sql
#######################################################################
# Specific Directives for database #1, of type @BACKEND@:
# Database specific directives apply to this databasse until another
# 'database' directive occurs
database sql
# The base of your directory in database #1
suffix "dc=example,dc=local"
# rootdn directive for specifying a superuser on the database. This is needed
# for syncrepl.
rootdn "cn=admin,dc=example,dc=local"
rootpw secret
dbname PgSQL
dbuser test
dbpasswd test
insentry_stmt "insert into ldap_entries (id,dn,oc_map_id,parent,keyval) values ((select max(id)+1 from ldap_entries),?,?,?,?)"
upper_func "upper"
strcast_func "text"
concat_pattern "?||?"
has_ldapinfo_dn_ru no
schemacheck on
lastmod off
# The userPassword by default can be changed
# by the entry owning it if they are authenticated.
# Others should not be able to see it, except the
# admin entry below
# These access lines apply to database #1 only
access to attrs=userPassword,sambaNTPassword,sambaLMPassword
by dn="cn=admin,dc=example,dc=local" write
by anonymous auth
by self write
by * none
# Ensure read access to the base for things like
# supportedSASLMechanisms. Without this you may
# have problems with SASL not knowing what
# mechanisms are available and the like.
# Note that this is covered by the 'access to *'
# ACL below too but if you change that as people
# are wont to do you'll still need this if you
# want SASL (and possible other things) to work
# happily.
access to dn.base="" by * read
# The admin dn has full write access, everyone else
# can read everything.
access to *
by dn="cn=admin,dc=example,dc=local" write
by * read
这是我使用 strace slapd 发现的错误:
reza@pdc2:-$ sudo strace slapd
open("/home/reza/.odbcinst.ini", O_RDONLY) = -1 EACCES (Permission denied)
reza@pdc2:-$ls -l /home/reza/.odbcinst.ini
-rw-r--r-- 1 root root 473 April 24 15:51 /home/reza/.odbcinst.ini