千家信息网

samba + OPENldap搭建文件共享服务器的方法

发表于:2025-02-12 作者:千家信息网编辑
千家信息网最后更新 2025年02月12日,这篇文章给大家分享的是有关samba + OPENldap搭建文件共享服务器的方法的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。这里我使用的是 samba(文件共享服务)
千家信息网最后更新 2025年02月12日samba + OPENldap搭建文件共享服务器的方法

这篇文章给大家分享的是有关samba + OPENldap搭建文件共享服务器的方法的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

这里我使用的是 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

根据配置生成服务器的配置文件

slapadd -F "/etc/openldap/slapd.d/" -b "cn=config" -l /tmp/slapd.ldif# 这里还需要注意文件属主还是root的,需要改回为openldapchown -R ldap:ldap /etc/openldap/slapd.d/*# 然后再开启服务即可systemctl start slapd

_#################### 100.00% eta none elapsed none fast!
Closing DB...

注:这里只配置了OPENldap中的服务配置部分,没有配置OPENldap 的数据库,这里再次强调以下。

配置 samba

这里只是为了测试使用samba 与 OPENldap 的使用,就不进行过于复杂的文件共享配置了,只共享一个用户的家目录仅供测试。

# file: /etc/samba/smb.conf[global] workgroup = MYGROUP # 指定共享组名称。 server string = Samba Server Version %v log file = /var/log/samba/log # 日志 security = user # 指定安全级别为User passdb backend = ldapsam:ldap://127.0.0.1 # 指定passdb 的后端数据库使用ldapsam ldap suffix = dc=black,dc=com # 指定ldap的 suffix ldap user suffix = ou=People # 指定用户的 suffix 段位 ou=People 这里会与上一个suffix结合。 ldap group suffix = ou=Group # 上同,指定的是用户组。 ldap admin dn = cn=Manager,dc=black,dc=com # 指定查询ldap服务使用的管理员用户 ldap ssl = no # 指定不使用SSL加密。 load printers = no # 指定不加载共享打印机。[homes] comment = Home Directories browseable = no writable = yes create mask = 0600 directory mask = 700
smbpasswd -w 123456 # 存储用于连接 LDAP 服务的用户密码,!!!非常重要,否则无法启动smb服务。

启动samba服务

systemctl start nmbsystemctl start smb

smbldap-tools 配置

这里使用 smbldap-tools 来快速完成 samba 服务所需要的数据信息,同时通过 smblda-tools 来进行用户段管理。但是smbldap-tools 有一个缺点就是 不会管你本地用户是否有相同的 UID 或则 GID,可能有冲突,需要注意。

smbldap 会从 /etc/samba/smb.conf 读取部分信息,所以需要先配置好samba再配置 smbldap-tools 服务。

smbldap-config # 配置 smbldap-tools 的配置,这里使用smbldap-conifg 简易配置。

这里省略下面的配置过程,不知道的默认即可。

smbldap-populate # 初始化配置 OPENldap 数据库。

这里再创建一个用户用于后面的测试使用。

smbldap-useradd -a -m User1 # 添加用户User2# -a: 指定添加的用户类型为Windows,这样samba 才能识别到该用户。# -m: 指定创建该用户的家目录。smbldap-passwd User1 # 修改该用户的用户密码

这里省略该用户的密码修改过程。

这样 OPENldap 的数据库初始化就完成了,这样就能去查询OPENldap 中的内容了。如下图,这个就是smbldap-populate 所创建的内容了。下图为 apache Directory Studio,有兴趣可以去研究一下《apache Directory Studio 简易使用》

在图中我们可以看到 UID = root 和 nobody 的用户,我并不想让这些特殊用户登入到服务器,所以在下面的配置,我会通过 fliter 将这2个用户过滤掉。

NSS 配置

这里的NSS配置主要就是需要配置,NSS 将 LDAP 的请求转发给 nslcd ,由 nslcd 来查询 OPENldap 中的用户信息。

首先配置 NSS ,只需添加 passwd 段和 group 段的ldap认证即可。

# file: /etc/nsswitch.confpasswd: files ldapshadow: filesgroup: files ldaphosts: files dns myhostnamebootparams: nisplus [NOTFOUND=return] filesethers: filesnetmasks: filesnetworks: filesprotocols: filesrpc: filesservices: files sssnetgroup: nisplus ssspublickey: nisplusautomount: files nisplus sssaliases: files nisplus

然后配置 nslcd, 注意 nslcd 是以daemon 形式运行的,主要配置后重启。

# file:/etc/nslcd.confuid nslcdgid ldapuri ldap://127.0.0.1/ # ldap URL地址base dc=black,dc=com # base dn 路径binddn cn=Manager,dc=black,dc=com # 指定连接的用户bindpw 123456 # 指定密码ssl no  # 指定不要使用SSL 加密连接。filter passwd (&(objectClass=posixAccount)(uidNumber>=1000)) # 编写 passwd 的过滤规则。filter group (&(objectClass=posixGroup)(gidNumber>=500)) # 上同,编写的是 groupCopychmod 600 /etc/nslcd.conf # 配置文件权限,非常重要,否则无法启动服务。systemctl start nslcd # 启动 nslcd 服务。

我们这里测试以下 NSS 的配置是否可用

getent passwd User1

User1:*:1001:513:System User:/var/smb/User1:/bin/bash

如上可见,我们配置的 NSS 和 OPENldap 服务 已经生效了,下面我们再来继续配置samba,使其可用。

samba 权限配置

如果看的比较仔细的人,就会发现我将用户的home 目录位置存放在了/var/smb 位置,主要是为了不与系统中的用户搞混。并且这样可以通过SELinux来隔离samba 禁止访问 /home 路径下的资源,详细请看下面操作。

# 上面通过 smbldap-useradd 命令,已经创建了用户的home 目录,# 下面可以直接进行SELinux 的相关配置了。semanage fcontext -a -t samba_share_t '/var/smb(/.*)?' # 修改/var/smb 路径的默认type,这里我用 samba 共享使用的type,SELinux 默认允许访问这个type类型# 如果要使samba 可以访问 /home 则应当开启 samba_enable_home_dirs 这个 bool 值。# 但是 我这里因为使用的是 samba_share_t 这个 type 类型,所以无需开启 任何 bool 值,这样就能使samba只能访问到 /var/smb 和 samba 其他所需文件。restorecon -R /var/smb/ # 然后我们在重置 /var/smb 目录下的SELinux type 类型即可。Copy# 这里我们就能进行samba的测试了smbclient -L //127.0.0.1/ -U User1

这里我们也就可看到了,User1 用户已经可以登入并查询到共享目录了。

那么我们这里直接登入进去,上传一些文件做一些测试:


OK,那么这样一个samba 的文件共享就完成了。


感谢各位的阅读!关于"samba + OPENldap搭建文件共享服务器的方法"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

配置 用户 服务 文件 数据 数据库 密码 目录 查询 测试 部分 认证 服务器 信息 内容 篇文章 类型 管理 就是 权限 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 网络安全岗位在编的可以评职称吗 有哪些公司使用mysql数据库 惠州物联网软件开发价格 网络安全使用技术 dnf韩服手游进不去服务器 海南新概念互联网科技有限公司 软件开发商可以靠流量赚钱吗 电子科技大学网络安全专业靠谱吗 教育局网络安全知识 工行软件开发中心户口怎么样 数据库怎样分离 北京诚信积分管理软件开发公司 信息管理系统用什么软件开发 网络安全技术技术 烟台 软件开发公司有哪些 wind万德数据库 专利 打字弹出服务器管理器 计算机网络安全普法试题 初中生学软件开发能学吗 软件开发一个人收入 我的世界服务器怎么回城手机版 数据库查询数据按时间排序 电脑连接云服务器卡 河南程序软件开发怎么样 网络安全违法检查 千城万乡互联网科技有限公司 瑞丽航空软件开发面试流程 公司电脑服务器被爆破 视频网站 云服务器 外国云服务器能干什么软件呢
0