音效素材网提供各类素材,打造精品素材网站!

站内导航 站长工具 投稿中心 手机访问

音效素材

详解samba + OPENldap 搭建文件共享服务器问题
日期:2019-10-01 09:10:40   来源:脚本之家

这里我使用的是 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/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 * 
 by dn.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 * 
 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 * 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: objectClass eq,pres
olcDbIndex: ou,cn,mail,surname,givenname eq,pres,sub,uid

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

slapadd -F "/etc/openldap/slapd.d/" -b "cn=config" -l /tmp/slapd.ldif
# 这里还需要注意文件属主还是root的,需要改回为openldap
chown -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 nmb
systemctl 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.conf

passwd: files ldap
shadow: files
group: files ldap
hosts: files dns myhostname
bootparams: nisplus [NOTFOUND=return] files
ethers: files
netmasks: files
networks: files
protocols: files
rpc: files
services: files sss
netgroup: nisplus sss
publickey: nisplus
automount: files nisplus sss
aliases: files nisplus

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

# file:/etc/nslcd.conf

uid nslcd
gid ldap
uri 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)) # 上同,编写的是 group
Copy
chmod 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 搭建文件共享服务器问题,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

    您感兴趣的教程

    在docker中安装mysql详解

    本篇文章主要介绍了在docker中安装mysql详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编...

    详解 安装 docker mysql

    win10中文输入法仅在桌面显示怎么办?

    win10中文输入法仅在桌面显示怎么办?

    win10系统使用搜狗,QQ输入法只有在显示桌面的时候才出来,在使用其他程序输入框里面却只能输入字母数字,win10中...

    win10 中文输入法

    一分钟掌握linux系统目录结构

    这篇文章主要介绍了linux系统目录结构,通过结构图和多张表格了解linux系统目录结构,感兴趣的小伙伴们可以参考一...

    结构 目录 系统 linux

    PHP程序员玩转Linux系列 Linux和Windows安装

    这篇文章主要为大家详细介绍了PHP程序员玩转Linux系列文章,Linux和Windows安装nginx教程,具有一定的参考价值,感兴趣...

    玩转 程序员 安装 系列 PHP

    win10怎么安装杜比音效Doby V4.1 win10安装杜

    第四代杜比®家庭影院®技术包含了一整套协同工作的技术,让PC 发出清晰的环绕声同时第四代杜比家庭影院技术...

    win10杜比音效

    纯CSS实现iOS风格打开关闭选择框功能

    这篇文章主要介绍了纯CSS实现iOS风格打开关闭选择框,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作...

    css ios c

    Win7如何给C盘扩容 Win7系统电脑C盘扩容的办法

    Win7如何给C盘扩容 Win7系统电脑C盘扩容的

    Win7给电脑C盘扩容的办法大家知道吗?当系统分区C盘空间不足时,就需要给它扩容了,如果不管,C盘没有足够的空间...

    Win7 C盘 扩容

    百度推广竞品词的投放策略

    SEM是基于关键词搜索的营销活动。作为推广人员,我们所做的工作,就是打理成千上万的关键词,关注它们的质量度...

    百度推广 竞品词

    Visual Studio Code(vscode) git的使用教程

    这篇文章主要介绍了详解Visual Studio Code(vscode) git的使用,小编觉得挺不错的,现在分享给大家,也给大家做个参考。...

    教程 Studio Visual Code git

    七牛云储存创始人分享七牛的创立故事与

    这篇文章主要介绍了七牛云储存创始人分享七牛的创立故事与对Go语言的应用,七牛选用Go语言这门新兴的编程语言进行...

    七牛 Go语言

    Win10预览版Mobile 10547即将发布 9月19日上午

    微软副总裁Gabriel Aul的Twitter透露了 Win10 Mobile预览版10536即将发布,他表示该版本已进入内部慢速版阶段,发布时间目...

    Win10 预览版

    HTML标签meta总结,HTML5 head meta 属性整理

    移动前端开发中添加一些webkit专属的HTML5头部标签,帮助浏览器更好解析HTML代码,更好地将移动web前端页面表现出来...

    移动端html5模拟长按事件的实现方法

    这篇文章主要介绍了移动端html5模拟长按事件的实现方法的相关资料,小编觉得挺不错的,现在分享给大家,也给大家...

    移动端 html5 长按

    HTML常用meta大全(推荐)

    这篇文章主要介绍了HTML常用meta大全(推荐),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参...

    cdr怎么把图片转换成位图? cdr图片转换为位图的教程

    cdr怎么把图片转换成位图? cdr图片转换为

    cdr怎么把图片转换成位图?cdr中插入的图片想要转换成位图,该怎么转换呢?下面我们就来看看cdr图片转换为位图的...

    cdr 图片 位图

    win10系统怎么录屏?win10系统自带录屏详细教程

    win10系统怎么录屏?win10系统自带录屏详细

    当我们是使用win10系统的时候,想要录制电脑上的画面,这时候有人会想到下个第三方软件,其实可以用电脑上的自带...

    win10 系统自带录屏 详细教程

    + 更多教程 +
    WIN服务器linux服务器FTP服务器DNS服务器其他