在Ubuntu系统上使用Samba4来创建活动目录架构(一)

Samba 是一个自由的开源软件套件,用于实现 Windows 操作系统与 Linux/Unix 系统之间的无缝连接及共享资源。

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

本系列的文章的主要内容是使用 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 的混合系统环境中,关于用户、机器、共享卷、权限及其它资源信息的主要配置点。

环境要求:

  • Ubuntu 16.04 服务器安装
  • Ubuntu 14.04 服务器安装
  • 为你的 AD DC 服务器设置静态IP地址

第一步:初始化 Samba4 安装环境

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


  1. $ sudo apt-get update  
  2. $ sudo apt-get upgrade 
  3. $ sudo apt-get dist-upgrade 

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

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

启动 Linux 文件系统的 ACL 功能

3、 最后使用一个具有描述性的名称来设置主机名 ,比如这往篇文章所使用的 adc1。通过编辑 /etc/hostname 文件或使用使用下图所示的命令来设置主机名。


  1. $ sudo hostnamectl set-hostname adc1 

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

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

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


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

在 Ubuntu 系统上安装 Samba 套件

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

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

配置 Kerosene 认证服务

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

设置 Kerberos 服务器的主机名

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

设置管理服务器的主机名

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

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


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

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


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

10、 现在,使用 root 权限的账号并接受 Samba 提示的默认选项,以交互方式启动域供给(domain provision)。

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


  1. $ sudo samba-tool domain provision --use-rfc2307 –interactive  

Samba 域供给

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


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

创建 Kerberos 配置文件

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


  1. $ sudo systemctl start samba-ad-dc.service 
  2. $ sudo systemctl status samba-ad-dc.service 
  3. $ sudo systemctl enable samba-ad-dc.service  

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

13、 下一步,使用 netstat 命令 来验证活动目录启动的服务是否正常。


  1. $ sudo netstat –tulpn| egrep ‘smbd|samba’  

验证 Samba 活动目录

第四步: Samba 最后的配置

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

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


  1. $ sudo samba-tool domain level show  

验证 Samba 域服务级别

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


  1. $ sudo cat /etc/network/interfaces 
  2. $ sudo cat /etc/resolv.conf  

为 Samba 配置 DNS 服务器地址

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

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


  1. $ ping –c3 tecmint.lan       # 域名 
  2. $ ping –c3 adc1.tecmint.lan  # FQDN 
  3. $ ping –c3 adc1              # 主机  

检查 Samba AD DNS 记录

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


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

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


  1. $ kinit administrator@TECMINT.LAN 
  2. $ klist  

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

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

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

作者:Matei Cezar

来源:51CTO

时间: 2024-08-04 14:18:39

在Ubuntu系统上使用Samba4来创建活动目录架构(一)的相关文章

Samba 系列(三):使用 Windows 10 的 RSAT 工具来管理 Samba4 活动目录架构

这一节的Samba4 AD DC 架构系列文章,我们将会讨论如何把 Windows 10 系统的电脑添加到 Samba4 域环境中,以及如何在 Windows 10 系统下管理域环境. 一旦 Windows 10 系统加入到 Samba4 AD DC ,我们就可以在 Windows 10 系统中创建.删除或者禁用域用户和组了,可以创建新的组织单元,创建.编辑和管理域策略,还可以管理 Samba4 域 DNS 服务. 上面所有的功能和其它一些复杂的与域管理相关的工作都可以通过 Windows 环境

在Ubuntu系统上使用apt-fast来加快apt-get下载的教程

  如果你在Debian或Ubuntu系统上经常感觉到apt-get 或 aptitude包安装速度过慢,那么这里就有几种改善这一情况的方法.你有没有考虑过改变正被使用的默认镜像站点?你有没有排除因特网连接的上游带宽成为瓶颈的可能? 如果不是这些原因,你可以尝试第三个选择:使用apt-fast工具.apt-fast实际上是一个围绕apt-get和aptitude所写的shell脚本容器,它能加速包的下载速度.apt-fast本质上采用aria2下载工具,这款工具能够以"块"的方式从多个

在 Debian 和 Ubuntu 系统上自动安装安全更新

之前已经说过,一些最优秀的系统管理员看上去(注意这里使用的词是 seem(看上去))总是很"懒"的,这句话我再同意不过了. 虽然这句话听起来有点荒谬,但我敢打赌在大多数情况下它是对的-不是因为他们不去做他们原本应该做的事情,而是因为他们已经让系统自动去完成这样的事情了. 对于 Linux 系统来说,一个最关键的需求是为相应的 Linux 版本保持更新最新的安全补丁. 在这篇文章中,我们将讨论如何在 Debian 和 Ubuntu 系统上进行设置,从而实现自动安装或更新重要的安装包或补丁

如何在 Debian 和 Ubuntu 系统上自动安装安全更新

之前已经说过,一些最优秀的系统管理员看上去(注意这里使用的词是 seem(看上去))总是很"懒"的,这句话我再同意不过了. 虽然这句话听起来有点荒谬,但我敢打赌在大多数情况下它是对的-不是因为他们不去做他们原本应该做的事情,而是因为他们已经让系统自动去完成这样的事情了. 对于 Linux 系统来说,一个最关键的需求是为相应的 Linux 版本保持更新最新的安全补丁. 在这篇文章中,我们将讨论如何在 Debian 和 Ubuntu 系统上进行设置,从而实现自动安装或更新重要的安装包或补丁

在Ubuntu系统上安装Ghost博客平台的教程_node.js

今天我们将会在Ubuntu Server 14.04 LTS (Trusty)上安装一个博客平台Ghost. Ghost是一款设计优美的发布平台,很容易使用且对任何人都免费.它是免费的开源软件(FOSS),它的源码在Github上.截至2015年1月(LCTT 译注:原文为2014,应为2015),它的界面很简单还有分析面v板.编辑使用的是很便利的分屏显示. 因此有了这篇步骤明确的在Ubuntu Server上安装Ghost的教程:1. 升级Ubuntu 第一步是运行Ubuntu软件升级并安装一

Linux学习 -->解决Ubuntu系统上 No command 'crond' found

前两天,准备在Ubuntu服务器上,定时执行Gitlab备份的命令,如下所示 编辑 vi /etc/crontab 文件,添加如下定时脚本 # edited by ouyang 2017-8-11 添加定时任务,每天凌晨两点,执行gitlab备份 0 2 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create CRON=1 然而发现,凌晨2点并没有执行备份操作. 然后我去执行crontab 命令时提示 No command 'crond' f

在Ubuntu系统上安装Nginx服务器的简单方法_nginx

安装 Nginx sudo apt-get install nginx      如果你安装了 Apache ,并且此时 Apache 在运行,那么请先修改一下配置文件(没有的同学直接跳过): #打开配置文件 sudo vim /etc/nginx/sites-available/default      然后按以下两处修改(为了不和 Apache 冲突): server { #修改这里 我将 80 改为 88 listen 88 default_server; #还有这里 同样改为你想要的监听

Ubuntu系统上使用LVM调整硬盘分区的教程

  先来介绍一下硬盘分区的基本知识: 物理介质 The physical media 你应该感受"物理"这个单词有极大的延伸,虽然我们刚开始假设它仅仅是一个硬盘,或者一个分区.例如,/dev/hda,/dev/hda6,/dev/sda.你可以转换一个块设备上任何连续块到一个... 物理卷 Physical Volume (PV) 一个PV只不过是有许多管理数据添加在它里面的物理介质–一旦你添加了它,LVM就认为它是...的一个持有者. 物理分区 Physical Extents (P

在Ubuntu系统上构建Android环境以及从Google Play上下载APK

  打造一个全命令行的Android构建系统 step 1 安装 JDK 环境 配合android的JDK最好选用JDK官方版本而不是Open JDK,下面是在unbuntu下安装JDK 1.7的方法. 代码如下: sudo add-apt-repository ppa:webupd8team/java sudo apt-get update sudo apt-get install oracle-java7-installer step 2 安装 Android SDK android sdk