Board logo

标题: 将 LDAP 目录用于 Samba 认证-配置 Samba [打印本页]

作者: look_w    时间: 2018-4-18 20:29     标题: 将 LDAP 目录用于 Samba 认证-配置 Samba

配置在完成 LDAP 部分的配置之后,所剩下的工作就只是告知 Samba 执行用户认证时要使用 LDAP 目录服务而不是自身的密码文件 smbpasswd。这是个相对简单的过程,尤其是当假定了这样的起点:我们已经有一个配置正确、功能正常的 Samba PDC。首先,给出一些背景知识说明:
下一步是添加必需的特定于 LDAP 的选项。这些选项都放置在 smb.conf 的 [global] 节中。
LDAP 服务器详细说明下列配置片段显示了“引导”Samba 将目录服务用于用户认证所需的特定于 LDAP 的选项:
1
2
3
4
5
6
;LDAP-specific settings
   ldap admin dn = "cn=Manager,dc=syroidmanor,dc=com"
   ldap server = localhost
   ldap port = 389
   ldap ssl = no
   ldap suffix = "ou=Users,dc=syroidmanor,dc=com"




上一节还可以再添加一条选项:ldap root passwd =。如果有其它选项存在,那么将管理员密码原封不动地留在配置文件中就决不是一个好主意(在 /etc/openldap/slapd.conf 情况下,不存在其它选项)。在这种情况下我们确实另有选择 ― 可以将它作为秘密隐藏在 tdb 数据库中。
管理秘密整个练习的目的是将所有用户认证信息存储到一个中央资源库(也即 LDAP 目录)中。但是 Samba 守护程序必须代表 LDAP 管理员更改那里存储的信息。这意味着 Samba 必须知道管理员的密码。我们加密了该密码并将它储存在只有 Samba 能够访问的 tdb 数据库中,而不是将该密码放在他人可能“闯入”的文件中。完成这一操作的命令是:
1
smbpasswd -w




这一操作将创建一个名为 secrets.tdb 的文件,在缺省安装的情况下该文件存储在目录 /usr/local/samba/private 中。注:您在上述操作中输入的密码必须与 /etc/openldap/slapd.conf 中包含的“秘密”密码匹配。
脚本更新我们需要对 smb.conf 作的最后的更改是两个选项行,其中一行允许用户从客户机更改其密码,另一行允许在必要时自动添加机器帐户。下面是这两个选项行:
1
2
3
4
5
6
7
8
9
;password sync
   passwd program = /usr/local/sbin/smbldap-passwd.pl -o %u
   passwd chat = *New*password* %n\n *Retype*new*password*
   %n\n *passwd:*all*authentication*tokens*updated*
   unix password sync = Yes

;automatically add trust accounts
   add user script = /usr/local/sbin/smbldap-useradd.pl
   -m -d /dev/null -g computers -s /bin/false




如您所见,我们只是用本教程中先前安装的 Perl 脚本替换了 /usr/local/samba/bin/smbpasswd 命令。之所以这样更改,是因为 smbpasswd 不知道如何与 LDAP 服务器交互;而取代它的 Perl 脚本则知道。下一页是完整的 smb.conf 清单。
完整的 smb.conf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
# /usr/local/samba/lib/smb.conf
# samba configuration file
# last updated: 4/19/2002 by tms

[global]

   ;basic server settings      
   workgroup = SYROIDMANOR
   netbios name = THOR
   server string = Samba-LDAP PDC running %v
   socket options = TCP_NODELAY IPTOS_LOWDELAY SO_SNDBUF=8192 SO_RCVBUF=8192

   DC and master browser settings
   os level = 64
   preferred master = yes
   local master = yes
   domain master = yes
   wins support = yes

   ;security and logging settings
   security = user
   encrypt passwords = yes
   log file = /var/log/samba/log.%m
   log level = 2
   max log size = 50
   hosts allow = 127.0.0.1 192.168.1.0/255.255.255.0

   ;password sync
   passwd program = /usr/local/sbin/smbldap-passwd.pl -o %u
   passwd chat = *New*password* %n\n *Retype*new*password* %n\n
   *passwd:*all*authentication*tokens*updated*
   unix password sync = Yes

   ;LDAP-specific settings
   ldap admin dn = "cn=Manager,dc=syroidmanor,dc=com"
   ldap server = localhost
   ldap port = 389
   ldap ssl = no
   ldap suffix = "ou=Users,dc=syroidmanor,dc=com"

   ;user profiles and home directory
   logon home = \\%L\%U\
   logon drive = H:
   logon path = \\%L\profiles\%U
   logon script = netlogon.bat
   
   ;automatically add trust accounts
   add user script = /usr/local/sbin/smbldap-useradd.pl
   -m -d /dev/null -g computers -s /bin/false

# ==== shares ====

[homes]
  comment = Home Directories
  valid users = %S
  browseable = no
  writeable = yes
  create mask = 0664
  directory mask = 0775

[profiles]
  path = /home/samba/profiles
  writeable = yes
  browseable = no
  create mask = 0600
  directory mask = 0700

[netlogon]
  comment = Network Logon Service
  path = /home/netlogon
  read only = yes
  browseable = no
  write list = tom




扔掉开关……关键时刻已经来到……现在是测试您手艺的时候了。在控制台(或控制台窗口中)以 root 用户输入(在 Red Hat 系统上,一些分发版对其初始化脚本使用不同的布局):
1
/etc/init.d/smb start [或者如果 Samba 已经运行,restart]




使用 Samba 总是很容易知道您是否拼错了选项或参数 ― 守护程序将在没有任何错误警告的情况下启动和退出。这就是为什么总是在 ps -ef | grep smb 命令后面跟上 Samba start|restart 是个好主意的原因。您应该看到至少一个 smbd 和一个 nmbd 守护程序正在运行。
如果 Samba 启动失败:
接下来我们将研究使用 IDEALX 脚本编制实用程序进行帐户管理。




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0