搭建ldap,samba和nfs 统一认证服务

本文详细介绍如何在CentOS 7上安装配置LDAP,并与Samba及NFS结合使用实现统一认证。涵盖从安装OpenLDAP到配置Samba、NFS的具体步骤。

经过2天的摸索,基本把ldap理明白了。下面是ldap在centos7上的安装步骤,包括与samba和NFS使用ldap认证的配置。中间遇到许多坑,会在其他文章里介绍。

为什么要用ldap呢?

      ldap主要用作统一认证服务器,samba和nfs提供文件共享的服务。比如要使用samba做文件共享,在windows中访问共享文件是需要输入用户名密码,验证通过后才可以读或者写文件。在未配置ldap服务器以前,samba用户信息在本地保存,也就是说如果有多个samba服务器则需要在多台机器上重复建立认证账户信息,管理不方便。建立ldap后就可以将需要认证的用户全部放到ldap服务器上,这样就可以避免重复建立samba的认证账户,方便统一管理账户信息。

不管有没有配置ldap,samba的用户认证都有自己独立的一套密码与系统用户和ldap用户分开管理,提高安全性,在ldap中samba密码是用户类的一个属性。本人曾经尝试使用ldap用户密码或者系统密码认证samba,包括使用插件或者PAM认证,但是均为成功,目前只发现可以双向同步samba和系统用户密码的配置或者插件(samba-tools)。


下面方法亲测可用。欢迎大家拍砖指正。

1. 安装openldap

    #  yum install openldap-servers openldap-clients

     # yum install -y openldap openldap-clients openldap-servers migrationtools

2.生成密码

    #  slappasswd

3.修改sldap.conf,没有的话,新建一个

    #  vi /etc/openldap/slapd.conf

    -----------------------------------------------------------------------------------------

    include /etc/openldap/schema/core.schema

    include /etc/openldap/schema/cosine.schema

    include /etc/openldap/schema/inetorgperson.schema

    include /etc/openldap/schema/nis.schema

    include /etc/openldap/schema/samba.schema

    allow bind_v2

    pidfile /var/run/openldap/slapd.pid

    argsfile /var/run/openldap/slapd.args

    database bdb

    suffix "dc=srv,dc=world"

    rootdn "cn=root,dc=srv,dc=world"

    rootpw {SSHA}tTKkeFCUudih3Vk5u3Or0qvzdelUa6ka   //替换成之前生成的密码

    password-hash {SSHA}

    directory /var/lib/ldap

    index cn,sn,uid,displayName pres,sub,eq

    index uidNumber,gidNumber eq

    index sambaSID eq

    index sambaPrimaryGroupSID eq

    index sambaDomainName eq

    index objectClass pres,eq

    index default sub

    --------------------------------------------------------------------------------------------------------------

4. 清空并生成sldap.d 文件夹文件

    #  cd  /etc/openldap/slapd.d

    #  rm -rf *

5. 重新生成 sldap.d文件夹内容和数据库文件

    #  cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG    #DB的配置文件

    #  slaptest -f /etc/openldap/slapd.conf  -F /etc/openldap/slapd.d

    #  slaptest -u -f /etc/openldap/slapd.conf  -F /etc/openldap/slapd.d

    #  chown -R ldap:ldap /etc/openldap/

    

6. 配置模板文件basedomain.ldif

    # vi basedomain.ldif

    --------------------------------------------------------

dn: dc=srv,dc=world
objectClass: top
objectClass: dcObject
objectclass: organization
o: Server World
dc: Srv

dn: cn=root,dc=srv,dc=world
objectClass: organizationalRole
cn: root
description: Directory Manager

dn: ou=People,dc=srv,dc=world
objectClass: organizationalUnit
ou: People

dn: ou=Group,dc=srv,dc=world
objectClass: organizationalUnit
ou: Group

    -------------------------------------------------------------------

7. 生成需要加入ldap中的用户文件

          #   getent passwd | tail -n 2 > /root/users
          #   getent group | tail -n 2 > /root/groups
        #   getent shadow | tail -n 2 > /root/shadow    //(获得需要的用户密码文件)
        #   cd /usr/share/migrationtools
         注:在7部分的以下几步操作均在/usr/share/migrationtools目录下进行】
          7. 1 修改ldap 密码生成工具
                  #   vim migrate_passwd.pl
                注:search /etc/shadow and replace it into /root/shadow on Line Number 188.】
                  188:  /etc/shadow ---->  /root/shadow
     7.2 修改migrate_tools的公共文件
     # vi migrate_common.ph
     -------------------------------------------------------
                 61:   $NAMINGCONTEXT{'passwd'}            = "ou=People";
                              $NAMINGCONTEXT{'group'}             = "ou=Group";
                71:   $DEFAULT_MAIL_DOMAIN = "srv.world";
                                    # Default base
                                   $DEFAULT_BASE = "dc=srv,dc=world";
                                 $EXTENDED_SCHEMA = 1;
     ---------------------------------------------------------------
   7. 3  生成用户的ldif 文件 users.ldif ,准备加入到ldap中。
                       #  ./migrate_passwd.pl  /root/users > users.ldif
                     #  ./migrate_group.pl /root/groups > groups.ldif
                     #   ldapadd -x -D cn=root,dc=srv,dc=world -W -f basedomain.ldif
                      #   ldapadd -x -D cn=root,dc=srv,dc=world -W -f users.ldif
          7. 4  检验ldap是否设置成功,数据检测
                       #   ldapsearch -x -b "dc=srv,dc=world" -H  ldap://127.0.0.1
          7.  5  删除 资源,
         【注: 非必须步骤,当用户加入后,在加入时就会出错,需要先删除再加入】
                      #  ldapdelete -x -D "cn=root,dc=srv,dc=world" -w 123456 "uid=ldapuser1,ou=People,dc=srv,dc=world"

8.重启 slapd 服务
    #  systemctl restart slapd


【开始设置samba 配置文件】

1. 配置samba的配置文件

  # vi /etc/samba/smb.config

----------------------------------------

    [global]

        workgroup = TEST

        netbios name = OSGW

        passdb backend = ldapsam:ldap://localhost

        ldap admin dn = "cn=root,dc=srv,dc=world"

        ldap ssl = off

        ldap suffix = "dc=srv,dc=world"

        #security = user

        ldap user suffix = "ou=People"

        ldap group suffix = "ou=Group"

        #unix password sync = yes      # 红色部分是密码同步部分

        #ldap password sync = yes

        #pam password change = yes

    [public]

        path = /home/guests

        browseable = yes

        writable = yes

        guest ok = yes

        create mask = 0666

        directory mask = 0777

-------------------------------------------------------------

2. 配置samba对ldap操作密码

    #  smbpasswd -w 123456  


3. 测试smb的配置文件

    #  testparm


4. 添加samba用户。

【注:添加的用户必须是ldap的系统用户ldapuser1 ,ldapuser2。添加在ldap中不存在的用户会failed】

    #  pdbedit -a ldapuser1   

5.重启服务

    #  systemctl restart smb


【开始配置NFS服务】

1.用root权限设置ldap客户端 authconfig-tui

    #  yum install nss-pam-ldapd pam_ldap openldap-clients


2. 运行 authconfig-tui 配置客户端

【注:空格键为选择和不选择】



3.  填写server和base DN 

Server项可以填写IP地址或者域名,端口默认389


4. 选择ok后,可以切换到ldap 的user

    #  su ldapuser1

    输入 passwd

   root 切换到 ldap 用户不用passwd,其他用户切换则需要输入ldap用户的密码】


参考文章:

http://www.server-world.info/en/note?os=CentOS_7&p=openldap&f=1   //日本人写的,精细规范,主要参考部署ldap server 部分
http://ly36843.blog.51cto.com/3120113/1673892  //centos6.4 配置ldap服务器

http://luyx30.blog.51cto.com/1029851/1220819/   //ldap 和nfs

http://blog.youkuaiyun.com/post_yuan/article/details/53129735  //ldap 的正确安装方式

http://wenku.baidu.com/link?url=nSTpGJ4fELHdjgo7I6eDIgkjXwdguJEv-_O2Y7aIoDzyYyID2f6Bt0acFACoduAuGjrurcC1iUohiP8_UHXsFgBfSckQscrzwxg4LZgsh2C  //LDAP扫盲

http://download.gna.org/smbldap-tools/docs/samba-ldap-howto/  //权威


<think>我们正在使用LDAP服务器进行公司账号管理。根据引用内容,我们可以搭建一个LDAP服务器,然后配置客户端机器使用该LDAP服务器进行认证。同时,我们可以使用phpldapadmin这样的Web工具来管理LDAP目录。步骤概览:1.搭建LDAP服务器(在CentOS7.9上使用OpenLDAP)2.配置LDAP服务器(设置基础DN、管理员密码、创建目录结构等)3.安装配置phpldapadmin(用于Web管理)4.在客户端机器上配置使用LDAP认证(使用authconfig或authselect工具)详细步骤:一、搭建LDAP服务器(在服务器端)1.安装OpenLDAP软件包```bashyuminstall -y openldapopenldap-serversopenldap-clients```2.启动slapd服务并设置开机启动```bashsystemctlstart slapdsystemctl enableslapd```3.设置LDAP管理员密码生成管理员密码的哈希值:```bashslappasswd```输入密码后,会得到类似`{SSHA}...`的字符串,记录下来。4.配置LDAP的基本设置(如域名、管理员信息等)创建配置文件`base.ldif`,例如(根据实际情况修改dc密码):```ldifdn:olcDatabase={2}hdb,cn=configchangetype:modifyreplace: olcSuffixolcSuffix:dc=bjums,dc=comdn:olcDatabase={2}hdb,cn=configchangetype:modifyreplace: olcRootDNolcRootDN:cn=admin,dc=bjums,dc=comdn: olcDatabase={2}hdb,cn=configchangetype: modifyreplace:olcRootPWolcRootPW: {SSHA}...#这里替换为上面生成的密码哈希```然后应用配置:```bashldapmodify -Y EXTERNAL-Hldapi:///-fbase.ldif```5.创建基础目录结构(如dc,ou等)创建`base_struct.ldif`文件,例如:```ldifdn:dc=bjums,dc=comobjectClass: dcObjectobjectClass:organizationo: BJUmsCompanydc: bjumsdn:ou=People,dc=bjums,dc=comobjectClass: organizationalUnitou: Peopledn:ou=Group,dc=bjums,dc=comobjectClass: organizationalUnitou: Group```然后添加:```bashldapadd-x-Dcn=admin,dc=bjums,dc=com-W-fbase_struct.ldif```二、安装配置phpldapadmin(Web管理工具)1.安装phpldapadmin```bashyum install-yphpldapadmin```2.配置phpldapadmin(修改配置文件以允许访问设置域名)编辑`/etc/phpldapadmin/config.php`:找到以下行并修改:```php$servers->setValue('server','host','127.0.0.1');//如果LDAP服务器在本机,否则填写服务器IP$servers->setValue('login','bind_id','cn=admin,dc=bjums,dc=com');//注释掉以下行以允许从任何IP访问(或者指定允许的IP)//$servers->setValue('login','anon_bind',true);//同时,取消下面这行的注释,并设置允许的IP(或者使用false关闭)$servers->setValue('appearance','show_template',true);//另外,需要修改允许访问的IP:在/etc/httpd/conf.d/phpldapadmin.conf中修改Require ip为允许的IP```3.重启httpd服务```bashsystemctl restarthttpd```4.通过浏览器访问:http://服务器IP/phpldapadmin三、在客户端机器上配置LDAP认证1.安装必要的客户端软件```bashyum install-yopenldap-clients nss-pam-ldapd```2.使用authconfig或authselect(CentOS7使用authconfig,CentOS8及以上使用authselect)配置LDAP认证例如(根据引用[2]):```bashauthconfig --enableldap --enableldapauth--ldapserver=ldap://192.168.153.135 --ldapbasedn="dc=bjums,dc=com"--enablemkhomedir--update```这里:--enableldap:启用LDAP--enableldapauth:启用LDAP认证--ldapserver:LDAP服务器的地址(可以是IP或域名)--ldapbasedn:基础DN--enablemkhomedir:在用户首次登录时自动创建家目录--update:更新配置3.配置/etc/nslcd.conf(如果需要更详细的配置)可以设置URIBASE等参数。4.重启nslcd服务```bashsystemctlrestart nslcd```四、管理用户组1.在LDAP服务器上添加用户组可以通过phpldapadmin的Web界面添加,或者使用ldif文件添加。2.示例:创建一个用户在phpldapadmin中,导航到ou=People,然后创建新条目,选择“inetOrgPerson”对象类,填写用户信息(如cn,sn,uid等),并设置用户密码。3.示例:创建一个组在ou=Group下创建组条目,选择“groupOfNames”对象类,添加成员(member属性填写用户的dn)。五、测试在客户端机器上,尝试使用LDAP中的用户账号登录。注意事项: -确保服务客户端之间的网络连通性,以及389端口(LDAP80/443端口(phpldapadmin)的开放。-安全性:考虑使用TLS加密LDAP通信(配置较为复杂,此处未展开)。以上步骤提供了一个基本的LDAP账号集中管理方案。§§相关问题§§1.如何为LDAP服务器配置TLS加密?2.如何在LDAP中实现用户组的权限管理?3.如何备份恢复LDAP目录数据?4.如何设置LDAP用户的密码策略(如密码复杂度、过期时间等)?5.如何将现有的Linux系统用户迁移到LDAP服务器中?</think>### LDAP服务器实现公司账号管理配置指南 #### 一、核心配置流程 1. **LDAP服务搭建** - 安装OpenLDAP核心组件: ```bash yum install -y openldap openldap-servers openldap-clients ``` - 启动服务并设置开机自启: ```bash systemctl start slapd && systemctl enable slapd ``` 2. **基础目录结构配置** - 创建基础DN(如`dc=company,dc=com`): ```ldif dn: dc=company,dc=com objectClass: dcObject objectClass: organization o: Company Name dc: company ``` - 添加组织单元(如用户/分组): ```ldif dn: ou=People,dc=company,dc=com objectClass: organizationalUnit ou: People dn: ou=Group,dc=company,dc=com objectClass: organizationalUnit ou: Group ``` 使用`ldapadd -x -D "cn=admin,dc=company,dc=com" -W -f base.ldif`导入[^1] 3. **用户账号管理** - 创建用户模板: ```ldif dn: uid=john,ou=People,dc=company,dc=com objectClass: inetOrgPerson uid: john cn: John Doe sn: Doe userPassword: {SSHA}hashed_password ``` - 批量导入用户: ```bash ldapadd -x -D "cn=admin,dc=company,dc=com" -W -f users.ldif ``` 4. **客户端认证配置** - Linux客户端统一认证: ```bash authconfig --enableldap --enableldapauth \ --ldapserver="ldap://ldap.company.com" \ --ldapbasedn="dc=company,dc=com" \ --enablemkhomedir --update ``` 自动创建家目录(首次登录时)[^2] #### 二、高级管理功能 1. **Web管理界面(phpLDAPadmin)** - 安装配置: ```bash yum install -y phpldapadmin ``` - 修改`/etc/phpldapadmin/config.php`: ```php $servers->setValue('server','host','ldap.company.com'); $servers->setValue('login','bind_id','cn=admin,dc=company,dc=com'); ``` 2. **无线网络认证集成** ```bash # RADIUS服务器配置示例 portal server imc ip 10.1.1.1 key cipher $c$3$e/UXS659cp0VnmQbM0Hsrf/a04Nz9o8= url http://ldap.company.com:8080/portal ``` 实现LDAP无线认证[^3] 3. **安全加固措施** - 启用TLS加密通信 - 设置密码策略: ```ldif dn: cn=passwordDefault,ou=Policies,dc=company,dc=com objectClass: pwdPolicy pwdMinLength: 8 pwdMustChange: TRUE ``` #### 三、应用场景实践 1. **统一身份认证** - 所有系统(Linux服务器/企业应用/WiFi)使用同一LDAP账号 - 新员工入职:仅需在LDAP添加1次账号 2. **权限组管理** - 创建部门组: ```ldif dn: cn=dev,ou=Group,dc=company,dc=com objectClass: groupOfNames member: uid=john,ou=People,dc=company,dc=com ``` - 通过组策略控制Samba/NFS权限 3. **自动化同步** - 使用`ldapscripts`工具同步本地账号: ```bash /usr/share/ldapscripts/ldapadduser USER GROUP ``` > **关键优势**:集中化管理降低维护成本,标准化认证流程提升安全性,灵活扩展支持2000+用户规模[^1]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值