实用脚本能自动配置LDAP服务吗?

wen 实用脚本 2

本文目录导读:

实用脚本能自动配置LDAP服务吗?

  1. 脚本功能
  2. 自动配置OpenLDAP的Shell脚本
  3. 使用方法
  4. 验证LDAP服务是否正常
  5. 注意事项与扩展建议

是的,完全可以通过脚本自动配置LDAP服务(如OpenLDAP),以下是一个基于 Debian/Ubuntu 系统的实用Shell脚本示例,用于自动安装和配置OpenLDAP服务器,并创建基础目录结构。


脚本功能

  1. 安装 slapdldap-utils
  2. 设置管理员密码
  3. 配置基础域名(DC)
  4. 添加组织单元(OU)和示例用户/组

自动配置OpenLDAP的Shell脚本

#!/bin/bash
# ========== 用户自定义变量 ==========
LDAP_DOMAIN="example.com"
LDAP_ADMIN_PASSWORD="admin123"
LDAP_ORG="Example Corp"
# ===================================
# 检查root权限
if [ "$(id -u)" != "0" ]; then
    echo "此脚本需要root权限,请使用sudo执行"
    exit 1
fi
echo "=== 开始自动配置LDAP服务 ==="
# 安装OpenLDAP服务
apt-get update -qq
apt-get install -y -qq slapd ldap-utils
# 生成管理员密码哈希(SSHA)
ADMIN_HASH=$(slappasswd -s "$LDAP_ADMIN_PASSWORD")
# 停止slapd服务进行配置
systemctl stop slapd
# 删除默认配置,重新初始化
rm -rf /etc/ldap/slapd.d/*
# 创建基础LDIF配置文件
cat > /etc/ldap/slapd.conf <<EOF
include         /etc/ldap/schema/core.schema
include         /etc/ldap/schema/cosine.schema
include         /etc/ldap/schema/nis.schema
include         /etc/ldap/schema/inetorgperson.schema
pidfile         /var/run/slapd/slapd.pid
argsfile        /var/run/slapd/slapd.args
database        mdb
suffix          "dc=${LDAP_DOMAIN%.*},dc=${LDAP_DOMAIN#*.}"
rootdn          "cn=admin,dc=${LDAP_DOMAIN%.*},dc=${LDAP_DOMAIN#*.}"
rootpw          $ADMIN_HASH
directory       /var/lib/ldap
index           objectClass eq,pres
index           ou,cn,mail,surname,givenname eq,pres,sub
access to attrs=userPassword
        by dn="cn=admin,dc=${LDAP_DOMAIN%.*},dc=${LDAP_DOMAIN#*.}" write
        by anonymous auth
        by self write
        by * none
access to *
        by dn="cn=admin,dc=${LDAP_DOMAIN%.*},dc=${LDAP_DOMAIN#*.}" write
        by * read
EOF
# 将配置转换为slapd.d格式
mkdir -p /etc/ldap/slapd.d
slaptest -f /etc/ldap/slapd.conf -F /etc/ldap/slapd.d
chown -R openldap:openldap /etc/ldap/slapd.d
chown -R openldap:openldap /var/lib/ldap
# 启动slapd
systemctl start slapd
systemctl enable slapd
echo "=== LDAP服务已启动 ==="
# 导入基础目录结构
cat > /tmp/base.ldif <<EOF
dn: dc=${LDAP_DOMAIN%.*},dc=${LDAP_DOMAIN#*.}
dc: ${LDAP_DOMAIN%.*}
objectClass: top
objectClass: dcObject
objectClass: organization
o: $LDAP_ORG
dn: cn=admin,dc=${LDAP_DOMAIN%.*},dc=${LDAP_DOMAIN#*.}
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: admin
description: LDAP administrator
dn: ou=People,dc=${LDAP_DOMAIN%.*},dc=${LDAP_DOMAIN#*.}
ou: People
objectClass: top
objectClass: organizationalUnit
dn: ou=Groups,dc=${LDAP_DOMAIN%.*},dc=${LDAP_DOMAIN#*.}
ou: Groups
objectClass: top
objectClass: organizationalUnit
EOF
ldapadd -x -D "cn=admin,dc=${LDAP_DOMAIN%.*},dc=${LDAP_DOMAIN#*.}" -w "$LDAP_ADMIN_PASSWORD" -f /tmp/base.ldif
if [ $? -eq 0 ]; then
    echo "基础目录结构已创建成功!"
else
    echo "基础目录结构创建失败,请检查配置"
    exit 1
fi
# 可选:添加一个示例用户和组
cat > /tmp/testuser.ldif <<EOF
dn: uid=testuser,ou=People,dc=${LDAP_DOMAIN%.*},dc=${LDAP_DOMAIN#*.}
uid: testuser
cn: Test User
sn: User
mail: testuser@${LDAP_DOMAIN}
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
userPassword: {SSHA}${ADMIN_HASH#*SSHA}
dn: cn=testgroup,ou=Groups,dc=${LDAP_DOMAIN%.*},dc=${LDAP_DOMAIN#*.}
cn: testgroup
objectClass: top
objectClass: groupOfUniqueNames
uniqueMember: uid=testuser,ou=People,dc=${LDAP_DOMAIN%.*},dc=${LDAP_DOMAIN#*.}
EOF
ldapadd -x -D "cn=admin,dc=${LDAP_DOMAIN%.*},dc=${LDAP_DOMAIN#*.}" -w "$LDAP_ADMIN_PASSWORD" -f /tmp/testuser.ldif
echo "示例用户和组已添加"
echo "=== LDAP配置完成 ==="
echo "LDAP地址: ldap://127.0.0.1"
echo "管理DN: cn=admin,dc=${LDAP_DOMAIN%.*},dc=${LDAP_DOMAIN#*.}"
echo "管理员密码: $LDAP_ADMIN_PASSWORD"

使用方法

  1. 将脚本保存为 ldap-setup.sh
  2. 修改变量(根据需要):
    • LDAP_DOMAIN:你的域名(如 example.com
    • LDAP_ADMIN_PASSWORD:管理员密码(生产环境建议使用强密码)
    • LDAP_ORG:组织名称
  3. 赋予执行权限并运行
    chmod +x ldap-setup.sh
    sudo ./ldap-setup.sh

验证LDAP服务是否正常

# 检查服务状态
systemctl status slapd
# 查询基础目录
ldapsearch -x -D "cn=admin,dc=example,dc=com" -w "admin123" -b "dc=example,dc=com"

注意事项与扩展建议

注意点 说明
仅适用于初次安装 如果已存在LDAP配置,请先备份 /etc/ldap/var/lib/ldap
密码安全 实际生产环境应将密码存储在外部安全变量或Pass
防火墙 确保开放端口389(LDAP)或636(LDAPS)
TLS/SSL 如需加密传输,建议后续添加证书配置

如果需要支持 Red Hat/CentOS/Rocky Linux,只需将 apt-get 改为 yumdnf,并调整路径(如 /etc/openldap/slapd.d),需要其他扩展(如ACL、复制、Schema定制)的版本,请随时告知!

抱歉,评论功能暂时关闭!