samba + ldap.note
一、samba 连接ldap不加密端口:
先正常配置ldap
samba用户的密码和 ldap用户的密码是不同的,samba用户的密码是单独定义的一个属性
1、配置 samba:
apt install -y sambamkdir -p /share/samba
vim /etc/samba/smb.conf
# 在末尾添加:
# 设置global属性:
vim /etc/samba/smb.conf
## 在 man smb.conf 中可以查询到:
最简化需要四条
只需要背 ldap ssl = no,其他都能抄


这里写完不要着急重启,重启会失败的,先完成下面的步骤
2、samba-tools 连接ldap:
这个类似 ldapscripts,用于创建ldap用户,它创建出来的用户,携带 objectClass: sambaSamAccount属性,只有携带这个属性的ldap用户,才能够登陆samba
apt install -y smbldap-tools 导入操作必须在修改 slapd 数据库之前进行
# ldap 导入samba属性:
ldapadd -Q -Y EXTERNAL -H ldapi:/// -f /usr/share/doc/samba/examples/LDAP/samba.ldif如果samba和ldap不在一台机,那么可以在ldap上按照 samba和 smbldap-tools 然后导入之后再删除
# 导入管理员密码:
## 该命令依赖于 /etc/samba/smb.conf 中的 ldap admin dn 属性(添加的是这个用户的密码)。
smbpasswd -Wcd /etc/smbldap-tools
cp /usr/share/doc/smbldap-tools/examples/smbldap.conf .
# 生成sid并输出到配置文件中:
## 该命令依赖于 /etc/samba/smb.conf 中的配置。
net getlocalsid >> smbldap.conf
## 可以用 net -h | grep sid 查找命令
vim /etc/smbldap-tools/smbldap.conf



cd /etc/smbldap-tools
cp /usr/share/doc/smbldap-tools/examples/smbldap_bind.conf .
vim smbldap_bind.conf
# 创建ldap对象:
smbldap-populate
3、创建 ldap用户:
# 创建ldap用户:
smbldap-useradd -a zhangsan -P
## 输入密码这是这个工具创建出来的用户属性:
ldapsearch -x -H ldapi:/// -D "cn=admin,dc=devops,dc=com" -w Skill2024 -b "ou=users,dc=devops,dc=com" "(objectClass=inetOrgPerson)" "*" "+"

ldapsearch -x -b "dc=devops,dc=com"

可以将这些属性复制出去稍加修改使用ldapscripts创建,但是没有必要,还不如直接使用 smbldap-useradd 创建
创建出来的用户可以使用 pdbedit -L 进行查看:
pdbedit -L
4、samba 连接ldap:
# samba服务器上配置:
apt install -y nslcdsystemctl restart smbd //连接 ldap 后需要重启一下 smbd
·客户端连接测试:
smbclient //10.1.20.11/share -U zhangsan
5、将 ldap 用户转换为 samba用户:
假如已经创建有了 ldap用户,想要让它变成samba用户,能够在samba中登陆,非常简单,并且还能保留ldap属性
# 使用 smbldap 自带工具:
smbldap-usermod -a alice //为ldap用户添加samba属性
smbldap-passwd -s alice //设置samba密码·smbldap 工具:
smbldap-useradd //创建用户
-a //同时创建 samba用户(不加-a只创建ldap用户)
-m //创建home目录
-P //同时指定密码
-g //指定主要组
-G //指定附加组
-u //指定UID
smbldap-usermod //修改已经存在的用户
-a //将LDAP用户转换为Samba用户(添加Samba属性)
smbldap-passwd //不加参数时同时修改 LDAP/Samba 用户密码(在修改samba用户密码时,它必须有samba属性)
-s //只修改samba用户密码(必须有samba属性)
-u //只修改LDAP用户密码·查看用户:
转换成功:

其他用户还是普通的属性,没有samba属性:

不要使用下面的方法用nslcd去连接,这样会导致很对问题,例如ldap用户本地登陆不了、邮件使用不了
·旧方式(不建议使用):
必须先用 nslcd连接上
# 本地必须先能读取到ldap的用户:
apt install -y nslcd
# getent passwd alice //看是否能够读取到该用户
smbpasswd -a alice
6、如果要使用 @group 这样匹配 LDAP用户组:
# 最简单的方式就是安装 nslcd:
apt install -y nslcd
## getent group shenzhen 能够列出用户即成功
·如果要创建带有 smb属性,又带有 mail、等属性的用户(直接用上面转换的办法,先创建ldap用户,然后转换为samba用户即可:
·旧方式(不建议使用)
先使用 samba-tools先创建一个用户出来,然后将其全部复制,用它作为 ldapscripts的usertemp用户模板,然后再使用ldapscripts创建用户即可当然这里有一个问题:如果不是使用smbldap-useradd 创建的samba用户,使用 pdbedit -L 是无法查看到的(尽管无法登录)
/etc/ldap/usertemp
vim /etc/ldapscripts/ldapscripts.conf
然后使用ldapscripts创建即可
# 此时创建出来的用户没有samba密码,需要指定:
smbldap-passwd <用户名>
# 输入密码二、samba 连接ldaps:
按照上面的方式配置好之后,该samba配置文件,将连接方式改为ldaps
vim /etc/samba/smb.conf