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

2021-02-23 07:38:36 169 0
tangjin

这篇文章给大家分享的是有关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-yinstallsambaopenldap-serversopenldap-clientssmbldap-toolsnss-pam-ldapd

配置OPENldap服务

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

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

#首先备份文件,以免无法复原
mkdir/root/back
tar-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.ldif

dn:cn=config
objectClass:olcGlobal
cn:config
olcArgsFile:/var/run/openldap/slapd.args
olcPidFile:/var/run/openldap/slapd.pid

dn:cn=schema,cn=config
objectClass:olcSchemaConfig
cn:schema

include:file:///etc/openldap/schema/core.ldif
include:file:///etc/openldap/schema/cosine.ldif
include:file:///etc/openldap/schema/nis.ldif
include:file:///etc/openldap/schema/inetorgperson.ldif
include:file:///etc/openldap/schema/samba.ldif

dn:olcDatabase=frontend,cn=config
objectClass:olcDatabaseConfig
objectClass:olcFrontendConfig
olcDatabase:frontend

dn:olcDatabase=config,cn=config
objectClass:olcDatabaseConfig
olcDatabase:config
olcAccess:to*
bydn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth"manage
by*none

dn:olcDatabase=monitor,cn=config
objectClass:olcDatabaseConfig
olcDatabase:monitor
olcAccess:to*
bydn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth"read
bydn.base="cn=Manager,dc=black,dc=com"read
by*none

dn:olcDatabase=hdb,cn=config
objectClass:olcDatabaseConfig
objectClass:olcHdbConfig
olcDatabase:hdb
olcSuffix:dc=black,dc=com
olcRootDN:cn=Manager,dc=black,dc=com
olcRootPW:{SSHA}l1vBI/HOMKLEiQZgcm3Co+hFQI68rH1Q
olcDbDirectory:/var/lib/ldap
olcDbIndex:objectClasseq,pres
olcDbIndex:ou,cn,mail,surname,givennameeq,pres,sub,uid

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

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

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

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

配置 samba

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

#file:/etc/samba/smb.conf

[global]
workgroup=MYGROUP#指定共享组名称。
serverstring=SambaServerVersion%v
logfile=/var/log/samba/log#日志
security=user#指定安全级别为User
passdbbackend=ldapsam:ldap://127.0.0.1#指定passdb的后端数据库使用ldapsam
ldapsuffix=dc=black,dc=com#指定ldap的suffix
ldapusersuffix=ou=People#指定用户的suffix段位ou=People这里会与上一个suffix结合。
ldapgroupsuffix=ou=Group#上同,指定的是用户组。
ldapadmindn=cn=Manager,dc=black,dc=com#指定查询ldap服务使用的管理员用户
ldapssl=no#指定不使用SSL加密。
loadprinters=no#指定不加载共享打印机。
[homes]
comment=HomeDirectories
browseable=no
writable=yes
createmask=0600
directorymask=700
smbpasswd-w123456#存储用于连接LDAP服务的用户密码,!!!非常重要,否则无法启动smb服务。

启动samba服务

systemctlstartnmb
systemctlstartsmb

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简易配置。

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

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

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

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

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

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

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

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

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

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

NSS 配置

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

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

#file:/etc/nsswitch.conf

passwd:filesldap
shadow:files
group:filesldap
hosts:filesdnsmyhostname
bootparams:nisplus[NOTFOUND=return]files
ethers:files
netmasks:files
networks:files
protocols:files
rpc:files
services:filessss
netgroup:nisplussss
publickey:nisplus
automount:filesnisplussss
aliases:filesnisplus

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

#file:/etc/nslcd.conf

uidnslcd
gidldap
urildap://127.0.0.1/#ldapURL地址
basedc=black,dc=com#basedn路径
binddncn=Manager,dc=black,dc=com#指定连接的用户
bindpw123456#指定密码
sslno#指定不要使用SSL加密连接。
filterpasswd(&(objectClass=posixAccount)(uidNumber>=1000))#编写passwd的过滤规则。
filtergroup(&(objectClass=posixGroup)(gidNumber>=500))#上同,编写的是group
Copy
chmod600/etc/nslcd.conf#配置文件权限,非常重要,否则无法启动服务。
systemctlstartnslcd#启动nslcd服务。

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

getentpasswdUser1

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

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

samba 权限配置

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

#上面通过smbldap-useradd命令,已经创建了用户的home目录,
#下面可以直接进行SELinux的相关配置了。
semanagefcontext-a-tsamba_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目录下的SELinuxtype类型即可。
Copy
#这里我们就能进行samba的测试了
smbclient-L//127.0.0.1/-UUser1

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

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

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

samba + OPENldap搭建文件共享服务器的方法OK,那么这样一个samba 的文件共享就完成了。

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

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

收藏
分享
海报
0 条评论
169
上一篇:怎么利用watch帮你重复执行命令 下一篇:Windows10下如何搭建hyperledger fabric1.4环境

本站已关闭游客评论,请登录或者注册后再评论吧~

忘记密码?

图形验证码