当前位置 主页 > 网站技术 > 代码类 >

    详解samba + OPENldap 搭建文件共享服务器问题

    栏目:代码类 时间:2019-10-02 21:02

    这里我使用的是 samba(文件共享服务) v4.9.1 + OPENldap(后端数据库软件) v2.4.44 + smbldap-tools(后端数据库管理软件) v0.9.11 + CentOS7。 如果有不同,可能会有部分问题。

    注:

    samba 的功能不只有文件共享,还可以作为一台Windows域成员,甚至Windows域控制器。千万不要认为samba只是一个文件共享服务。 由于我们使用了samba的文件共享功能,与文件权限有直接的联系,所以samba中的使用的用户必须是Linux中能查询到。因为使用了 OPENldap 作为samba 的后端数据库,所以我们这里还需要配置Linux能查询到 OPENldap 中的用户信息,也就是需要配置 NSS。关于NSS部分的配置需要在smbldap-tools 初始化ldap数据库后完成NSS部分的配置,需要注意!!! samba 有使用PAM作为认证模块,和使用其自带的认证程序,在CentOS中编译时配置的是使用其自带的认证程序,所以PAM的配置可以省略。 如果想要配置OPENldap中的用户可以登入系统,可以查阅这篇文章:《配置Linux使用LDAP用户认证》,其中的配置与本文中的配置并不相同,需要注意!!!

    初始化配置

    yum 源和网络配置省略。

    yum -y install samba openldap-servers openldap-clients smbldap-tools nss-pam-ldapd

    配置OPENldap服务

    这里只进行简单的服务配置,数据库配置这里会使用 smbldap-tools 进行配置,如果不知道OPENldap 可以去看看这篇文章:《OPENLDAP 服务搭建和后期管理》

    这里将 OPENldap 所有配置清空,重新配置。

    # 首先备份文件,以免无法复原mkdir /root/backtar -Jcvf /root/back/slapd.config-`date '+(%Y.%m.%d_%H:%M:%S)'`.tar.xz /etc/openldap/slapd.d/tar -Jcvf /root/back/slapd.data-`date '+(%Y.%m.%d_%H:%M:%S)'`.tar.xz /var/lib/ldap/# 然后再删除配置文件rm -rf /etc/openldap/slapd.d/*rm -rf /var/lib/ldap/*# 复制一个samba的schema文件cp /usr/share/doc/samba-4.9.1/LDAP/samba.ldif /etc/openldap/schema/

    这里的配置文件我是从/usr/share/openldap-servers/slapd.ldif 中复制过来,并修改成如下这个样子的。主要修改了baseDN(suffix), OPENLDAPTLS,olcRootPW(密码由 slappasswd 生成,本文中的密码为: 123456) 和 include

    # file: /tmp/slapd.ldifdn: cn=configobjectClass: olcGlobalcn: configolcArgsFile: /var/run/openldap/slapd.argsolcPidFile: /var/run/openldap/slapd.piddn: cn=schema,cn=configobjectClass: olcSchemaConfigcn: schemainclude: file:///etc/openldap/schema/core.ldifinclude: file:///etc/openldap/schema/cosine.ldifinclude: file:///etc/openldap/schema/nis.ldifinclude: file:///etc/openldap/schema/inetorgperson.ldifinclude: file:///etc/openldap/schema/samba.ldifdn: olcDatabase=frontend,cn=configobjectClass: olcDatabaseConfigobjectClass: olcFrontendConfigolcDatabase: frontenddn: olcDatabase=config,cn=configobjectClass: olcDatabaseConfigolcDatabase: configolcAccess: to *  by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" manage  by * nonedn: olcDatabase=monitor,cn=configobjectClass: olcDatabaseConfigolcDatabase: monitorolcAccess: to *  by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" read  by dn.base="cn=Manager,dc=black,dc=com" read  by * nonedn: olcDatabase=hdb,cn=configobjectClass: olcDatabaseConfigobjectClass: olcHdbConfigolcDatabase: hdbolcSuffix: dc=black,dc=comolcRootDN: cn=Manager,dc=black,dc=comolcRootPW: {SSHA}l1vBI/HOMKLEiQZgcm3Co+hFQI68rH1QolcDbDirectory: /var/lib/ldapolcDbIndex: objectClass eq,presolcDbIndex: ou,cn,mail,surname,givenname eq,pres,sub,uid