将CentOS 6上的Samba 3加入Active Directory

时间:2020-01-09 10:41:07  来源:igfitidea点击:

说明

在小型环境中,仅使用本地帐户管理Linux服务器是可管理的。但是,在托管成百上千个服务器的大型环境中,管理每个服务器,手动维护用户帐户和密码的任务将是一项艰巨的任务。需要有效的中央身份和访问解决方案来管理此类环境。在大型Microsoft Windows数据中心中,通常会看到Active Directory被用作身份和访问解决方案。

Samba能够连接到Active Directory域,以从Windows环境中验证用户凭据。但是,由于Samba不维护中央身份存储,因此每个Samba服务器之间每个用户的UID和GID将有所不同。

安装所需的Linux软件包

将以下软件包安装到Linux机器上。没有域凭据,我们将无法加入Active Directory域或者使用域凭据进行身份验证。

  • Samba
  • Samba-winbind
  • oddjob-mkhomedir

要同时安装所有三个软件包,请以Root或者具有Root特权运行以下命令。

yum install samba samba-winbind oddjob-mkhomedir

配置Samba

Samba是允许Linux与Windows交互的关键组件。必须使用NetBIOS广播和域前缀将其配置为使Linux服务器在网络上显示为Windows计算机。

  • 制作/etc/samba/smb.conf的备份副本
cp /etc/samba/smb.conf /etc/samba/smb.conf.old
  • 在文本编辑器中打开/etc/samba/smb.conf。在此示例中,我将使用VI。
vi /etc/samba/smb.conf
  • 编辑smb.conf以使其类似于下面的示例,修改突出显示的行以匹配环境。
[global]
log file = /var/log/samba/log.%m
max log size = 50
security = ads
::HL::netbios name = LINUX-SRV1
::HL::realm = CONTOSO.COM
::HL::password server = MYDC01.CONTOSO.COM MYDC02.CONTOSO.COM
::HL::workgroup = CONTOSO
idmap uid = 10000-500000
idmap gid = 10000-500000
winbind separator =  
winbind enum users = no
winbind enum groups = no
winbind use default domain = yes
template homedir = /home/%U
template shell = /bin/bash
client use spnego = yes
domain master = no

了解选项的定义:

netbios名称
Samba服务器将用于Windows客户机的netbios(单标签)名称
Samba服务器正在加入的Active Directory域的完全限定名
将处理Samba登录请求的域控制器列表,用空格分隔
与Samba服务器的netbios名称类似,但域除外。Active Directory域(如Windows计算机)具有netbios名称
有关Samba选项的详细信息,请查看官网手册

修改名称服务交换机配置文件

Linux使用名称服务开关来查找帐户数据库。默认情况下,仅本地文件将被访问。我们需要通过添加winbind作为数据库位置来将Linux指向域控制器。

  • 在文本编辑器中打开/etc/nsswitch.conf。
vi /etc/nsswitch.conf
  • 找到以下几行:
passwd: files
group: files

然后将winbind添加到它们上,如下所示:

passwd: files winbind
group: files winbind

编辑Kerberos。配置文件

Active Directory使用Kerberos(一种开源网络身份验证协议)来对用户进行身份验证。在Linux服务器之前

  • 在文本编辑器中打开/etc/krb5.conf
vi /etc/krb5.conf
  • 对其进行修改,使其看起来像下面的示例,替换[value]以匹配环境。
[libdefaults]
::HL::default_realm = CONTOSO.COM
dns_lookup_realm = true
dns_lookup_kdc = true
ticket_lifetime = 24h
renew_lifetime = 7d
forwardable = true

[realms]
::HL::REALM.INTERNAL = {
::HL::kdc = mydc01.contoso.com
::HL::admin_server = mydc01.contoso.com
::HL::default_domain = contoso.com
::HL::}
[domain_realm]
::HL::.contoso.com = CONTOSO.COM
::HL::contoso.com = CONTOSO.COM

启动守护程序

已经设置了用户认证设置。现在,我们需要启动守护程序并将其配置为在每次重新启动后自动启动。

  • Samba服务器
service smb start; chkconfig smb on
  • Winbind
service winbind start; chkconfig winbind on
  • 消息总线守护程序
service messagebus start; chkconfig messagebus on

将Samba服务器加入域

我们终于到了可以将Samba服务器加入Active Directory域的部分。运行以下命令以加入域,将Administrator替换为我们域中有权加入计算机的用户的用户名:

net ads join -U Administrator