李成笔记网

专注域名、站长SEO知识分享与实战技巧

Samba集成LDAP认证 samba-libs

Samba是SMB网络协议(CIFS是它的一个版本)的重新实现,免费且提供文件和打印共享服务。通过Samba实现的文件共享服务在很多公司中使用,因为目前主流的桌面操作系统都支持SMB协议,比如Windows、macOS等。Samba服务虽然兼容性很好,但是账号和权限管理比较麻烦。

实际使用中,我们可能想配置某个文件夹只能允许一个部门访问,一些文件夹每个人都可以访问,单个人可以拥有自己私有的文件夹,如果都使用Linux的本地账号管理,将非常麻烦,本文介绍Samba集成LDAP,实现集中式的账号管理和权限隔离。

为演示方便,假定运行FreeIPA的主机名为“ipa.example.com”,运行Samba的服务器主机名为“samba.example.com”。

前提条件

  • 服务器操作系统为“CentOS Linux release 7.9.2009 (Core)”
  • 主机都配置合格的主机名,且能够正常解析
  • 如果使用现有的DNS服务,添加服务器IP的反向解析
  • 每台服务器配置NTP同步
  • 如果内网环境安全性较高,可以关闭SELinux,iptables各个链的默认策略配置为“ACCEPT”

LDAP实现

使用FreeIPA实现LDAP,安装配置比较简单,参见Grafana集成LDAP认证

Samba主机配置

1,注册Samba主机到FreeIPA

# 安装ipa-client,完成后,可以使用ipa-client-install命令
yum install -y ipa-client
# 执行下面命令后,主机samba.example.com将出现在FreeIPA的"Identity->Hosts"中
ipa-client-install --mkhomedir --force-ntpd --enable-dns-updates

“ipa-client-install”这条命令做了很多事情,操作完后可以通过FreeIPA上的账号登录服务器,同时还会生成文件/etc/krb5.keytab。

2,安装Samba

yum -y install samba samba-client sssd-libwbclient
systemctl enable nmb.service
systemctl enable smb.service

FreeIPA主机配置

1,添加CIFS Principal

ipa service-add cifs/samba.example.com

2,LDAP数据库中添加Samba属性(很重要)

yum -y install ipa-server-trust-ad
# 全部回答“yes”
ipa-adtrust-install --add-sids

3,权限授予

为了实现FreeIPA与Samba服务的集成,需要给Samba服务授予读取用户密码的权限

ipa permission-add "CIFS server can read user passwords" \
 --attrs={ipaNTHash,ipaNTSecurityIdentifier} \
 --type=user --right={read,search,compare} --bindtype=permission

ipa privilege-add "CIFS server privilege"

ipa privilege-add-permission "CIFS server privilege" \
 --permission="CIFS server can read user passwords"

ipa role-add "CIFS server"

ipa role-add-privilege "CIFS server" --privilege="CIFS server privilege"

ipa role-add-member "CIFS server" --services=cifs/samba.example.com

Samba服务配置

1,生成CIFS的keytab

Samba服务对FreeIPA来说也是一个实体,需要生成相应的keytab

kinit -kt /etc/krb5.keytab
ipa-getkeytab -s ipa.example.com -p cifs/samba.example.com -k /etc/samba/samba.keytab

2,安装“ipa-server-trust-ad”包,

yum -y install ipa-server-trust-ad

Samba配置文件"/etc/samba/smb.conf"中有些选项需要“ipa-server-trust-ad”包的支持

3,准备Samba配置文件

内容如下:

[global]
 # freeipa configurations
 debug pid = yes
 realm = EXAMPLE.COM
 workgroup = EXAMPLE
 domain master = Yes
 ldap group suffix = cn=groups,cn=accounts
 ldap machine suffix = cn=computers,cn=accounts
 ldap ssl = off
 ldap suffix = dc=example,dc=com
 ldap user suffix = cn=users,cn=accounts
 log file = /var/log/samba/log
 max log size = 100000
 domain logons = Yes
 registry shares = Yes
 disable spoolss = Yes
 dedicated keytab file = FILE:/etc/samba/samba.keytab
 kerberos method = dedicated keytab
 passdb backend = ipasam:ldap://ipa.example.com
 security = USER
 create krb5 conf = No
 rpc_daemon:lsasd = fork
 rpc_daemon:epmd = fork
 rpc_server:tcpip = yes
 rpc_server:netlogon = external
 rpc_server:samr = external
 rpc_server:lsasd = external
 rpc_server:lsass = external
 rpc_server:lsarpc = external
 rpc_server:epmapper = external
 ldapsam:trusted = yes
 idmap config * : backend = tdb
 idmap config * : range = 10000-999999
 ldap admin dn = cn=Directory Manager
 # public share configurations
 map to guest = bad user
 # 用户独享的目录空间-家目录
[homes]
 comment = Home Directories
 valid users = %S, %D%w%S
 browseable = No
 read only = No
 inherit acls = Yes
# 通过验证的用户都可以访问share
[share]
 comment = Public Share
 path = /samba/share
 writable = yes
 browsable = yes
 guest ok = yes
 read only = no
# 通过验证且属于infra组的用户可以访问infra
[infra]
 comment = Public Share
 path = /samba/infra
 writable = yes
 browsable = yes
 guest ok = yes
 read only = no
 valid users = @infra
# 通过验证且属于development组的用户可以访问dev
[dev]
 comment = Public Share
 path = /samba/dev
 writable = yes
 browsable = yes
 guest ok = yes
 read only = no
 valid users = @development

4,创建用户

在FreeIPA上创建用户,并将用户加入预先创建的用户组。测试中创建两个组“infra”和“development”,操作这步,便可以通过用户组的粒度来控制权限的分配。

5,创建需要的目录

根据Samba的配置文件,创建对应的目录并授予合适的权限。为了成功访问Samba共享的内容,用户不仅要满足文件系统的权限要求而且要满足Samba服务的权限要求。为了方便管理,可以在文件系统层授予用户全部权限,仅使用Samba管理用户权限:

[aneirin@samba ~]$ls -lh /samba
total 0
drwxrwxrwx 2 nobody nobody  6 Jul  3 14:46 dev
drwxrwxrwx 2 nobody nobody  6 Jul  3 14:45 infra
drwxrwxrwx 2 nobody nobody 19 May 24 17:58 share

总结

Samba集成Ldap认证比较复杂,里面涉及的概念较多,文章没有对Samba配置文件中的各个选项做介绍,读者可以自行上网查找,遇到问题,欢迎讨论。

希望这篇文章能帮到正在努力的你,欢迎关注、评论!

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言