Samba 系列（一）：在 Ubuntu 系统上使用 Samba4 来创建活动目录架构
这篇指南将阐明在 Ubuntu 16.04 和 Ubuntu 14.04 操作系统上安装配置 Samba4 作为域控服务器组件的过程中，你需要注意的每一个步骤。
Samba 活动目录
218.88.44.29
顶级域名用 .lan/.local 都是不推荐的，至于理由在 SAMBA 的 FAQ 有详细说明。此外 SAMBA 目前无法完全替代 Active Directory 的功能，这点 FAQ 也是有说明的。关于 Active Directory 技术规范，在微软的 MSDN 有专门的网页提供一系列 PDF 文件可供下载，不过里面涉及到的代码仅限于伪代码。
来自四川成都的 Chrome 55.0|GNU/Linux 用户
2016-12-26T20:04:48.000
218.88.44.29
&quot;森林级别&quot; 在微软翻译为林级别。
来自四川成都的 Chrome 55.0|GNU/Linux 用户
2016-12-26T20:08:28.000
118.122.120.11
上面的回复有问题。准确的是“林功能级别”。
来自四川成都的 Chrome 55.0|GNU/Linux 用户
2016-12-27T08:42:50.000
221.12.107.182
我们用域环境主要使用组策略，所以老老实实用 win server 吧，用 samba 加入 win server 的域。
来自浙江台州的 Firefox 50.0|Windows 10 用户
2016-12-27T08:51:39.000
58.20.82.218
smb使用很古老的udp控制，tcp数据传输方式，非常非常不友好。
来自湖南长沙的 QQ Browser 9.5|Windows 7 用户
2016-12-27T10:58:44.000
123.120.59.100
好的，因为我没看到，检索之下发现有两种说法，感觉“森林”更习惯一些。既然有官方译法，那我就修改下。
linux [Chrome 55.0|Mac 10.11]
2016-12-27T12:15:45.000
14.131.1.37
还有redhat的sssd服务也是一个很好的东西。
拿铁不加糖 [Chrome 55.0|Windows 10]
2017-01-06T20:32:34.000
这篇指南将阐明在 Ubuntu 16.04 和 Ubuntu 14.04 操作系统上安装配置 Samba4 作为域控服务器组件的过程中，你需要注意的每一个步骤。
Samba 是一个自由的开源软件套件，用于实现 Windows 操作系统与 Linux/Unix 系统之间的无缝连接及共享资源。


Samba 不仅可以通过 SMB/CIFS 协议组件来为 Windows 与 Linux 系统之间提供独立的文件及打印机共享服务，它还能实现<ruby> 活动目录 <rp>  （ </rp> <rt>  Active Directory </rt> <rp>  ） </rp></ruby><ruby> 域控制器 <rp>  （ </rp> <rt>  Domain Controller </rt> <rp>  ） </rp></ruby>的功能，或者让 Linux 主机加入到域环境中作为域成员服务器。当前的 Samba4 版本实现的 AD DC 域及林功能级别可以取代 Windows 2008 R2 系统的域相关功能。


![](/data/attachment/album/201612/26/174604fkcolbrtc5frlrpf.jpg)


本系列的文章的主要内容是使用 Samba4 软件来配置活动目录域控制器，涉及到 Ubuntu、CentOS 和 Windows 系统相关的以下主题：


* 第 1 节：在 Ubuntu 系统上使用 Samba4 来创建活动目录架构
* 第 2 节：在 Linux 命令行下管理 Samba4 AD 架构
* 第 3 节：在 Windows 10 操作系统上安装 RSAT 工具来管理 Samba4 AD
* 第 4 节：从 Windows 中管理 Samba4 AD 域控制器 DNS 和组策略
* 第 5 节：使用 Sysvol Replication 复制功能把 Samba 4 DC 加入到已有的 AD
* 第 6 节：从 Linux DC 服务器通过 GOP 来添加一个共享磁盘并映射到 AD
* 第 7 节：把 Ubuntu 16.04 系统主机作为域成员服务器添加到 AD
* 第 8 节：把 CenterOS 7 系统主机作为域成员服务器添加到 AD
* 第 9 节：在 AD Intranet 区域创建使用 kerberos 认证的 Apache Website


这篇指南将阐明在 Ubuntu 16.04 和 Ubuntu 14.04 操作系统上安装配置 Samba4 作为域控服务器组件的过程中，你需要注意的每一个步骤。


以下安装配置文档将会说明在 Windows 和 Linux 的混合系统环境中，关于用户、机器、共享卷、权限及其它资源信息的主要配置点。


#### 环境要求：


1. [Ubuntu 16.04 服务器安装](http://www.tecmint.com/installation-of-ubuntu-16-04-server-edition/)
2. [Ubuntu 14.04 服务器安装](http://www.tecmint.com/ubuntu-14-04-server-installation-guide-and-lamp-setup/)
3. 为你的 AD DC 服务器[设置静态IP地址](http://www.tecmint.com/set-add-static-ip-address-in-linux/)


### 第一步：初始化 Samba4 安装环境


1、 在开始安装 Samba4 AD DC 之前，让我们先做一些准备工作。首先运行以下命令来确保系统已更新了最新的安全特性，内核及其它补丁：



```
$ sudo apt-get update 
$ sudo apt-get upgrade
$ sudo apt-get dist-upgrade

```

2、 其次，打开服务器上的 `/etc/fstab` 文件，确保文件系统分区的 ACL 已经启用 ，如下图所示。


通常情况下，当前常见的 Linux 文件系统，比如 ext3、ext4、xfs 或 btrfs 都默认支持并已经启用了 ACL 。如果未设置，则打开并编辑 `/etc/fstab` 文件，在第三列添加 `acl`，然后重启系统以使用修改的配置生效。


![Enable ACL's on Linux Filesystem](/data/attachment/album/201612/26/174621ehlf2q8zzhq9yfjc.png)


*启动 Linux 文件系统的 ACL 功能*


3、 最后使用一个具有描述性的名称来[设置主机名](http://www.tecmint.com/set-hostname-permanently-in-linux/) ，比如这往篇文章所使用的 `adc1`。通过编辑 `/etc/hostname` 文件或使用使用下图所示的命令来设置主机名。



```
$ sudo hostnamectl set-hostname adc1

```

为了使修改的主机名生效必须重启服务器。


### 第二步： 为 Samba4 AD DC 服务器安装必需的软件包


4、 为了让你的服务器转变为域控制器，你需要在服务器上使用具有 root 权限的账号执行以下命令来安装 Samba 套件及所有必需的软件包。



```
$ sudo apt-get install samba krb5-user krb5-config winbind libpam-winbind libnss-winbind

```

![Install Samba on Ubuntu](/data/attachment/album/201612/26/174622j7ee5rzhg6fgu676.png)


*在 Ubuntu 系统上安装 Samba 套件*


5、 安装包在执行的过程中将会询问你一系列的问题以便完成域控制器的配置。


在第一屏中你需要以大写为 Kerberos 默认 REALM 输入一个名字。以**大写**为你的域环境输入名字，然后单击回车继续。


![Configuring Kerberos Authentication](/data/attachment/album/201612/26/174622da1nt1t1jzhi00bj.png)


*配置 Kerosene 认证服务*


6、 下一步，输入你的域中 Kerberos 服务器的主机名。使用和上面相同的名字，这一次使用**小写**，然后单击回车继续。


![Set Hostname Kerberos Server](/data/attachment/album/201612/26/174623sfp261fy1666oy4t.png)


*设置 Kerberos 服务器的主机名*


7、 最后，指定 Kerberos realm 管理服务器的主机名。使用更上面相同的名字，单击回车安装完成。


![Set Hostname Administrative Server](/data/attachment/album/201612/26/174623ngmtgbg0gnpd1um5.png)


*设置管理服务器的主机名*


### 第三步：为你的域环境开启 Samba AD DC 服务


8、 在为域服务器配置 Samba 服务之前，先运行如下命令来停止并禁用所有 Samba 进程。



```
$ sudo systemctl stop samba-ad-dc.service smbd.service nmbd.service winbind.service
$ sudo systemctl disable samba-ad-dc.service smbd.service nmbd.service winbind.service

```

9、 下一步，重命名或删除 Samba 原始配置文件。在开启 Samba 服务之前，必须执行这一步操作，因为在开启服务的过程中 Samba 将会创建一个新的配置文件，如果检测到原有的 `smb.conf` 配置文件则会报错。



```
$ sudo mv /etc/samba/smb.conf /etc/samba/smb.conf.initial

```

10、 现在，使用 root 权限的账号并接受 Samba 提示的默认选项，以交互方式启动<ruby> 域供给 <rp>  （ </rp> <rt>  domain provision </rt> <rp>  ） </rp></ruby>。


还有，输入正确的 DNS 服务器地址并且为 Administrator 账号设置强密码。如果使用的是弱密码，则域供给过程会失败。



```
$ sudo samba-tool domain provision --use-rfc2307 –interactive

```

![Samba Domain Provisioning](/data/attachment/album/201612/26/174624cvativsroh3etzks.png)


*Samba 域供给*


11、 最后，使用以下命令重命名或删除 Kerberos 认证在 `/etc` 目录下的主配置文件，并且把 Samba 新生成的 Kerberos 配置文件创建一个软链接指向 `/etc` 目录。



```
$ sudo mv /etc/krb6.conf /etc/krb5.conf.initial
$ sudo ln –s /var/lib/samba/private/krb5.conf /etc/

```

![Create Kerberos Configuration](/data/attachment/album/201612/26/174624nzk97dukuh961haf.png)


*创建 Kerberos 配置文件*


12、 启动并开启 Samba 活动目录域控制器后台进程



```
$ sudo systemctl start samba-ad-dc.service
$ sudo systemctl status samba-ad-dc.service
$ sudo systemctl enable samba-ad-dc.service

```

![Enable Samba Active Directory Domain Controller](/data/attachment/album/201612/26/174625kna87hnh6l6bbnb2.png)


*开启 Samba 活动目录域控制器服务*


13、 下一步，[使用 netstat 命令](http://www.tecmint.com/20-netstat-commands-for-linux-network-management/) 来验证活动目录启动的服务是否正常。



```
$ sudo netstat –tulpn| egrep ‘smbd|samba’

```

![Verify Samba Active Directory](/data/attachment/album/201612/26/174625kq7ynsmo7cpc0pst.png)


*验证 Samba 活动目录*


### 第四步： Samba 最后的配置


14、 此刻，Samba 应该跟你想像的一样，完全运行正常。Samba 现在实现的域功能级别可以完全跟 Windows AD DC 2008 R2 相媲美。


可以使用 `samba-tool` 工具来验证 Samba 服务是否正常：



```
$ sudo samba-tool domain level show

```

![Verify Samba Domain Level](/data/attachment/album/201612/26/174626l8b506acbnlj9nnb.png)


*验证 Samba 域服务级别*


15、 为了满足 DNS 本地解析的需求，你可以编辑网卡配置文件，修改 `dns-nameservers` 参数的值为域控制器地址（使用 127.0.0.1 作为本地 DNS 解析地址），并且设置 `dns-search` 参数为你的 realm 值。



```
$ sudo cat /etc/network/interfaces
$ sudo cat /etc/resolv.conf

```

![Configure DNS for Samba AD](/data/attachment/album/201612/26/174627kawvsz299mckw1zd.png)


*为 Samba 配置 DNS 服务器地址*


设置完成后，重启服务器并检查解析文件是否指向正确的 DNS 服务器地址。


16、 最后，通过 `ping` 命令查询结果来检查某些重要的 AD DC 记录是否正常，使用类似下面的命令，替换对应的域名。



```
$ ping –c3 tecmint.lan       # 域名
$ ping –c3 adc1.tecmint.lan  # FQDN
$ ping –c3 adc1              # 主机

```

![Check Samba AD DNS Records](/data/attachment/album/201612/26/174627kaximyu6ya2yy2vu.png)


*检查 Samba AD DNS 记录*


执行下面的一些查询命令来检查 Samba 活动目录域控制器是否正常。



```
$ host –t A tecmint.lan
$ host –t A adc1.tecmint.lan
$ host –t SRV _kerberos._udp.tecmint.lan  # UDP Kerberos SRV record
$ host -t SRV _ldap._tcp.tecmint.lan # TCP LDAP SRV record

```

17、 并且，通过请求一个域管理员账号的身份来列出缓存的票据信息以验证 Kerberos 认证是否正常。注意域名部分使用大写。



```
$ kinit administrator@TECMINT.LAN
$ klist

```

![Check Kerberos Authentication on Domain](/data/attachment/album/201612/26/174628dbfeq1gzf2q15077.png)


*检查域环境中的 Kerberos 认证是否正确*


至此！ 你当前的网络环境中已经完全运行着一个 AD 域控制器，你现在可以把 Windows 或 Linux 系统的主机集成到 Samba AD 中了。


在下一期的文章中将会包括其它 Samba AD 域的主题，比如，在 Samba 命令行下如何管理你的域控制器，如何把 Windows 10 系统主机添加到同一个域环境中，如何使用 RSAT 工具远程管理 Samba AD 域，以及其它重要的主题。




---


via: <http://www.tecmint.com/install-samba4-active-directory-ubuntu/>


作者：[Matei Cezar](http://www.tecmint.com/author/cezarmatei/) 译者：[rusking](https://github.com/rusking) 校对：[wxy](https://github.com/wxy)


本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出

