使用本地用户身份验证将 Samba 加入 Active Directory

使用本地用户身份验证将 Samba 加入 Active Directory

我很抱歉这有点不连贯,但希望有人能够理解这一点,了解我想要实现的目标并提供指点。

我有一台机器,它有两个网络接口,连接到两个不同的网络(其中一个网络为它提供其他几个服务,例如 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 网站获取一个版本

相关内容