这篇文章是想和大家分享一下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-yinstallsambaooopenldap-server openldap-clientssmbldap-toolsns s-PAM-ldapd配置Openldap服务
这里,只执行简单的服务配置,数据库配置将使用smbldap-tools来执行。如果不了解OPENldap,可以看看这篇文章: 《OPENLDAP 服务搭建和后期管理》。
在这里,清除并重新配置所有OPENldap配置。
#先备份文件,以免不可恢复
mkdir/root/back
tar-Jcff/root/back/slapd . config-` date '(% y . % m . % d _ % h :% m :% S)' ` . tar . xz/etc/OpenLDAP/slapd . d/
tar-Jcff/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/*
#复制桑巴模式文件
我复制了CP/usr/share/doc/samba-4 . 9 . 1/LDAP/samba . ldif/etc/Openldap/schema/from/usr/share/Openldap-servers/slapd . ldif中的配置文件,修改如下。主要修改baseDN(后缀)、OPENLDAPTLS、olcRootPW(密码由slappasswd生成,本文密码为: 123456)并包括
#file:/tmp/slapd.ldif
dn:cn=配置
object class : olcgglobal
cn:config
olcargsfile :/var/run/open LDAP/slapd . args
olcpidfile :/var/run/open LDAP/slapd . PID
dn:cn=架构,cn=配置
objectClass:olcSchemaConfig
cn:schema
包括: file :////etc/OpenLDAP/schema/core . ldif
包括: file :///etc/OpenLDAP/schema/cosine . ldif
包括: file :////etc/OpenLDAP/schema/NIS . ldif
include : file :///etc/OpenLDAP/schema/inetorgperson . ldif
包括: file :///etc/OpenLDAP/schema/samba . ldif
dn:olcDatabase=前端,cn=配置
object class : olcddatabase config
object class : olcffrontendconfig
OLC数据库:前端
dn:olcDatabase=config,cn=config
object class : olcddatabase config
olcddatabase : 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简易配置。
这里省略下面的配置过程,不知道的默认即可。
smbldap-populate#初始化配置OPENldap数据库。
这里再创建一个用户用于后面的测试使用。
smbldap-useradd-a-mUser1#添加用户User2 #-a:指定添加的用户类型为Windows,这样samba才能识别到该用户。 #-m:指定创建该用户的家目录。 smbldap-passwdUser1#修改该用户的用户密码
这里省略该用户的密码修改过程。
这样 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.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
这里我们也就可看到了,User1 用户已经可以登入并查询到共享目录了。
那么我们这里直接登入进去,上传一些文件做一些测试:
OK,那么这样一个samba 的文件共享就完成了。
感谢各位的阅读!关于“samba + OPENldap搭建文件共享服务器的方法”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!
TikTok千粉号购买平台:https://tiktokusername.com/
TOP