云计算-OpenStack+LDAP集成-第八节-Samba共享与LDAP集成
账号统一到 LDAP 之后,好处不止在登录云平台。这一节把文件服务器也接进来:学生用同一个 LDAP 账号访问共享目录,交作业、领资料不再需要另一套密码。

一、原理:Samba 怎么”借用” LDAP
Samba 本身维护一张本机密码表(smbpasswd)。把 passdb backend 换成 ldapsam 后,它就不再查本机表,而是拿着用户名去 LDAP 里校验——LDAP 说“通过”,共享才放行。这样一台 LDAP 服务器就能同时给云平台、监控大屏和文件共享当“门卫”。
关键一步是 smbpasswd -w:它把 LDAP 管理员的密码写进 Samba 的 secrets.tdb,让 Samba 有权限去查询目录。少了这一步,共享会一直连不上——它填的是 LDAP 管理员密码,不是 Samba 自己的密码。
二、操作步骤
第 1 步:安装并写 smb.conf。
yum install -y samba samba-client samba-common vi /etc/samba/smb.conf [global] workgroup = EXAMPLE realm = EXAMPLE.COM security = user passdb backend = ldapsam:ldap://192.168.100.10 ldap admin dn = cn=admin,dc=example,dc=com ldap suffix = dc=example,dc=com ldap user suffix = ou=people ldap group suffix = ou=groups ldap ssl = off [student] path = /srv/samba/student_share browsable = yes writable = yes valid users = @students force group = students create mask = 0660 directory mask = 0770
第 2 步:建共享目录并设置属组权限。
mkdir -p /srv/samba/student_share chmod 0770 /srv/samba/student_share groupadd students chown root:students /srv/samba/student_share
第 3 步:把 Samba 接到 LDAP(关键)并启动服务。
smbpasswd -w 12345678 systemctl start smb nmb systemctl enable smb nmb
三、[student] 段参数含义
| 参数“, ”作用 | |
|---|---|
| path | 共享对应的真实目录 |
| browsable / writable | 是否可见、是否可写 |
| valid users = @students | 只允许 students 组成员访问(@ 表示组) |
| force group = students | 新建文件的属组强制为 students |
| create mask = 0660 | 新建文件权限:同组可读写,其他人无权 |
| directory mask = 0770 | 新建目录权限:同组可进入 |
四、验证
LDAP 用户能通过认证:
ldapsearch -x -D "uid=student1,ou=people,dc=example,dc=com" \ -W -b "dc=example,dc=com" "(objectclass=*)"
OpenStack 侧也能看到这个用户(说明同一套账号两头通用):
openstack user list --domain ldap_domain
五、常见问题与排错
| 现象“, ”原因“, ”解决办法 | ||
|---|---|---|
| Windows 连共享提示密码错误 | Samba 没接到 LDAP | 重新执行 smbpasswd -w |
| 能连上但不能写“, ”目录属组不是 students | chown root:students + chmod 0770 | |
| @students 组不生效 | LDAP 里组后缀与配置不符“, ”核对 ldap group suffix 是否为 ou=groups | |
| nmb 没起来“, ”主机名解析问题“, ”检查 /etc/hosts 与 workgroup 设置 |
六、本节小结
一句话记住:装包 → smb.conf 里把 passdb backend 指向 LDAP → 建目录给组权限 → smbpasswd -w 告诉 Samba 管理员密码 → 起服务。下一节做整体联调,把三条访问路径一次验完。

