详解samba + OPENldap 搭建文件共享办事器成绩

发布时间: 2019-10-01 12:29:58 来源: 互联网 栏目: 办事器 点击:

这篇文章重要简介了samba + OPENldap 搭建文件共享办事器,这里我应用的是 samba(文件共享办事) v4.9.1 + OPENldap(后端数据库软件) v2.4.44 + smbldap-tools(后端数据库管理软件) v0.9.11 + CentOS7。 须要的同伙可以参考下

这里我应用的是 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 搭建文件共享办事器成绩,欲望对大年夜家有所赞助,假设大年夜家有任何疑问迎接给我留言,小编会及时答复大年夜家的!

本文标题: 详解samba + OPENldap 搭建文件共享办事器成绩
本文地址: http://yourctp.com/jiqiao/fuwuqi/277599.html

假设认为本文对您有所赞助请赞助本站

付出宝扫一扫赞助微信扫一扫赞助

  • 付出宝扫一扫赞助
  • 微信扫一扫赞助
  • 付出宝先领红包再赞助
    声明:凡注明"本站原创"的一切文字图片等材料,版权均属编程客栈一切,迎接转载,但务请注明出处。
    Docker安排Tomcat及Web应用的完成win10上装置nginx的办法步调
    Top