一 简介

从版本4.0开始,samba可以作为Active Directory(AD)域控制器(DC)运行,如果在生产环境中安装samba,建议运行两个或者多个DC用于故障转移

本文介绍如何让将一个Samba设置为新AD集群的第一个DC,另外,如果要将samba NT4域迁移到Samaba AD,也可以参考本文

samba作为AD DC支持:

集成的LDAP服务器作为AD后端

在heimdal的kerberos密钥分发中心(KDC)

如果运行Samba 4.7或者更高版本并且已经使用该选项构建,samba为您的操作系统提供的MIT Kerberos  KDC提供的实验支持with-system-mitkrb5.在其他情况下,Samba使用Samba中包含的heimdal KDC。

二 准备安装

选择AD DC的主机名

不要将仅使用NT4的术语作为主机名,例如PDC或者BDC。这些模式在AD中不存在并导致混淆

选择AD林的DNS域。该名称也将作为 AD Kerberos领域

确保使用不需要更改的DNS域来配置AD。Samba不支持重命名AD DNS区域和Kerberos领域。不要.local用于TLD,Avahi使用它。

在DC上使用静态的IP地址

禁用resolvconf自动更新/etc/resolv.confDNS解析程序配置文件的工具,例如。AD DC和域成员必须使用能够解析AD DNS区域的DNS服务器。

验证没有正在运行的Samba进程

#ps ax | egrep“samba | smbd | nmbd | winbindd”

如果输出列出的任何sambasmbdnmbd或winbindd进程,关掉进程。

验证/etc/hosts DC上的文件是否正确解析了完全限定域名(FQDN)和短主机名到DC的LAN IP地址。例如

127.0.0.1 localhost localhost.localdomain
10.99.0.1 DC1.samdom.example.com DC1

主机名和FQDN不得解析为127.0.0.1IP地址或任何其他IP地址,而不是DC的LAN接口上使用的IP地址。

如果您之前在此主机上运行了Samba安装

  删除现有smb.conf文件。列出文件的路径:

#smbd -b | grep“CONFIGFILE”
CONFIGFILE:/usr/local/samba/etc/samba/smb.conf

删除所有Samba数据库文件,例如*.tdb*.ldb文件。列出包含Samba数据库的文件夹

#smbd -b | egrep“LOCKDIR | STATEDIR | CACHEDIR | PRIVATE_DIR”
LOCKDIR:/ usr / local / samba / var / lock /
STATEDIR:/ usr / local / samba / var / locks /
CACHEDIR:/ usr / local / samba / var / cache /
PRIVATE_DIR :/ usr / local / samba / private /

从干净的环境开始有助于防止混淆,并确保来自任何先前Samba安装的文件不会与您的新域DC安装混合

  删除现有/etc/krb5.conf文件:

#rm /etc/krb5.conf

三 安装Samba

3.1 操作系统要求

  构建Samba所需要的程序包安装依赖

安装以下软件包以在最小的Red Hat Enterprise Linux 7,CentOS 7或Scientific Linux 7安装上将Samba构建为Active Directory(AD)域控制器(DC):

#yum install attr bind-utils docbook-style-xsl gcc gdb krb5-workstation \
libsemanage-python libxslt perl perl-ExtUtils-MakeMaker \
perl-Parse-Yapp perl-Test-Base pkgconfig policycoreutils-python \
python2-crypto gnutls-devel libattr-devel keyutils-libs-devel \
libacl-devel libaio-devel libblkid-devel libxml2-devel openldap-devel \
pam-devel popt-devel python-devel readline-devel zlib-devel systemd-devel \
lmdb-devel jansson-devel gpgme-devel pygpgme libarchive-devel
Red Hat Enterprise Linux 7不包含构建Samba AD DC所需的所有软件包。在安装软件包之前,请启用Enterprise Linux(EPEL)存储库的外部Extra Packages。有关详细信息,请参阅https://fedoraproject.org/wiki/EPEL。在CentOS 7和Scientific Linux 7上不需要启用EPEL存储库。

  如果DC应作为CUPS后端的打印服务器(不推荐),另外安装:

#yum install cups-devel

  Samba域名成员

  Red Hat Enterprise Linux / CentOS / Scientific Linux

# yum install autoconf automake gcc gdb krb5-devel krb5-workstation \
openldap-devel make pam-devel python-devel docbook-style-xsl \
libacl-devel libattr-devel libxslt

3.2 文件系统支持

  要设置具有扩展访问控制列表(ACL)支持的共享,托管共享的文件系统必须xattr启用用户和系统名称空间。在Samba Active Directory(AD)域控制器(DC)上,samba-tool自动为创建Sysvol共享的文件系统验证此设置。

  EXT4

  fstab文件,不必修改/ etc / fstab,ext4默认使用所有必需的选项。

  内核支持,确保您的内核启用了以下选项:

CONFIG_EXT4_FS_SECURITY = Y
CONFIG_EXT4_FS_POSIX_ACL = Y

  EXT3

  fstab文件,对于Samba共享的该类型的文件系统,请将以下选项添加到/ etc / fstab:

/dev/...          /srv/samba/demo          ext3          user_xattr,acl,barrier=           

注意:该barrier=1选项可确保tdb事务可以安全地防止意外断电。

请小心修改你的fstab。它可能导致无法启动的系统!

内核支持,确保您的内核启用了以下选项:

CONFIG_EXT3_FS_SECURITY=y
CONFIG_EXT3_FS_POSIX_ACL=y

  XFS

  fstab文件,您的fstab中不需要特殊的挂载选项

  内核支持,确保您的内核启用了以下选项:

CONFIG_XFS_POSIX_ACL=y

  没有xattr支持的文件系统

  注意:这不推荐!!!

  如果您没有支持xattr的文件系统,可以通过在smb.conf中添加以下行来模拟它:

 posix:eadb = /usr/local/samba/private/eadb.tdb

  这将在该tdb中放置所有额外的文件属性(NT ACL,DOS EA,流等)。

  注意:这种方式效率不高,不能很好地扩展。这就是它不应该用于生产的原因!

  测试你的文件系统

  注意:没有xattr支持的文件系统不需要这样做。

  在开始测试之前,请确保已attr安装软件包!

  以root身份运行以下命令以测试xattr支持:

# touch test.txt
# setfattr -n user.test -v test test.txt
# setfattr -n security.test -v test2 test.txt

  以下命令应返回显示的输出:

#getfattr -d test.txt #file
:test.txt
user.test =“test” #getfattr -n security.test -d test.txt #file
:test.txt
security.test =“test2”

  以root用户身份运行以下命令,测试扩展ACL支持:

#touch test.txt #setfacl -mg:adm:rwx test.txt

  以下命令应返回显示的输出:

#getfacl test.txt #file
:test.txt
#owner:root
#group
:root user :: rw-
group :: r--
group:adm:rwx
mask :: rwx
other :: r--

  如果Operation not supported显示错误:

你的内核配置不正确,
或者您的文件系统未使用正确的选项安装,或
你没有使用root用户运行命令。

或者从source构建Samba

特定于分发的程序包安装

四 配置Samba Active Directory

Samba AD配置过程创建AD数据库并添加初始记录,例如域管理账户所需的DNS条目

如果要将Samba NT4域迁移到AD,对Samba经典升级

AD配置需要root权限才能创建文件和设置权限。

samba-tool domain provision命令提供了几个用于交互式和非交互式设置的参数,可以使用help看详细指令

#samba-tool domain provision --help

配置新AD时,建议通过将--use-rfc2307参数传递给samba-tool domain provision命令来启用NIS扩展。这使您可以在AD中存储Unix属性,例如用户ID(UID),主目录路径,组ID(GID)。启用NIS扩展没有任何缺点。但是,在现有域中启用它们需要手动扩展AD架构。

4.1 参数说明

在配置期间设置一下参数

交互式设置

非交互模式参数

说明

--use-rfc2307

--use-rfc2307

启用NIS扩展。

Realm

--realm

Kerberos领域。AD DNS域的大写版本。例如:SAMDOM.EXAMPLECOM。

Domain

--domain

NetBIOS域名(工作组)。这可以是任何东西,但它必须是一个单词,不超过15个字符且不包含点。建议使用AD DNS域的第一部分。例如:samdom。不要使用计算机短主机名。

Server Role

--server-role

安装域控制器DC角色。

DNS backend

--dns-backend

设置DNS后端。必须使用DNS后端安装AD中的第一个DC。请注意,该BIND9_FLATFILE版本不受支持,将在以后的Samba版本中删除。

DNS forwarder IP address

无法使用

此设置仅在使用SAMBA_INTERNAL DNS后端时可用。

Administrator password

--adminpass

设置域管理员密码。如果密码与复杂性要求不匹配,则配置将失败。

samba-tool domain provision 命令经常使用的其他参数:

--option="interfaces=lo eth0" --option="bind interfaces only=yes":如果您的服务器具有多个网络接口,请使用这些选项将Samba绑定到指定的接口。这使samba-tool命令能够在连接期间在目录中注册正确的LAN IP地址。

不要NONE用作DNS后端,它不受支持,将在以后的Samba版本中删除。
如果使用Bind作为DNS后端,请不要使用BIND9_FLATFILE,它不受支持,将在以后的Samba版本中删除。
在AD域中配置第一个DC后,请不要在同一域中配置任何其他DC,再加入任何DC。

4.2 以交模式配置Samba AD

要以交互的方式配置Samba AD,请运行:

# samba-tool domain provision --use-rfc2307 --interactive
Realm [SAMDOM.EXAMPLE.COM]: SAMDOM.EXAMPLE.COM
Domain [SAMDOM]: SAMDOM
Server Role (dc, member, standalone) [dc]: dc
DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]: SAMBA_INTERNAL
DNS forwarder IP address (write 'none' to disable forwarding) [10.99.0.1]: 8.8.8.8
Administrator password: Passw0rd
Retype password: Passw0rd
Looking up IPv4 addresses
Looking up IPv6 addresses
No IPv6 address will be assigned
Setting up share.ldb
Setting up secrets.ldb
Setting up the registry
Setting up the privileges database
Setting up idmap db
Setting up SAM db
Setting up sam.ldb partitions and settings
Setting up sam.ldb rootDSE
Pre-loading the Samba and AD schema
Adding DomainDN: DC=samdom,DC=example,DC=com
Adding configuration container
Setting up sam.ldb schema
Setting up sam.ldb configuration data
Setting up display specifiers
Modifying display specifiers
Adding users container
Modifying users container
Adding computers container
Modifying computers container
Setting up sam.ldb data
Setting up well known security principals
Setting up sam.ldb users and groups
Setting up self join
Adding DNS accounts
Creating CN=MicrosoftDNS,CN=System,DC=samdom,DC=example,DC=com
Creating DomainDnsZones and ForestDnsZones partitions
Populating DomainDnsZones and ForestDnsZones partitions
Setting up sam.ldb rootDSE marking as synchronized
Fixing provision GUIDs
A Kerberos configuration suitable for Samba has been generated at /usr/local/samba/private/krb5.conf
Setting up fake yp server settings
Once the above files are installed, your Samba4 server will be ready to use
Server Role: active directory domain controller
Hostname: DC1
NetBIOS Domain: SAMDOM
DNS Domain: samdom.example.com
DOMAIN SID: S------

交互式配置模式支持将其他参数传递给samba-tool domain provision命令。这使您可以修改不属于交互式设置的参数。

4.3 以非交互式配置Samba AD

例如,要使用以下配置设置非交互式配置Samba AD:

  服务器角色:AD

  一起用NIS扩展

  内部DNS后端

  Kerberos领域和AD DNS区域:samdom.example.com

  NetBIOS域名:SAMDOM

  域管理员密码:Passw0rd

#samba-tool domain provision --server-role = dc --use-rfc2307 --dns-backend = SAMBA_INTERNAL --realm = SAMDOM.EXAMPLE.COM --domain = SAMDOM --adminpass = Passw0rd

五 设置AD DNS后端

如果使用SAMBA_INTERNAL DNS后端配置DC请跳过此步骤:

设置BIND DNS服务器和BIND_DLZ 模块。

启动BIND DNS服务器。例如

#systemctl start named

六 配置DNS解析器

AD中的域成员使用DNS来定位服务,例如LDAP和Kerberos。为此,他们需要使用能够解析AD DNS区域的DNS服务器。

在DC上,在文件domainnameserver参数中设置DC中的AD DNS域和DC的IP /etc/resolv.conf。例如:

search samdom.example.com
nameserver 10.99.0.1

七 创建一个反向区域

可以添加反向查找区域

# samba-tool dns zonecreate <Your-AD-DNS-Server-IP-or-hostname> 0.99..in-addr.arpa
Password for [administrator@SAMDOM.EXAMPLE.COM]:
Zone 0.99..in-addr.arpa created successfully

如果您需要多个反向区域(多个子网),只需再次运行上述命令,但使用另一个子网的数据

反向区域直接生效,无需重启Samba或BIND

八 配置Kerberos

在AD中,kerberos用于对用户,计算机和服务进行身份验证

在配置期间,Samba为您创建了kerberos配置文件,将此配置文件复制到操作系统的Kerberos配置中。例如

# cp /usr/local/samba/private/krb5.conf /etc/krb5.conf
不要创建指向生成的krb5.conf文件的符号链接。在Samba .7及更高版本中,/usr/local/samba/private/除用户之外的其他用户不再可以访问该目录root。如果文件是符号链接,则其他用户无法读取该文件,例如,如果使用BIND_DLZDNS后端,则动态DNS更新将失败。

预先创建Kerberos配置使用DBNS服务(SRV)资源记录来定位KDC

九 测试Samba AD DC

要samba手动启动服务

#samba

samba不提供System V init的脚本,systemd,upstart,或者其他的配置文件

如果使用软件包安装Samba,请使用软件包中包含的脚本或服务配置文件来启动Samba。

如果您构建了Samba,可以使用 init的脚本,systemd,upstart管理

9.1 验证文件服务器

列出DC提供的共享

$ smbclient -L localhost -U%
Domain=[SAMDOM] OS=[Unix] Server=[Samba x.y.z] Sharename Type Comment
--------- ---- -------
netlogon Disk
sysvol Disk
IPC$ IPC IPC Service (Samba x.y.z)
Domain=[SAMDOM] OS=[Unix] Server=[Samba x.y.z] Server Comment
--------- ------- Workgroup Master
--------- -------

The netlogon and sysvol shares were auto-created during the provisioning and must exist on a DC.

要验证身份验证,请netlogon使用域管理员帐户连接到共享:

$ smbclient //localhost/netlogon -UAdministrator -c 'ls'
Enter Administrator's password:
Domain=[SAMDOM] OS=[Unix] Server=[Samba x.y.z]
. D 0 Tue Nov 1 08:40:00 2016
.. D 0 Tue Nov 1 08:40:00 2016 49386 blocks of size 524288. 42093 blocks available

9.2 验证DNS

要验证您的AD DNS配置是否正常工作,请查询一些DNS记录:

_ldap域中基于tcp的SRV记录:

$ host -t SRV _ldap._tcp.samdom.example.com.
_ldap._tcp.samdom.example.com has SRV record dc1.samdom.example.com.

_kerberos域中基于udp的SRV资源记录:

$ host -t SRV _kerberos._udp.samdom.example.com.
_kerberos._udp.samdom.example.com has SRV record dc1.samdom.example.com.

域控制器的A记录:

$ host -t A dc1.samdom.example.com.
dc1.samdom.example.com has address 10.99.0.1

9.3 验证Kerberos

请求域管理员帐户的Kerberos票证:

$ kinit administrator
Password for administrator@SAMDOM.EXAMPLE.COM:

如果未将user@REALM格式中的主体传递给kinit命令,则会自动附加Kerberos域。
将Kerberos域设置为大写

列出缓存的Kerberos票证:

$ klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: administrator@SAMDOM.EXAMPLE.COM Valid starting Expires Service principal
01.11. :: 12.11. :: krbtgt/SAMDOM.EXAMPLE.COM@SAMDOM.EXAMPLE.COM
renew until 02.11. ::

9.4 配置时间同步

Kerberos需要在所有域成员上同步时间。

9.5 使用域控制器作为文件服务器

虽然Samba AD DC能够提供文件共享,但与所有其他安装模式一样,Samba团队不建议将DC用作文件服务器,原因如下:

除了最小的组织之外,拥有多个DC是一个非常好的备份措施,并使升级更安全
它鼓励DC的升级也是每年或每两年升级主机操作系统,因为没有复杂的数据要转换或涉及其他服务。
这意味着升级可以通过安装新的,并在更改中进行复制来完成,这些更改在Samba中得到了更好的测试,获得了新功能并避免了许多挥之不去的数据损坏风险。
DC和文件服务器具有组织希望升级的不同点。DC和文件服务器上的新功能需要在不同的时间。目前,AD DC正在快速发展以获得功能,而文件服务器在20多年后,更为保守。
在DC上强制执行强制smb签名。

如果您决定将Samba DC用作文件服务器,请考虑在DC上运行包含单独的Samba Unix域成员的VM并使用它。

如果必须将Samba DC用作文件服务器,则应注意自动启用的acl_xattr虚拟文件系统(VFS)对象使您只能使用Windows访问控制列表(ACL)配置共享。将POSIX ACL与Samba DC上的共享一起使用不起作用。

要为网络共享提供Samba的全部功能,请使用文件共享设置Samba域成员。

如果您只有一个小域(小型办公室,家庭网络)并且不想遵循Samba团队的建议并将DC另外用作文件服务器,请在开始设置共享之前配置Winbindd。

如果您确实使用AD DC作为文件服务器,请不要添加Unix域成员上使用的任何“idmap config”行。他们不会工作,会造成问题。
如果确实使用AD DC作为文件服务器,则必须从Windows设置权限,不要尝试使用任何旧方法(强制用户等)。它们无法正常工作并会导致问题。

参考文献:

https://wiki.samba.org/index.php/Setting_up_Samba_as_an_Active_Directory_Domain_Controller

将Samba设置为Active Directory域控制器的更多相关文章

  1. install Active Directory域控制器

    设置Active Directory域控制器 正如我们在网络与系统配置专题文章中所提到的那样,我们已将两部服务器设置为对应于内部域“intdomain.com”的Active Directory域控制 ...

  2. 您真的会修改Active Directory域控制器计算机名称吗

    从我开始做微软这行开始,就经常听说某某公司由于什么原因需要修改Active Directory域控制器计算机名称,但发现好多公司都是直接修改,导致了各种奇葩的问题,今天就给大家推荐一个修改Active ...

  3. cmd 执行Dcpromo错误:在该 SKU 上不支持 Active Directory 域服务安装向导,Windows Server 2008 R2 Enterprise 配置AD(Active Directory)域控制器

    今天,要安装AD域控制器,运行dcpromo结果提示:在该 SKU 上不支持 Active Directory 域服务安装向导. 以前弄的时候直接就通过了,这次咋回事?终于搞了大半天搞定了. 主要原因 ...

  4. Windows Server 2008 R2 配置AD(Active Directory)域控制器

    实施过程: 一.安装Windows Server2008 R2操作系统 (过程略) 二.安装域控制器 1. 修改电脑名称 2.修改电脑DNS 三.配置AD 1.在"服务器管理器"- ...

  5. 无法与域Active Directory域控制器(AD DC)连接(虚机加域出错问题)

    今天建了两台虚机用的VMWARE,一台做域控,一台做应用服务器,但是部署好域控要把应用服务器加入域时候报错 虚机网卡设置桥接并设置好IP使两台虚机在同一个局域网内,通过ip地址互ping能ping通, ...

  6. Windows Server 2008 R2 配置AD(Active Directory)域控制器 -zhai zi wangluo

    http://files.cnblogs.com/zhongweiv/Windows_Server_2008_R2_%E9%85%8D%E7%BD%AEActive_Directory%E5%9F%9 ...

  7. 客户端无法加入域,报错:“无法与域‘xxx.com’的Active Directory域控制器(AD DC)链接” 请确保键入的域名正确

    1.客户端能不能解析到域名? nslookup 一下域名看看解析到的IP的地址 2.客户端的DNS要指向DC 3.客户端的相关服务,workstation,TCP/IP NetBios Helper, ...

  8. Active Directory域

    引言 在 Microsoft® Windows® 2000 Server 操作系统的诸多增强功能中,Microsoft Active Directory™ 功能的引入意义最为重大,但也最常引起困惑.与 ...

  9. Active Directory 域服务安装与测试

    Active Directory 域服务安装与测试 实验原理: 安装域服务并创建用户,把另一个电脑加入域中,然后用域账户登录以及用本地账户登录测试 实验条件:windows server 2008(域 ...

随机推荐

  1. idea 使用优化

    1.创建类的模板 /** * Copyright (C), 2015-${YEAR}, XXX有限公司 * FileName: ${NAME} * Author: ${USER} * Date: ${ ...

  2. 2018-8-10-WPF-修改按钮按下的颜色

    title author date CreateTime categories WPF 修改按钮按下的颜色 lindexi 2018-08-10 19:16:53 +0800 2018-03-15 2 ...

  3. HSV 和 HLS颜色空间

    颜色空间 颜色空间是特定的颜色组织:它提供了将颜色分类,并以数字图像表示的方法. RGB 是红绿蓝颜色空间.你可以将其视为 3D 空间,在这种情况下是立方体,其中任何颜色都可以用 R.G 和 B 值的 ...

  4. 网上很多laravel中cookie的使用方法。

    https://blog.csdn.net/chen529834149/article/details/75244718 概述 Cookie的添加其实很简单,直接使用Cookie::make(),在使 ...

  5. supersocket实现你的命令

    现在, 如果你有一个命令行协议的服务器实例 "IronPythonServer", 而且我们要用 Python 创建一个 "ADD" 命令用于让两个整数相加,然 ...

  6. [ Laravel 5.1 文档 ] 服务 —— 帮助函数

    http://laravelacademy.org/post/205.html 1.简介 Laravel自带了一系列PHP帮助函数,很多被框架自身使用,然而,如果你觉得方便的话也可以在应用中随心所欲的 ...

  7. phpstorm 里能做git的命令行操作吗?

    在VCS菜单下面有 GIT -> Branches 然后会弹出branch菜单,后面怎么操作应该不需要解释吧,所有的branch都列出来自己选 在Tools菜单下面有Open Terminal. ...

  8. Python--day72--ajax完整版

    来源: AJAX准备知识:JSON 什么是 JSON ? JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation) JSON 是轻量级的文本数据交换格 ...

  9. C# 16 进制字符串转 int

    最近在写硬件,发现有一些测试是做 16 进制的字符串,需要把他转换为整形才可以处理. 本文告诉大家如何从 16 进制转整形 如果输入的是 0xaa 这时转换 int 不能使用 Parse 不然会出现异 ...

  10. SQL2008 R2安装完成后开启services服务指引和 sa账号启用、数据类型