我很抱歉这有点不连贯,但希望有人能够理解这一点,了解我想要实现的目标并提供指点。
我有一台机器,它有两个网络接口,连接到两个不同的网络(其中一个网络为它提供其他几个服务,例如 DNS),运行两个独立的 Samba 实例,每个接口绑定一个。其中一个实例只是使用共享级别身份验证的工作组样式设置,一切运行正常。
问题是我希望将另一个实例加入到 MS Active Directory 域(由 MS Windows Small Business Server 2003 提供),以允许域用户的子集从另一个网络上的 Windows 计算机访问共享。
需要从域环境访问的用户在运行 Samba 的计算机上拥有帐户(其名称是其域用户名的全小写版本),但我不确定如何映射 UID,而且我读到的所有内容都涉及针对 AD 或其他 LDAP 服务器对该计算机上的帐户进行身份验证。澄清一下:我只希望针对 AD 对访问非工作组 Samba 实例的 AD 用户的凭据进行身份验证,而不是针对运行 Samba 的计算机上的帐户进行身份验证。
我希望这已经足够清楚了。
编辑:除了能够从 AD 访问 Samba 共享之外,我还需要能够从运行 Samba 的机器访问域上的共享,但仍然希望所有与 Samba 无关的内容在本地进行身份验证。
答案1
您可以相当轻松地完成此操作。您需要执行配置用户通过 AD 向 Linux 进行身份验证的所有步骤(KRB 配置、加入域),直到机器人(不包括 PAM 更改)。然后,您只需将 SAMBA 设置为使用 winbind 作为身份验证源。这是我用来实现相同效果的 smb.conf 的旧副本:
#======================= Global Settings =====================================
[global]
# Domain Authntication Settings
workgroup = <my domain>
server string = <Sever String>
security = ads
passdb backend = tdbsam
realm = <mydomain.com>
client use spnego = yes
ldap ssl = no
# logging
log level = 5
max log size = 50
# logs split per machine
log file = /var/log/samba/%m.log
# max 50KB per log file, then rotate
; max log size = 50
# User settings
username map = /etc/samba/smbusers
idmap uid = 10000-20000000
idmap gid = 10000-20000000
idmap backend = ad
; template primary group = <ad group>
template shell = /sbin/nologin
# Winbind Settings
winbind separator = +
winbind enum users = Yes
winbind enum groups = Yes
winbind netsted groups = Yes
winbind nested groups = Yes
winbind use default domain = Yes
#Other Globals
unix charset = LOCALE
server string = <my server name>
load printers = no
printing = cups
cups options = raw
; printcap name = /etc/printcap
#obtain list of printers automatically on SystemV
; printcap name = lpstat
; printing = cups
#============================ Share Definitions ==============================
[share]
comment = <share comment>
path = /srv/smb/share
guest ok = yes
valid users = "DOMAIN+testUser"
read only = yes
另外,如果你正在使用 Ubuntu,那么几个月前的 10.04LTS 版本中有一个 bug,这个 bug 完全破坏了这个设置(没有人可以验证)——如果是这种情况,请从 SAMBA 网站获取一个版本