网站搜索

使用 Samba 和 Winbind 将 Ubuntu 16.04 作为域成员集成到 AD - 第 8 部分


本教程介绍如何将 Ubuntu 计算机加入 Samba4 Active Directory 域,以便使用文件和目录的本地 ACL 验证 AD 帐户或为域控制器用户创建和映射卷共享(充当文件服务器)。

要求:

  1. 在 Ubuntu 上使用 Samba4 创建 Active Directory 基础架构

第 1 步:将 Ubuntu 加入 Samba4 AD 的初始配置

1. 在开始将 Ubuntu 主机加入 Active Directory DC 之前,您需要确保某些服务在本地计算机上正确配置。

计算机的一个重要方面是主机名。在加入域之前,借助 hostnamectl 命令或手动编辑 /etc/hostname 文件设置正确的计算机名称。


hostnamectl set-hostname your_machine_short_name
cat /etc/hostname
hostnamectl

2. 在下一步中,打开并使用正确的 IP 配置手动编辑您的计算机网络设置。这里最重要的设置是指向域控制器的 DNS IP 地址。

编辑 /etc/network/interfaces 文件并添加 dns-nameservers 语句以及您正确的 AD IP 地址和域名,如下面的屏幕截图所示。

另外,请确保将相同的 DNS IP 地址和域名添加到 /etc/resolv.conf 文件中。

在上面的屏幕截图中,192.168.1.254192.168.1.253Samba4 AD DCHowtoing.lan 的IP地址 代表 AD 域的名称,集成到领域的所有机器都会查询该域。

3. 重新启动网络服务或重新启动计算机以应用新的网络配置。针对您的域名发出 ping 命令,以测试 DNS 解析是否按预期工作。

AD DC 应使用其 FQDN 重播。如果您已在网络中配置 DHCP 服务器以自动为 LAN 主机分配 IP 设置,请确保将 AD DC IP 地址添加到 DHCP 服务器 DNS 配置中。


systemctl restart networking.service
ping -c2 your_domain_name

4.最后一个需要的重要配置是时间同步。通过发出以下命令安装 ntpdate 包,查询并与 AD DC 同步时间。


sudo apt-get install ntpdate
sudo ntpdate -q your_domain_name
sudo ntpdate your_domain_name

5.下一步,通过运行以下命令安装 Ubuntu 计算机完全集成到域中所需的软件。


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

在安装 Kerberos 软件包时,系统会要求您输入默认领域的名称。使用大写的域名并按Enter键继续安装。

6. 所有软件包安装完成后,针对 AD 管理帐户测试 Kerberos 身份验证,并通过发出以下命令列出票证。


kinit ad_admin_user
klist

步骤 2:将 Ubuntu 加入 Samba4 AD DC

7. 将 Ubuntu 计算机集成到 Samba4 Active Directory 域的第一步是编辑 Samba 配置文件。

备份由包管理器提供的 Samba 默认配置文件,以便通过运行以下命令以干净的配置启动。


mv /etc/samba/smb.conf /etc/samba/smb.conf.initial
nano /etc/samba/smb.conf 

在新的 Samba 配置文件中添加以下行:


[global]
        workgroup = TECMINT
        realm = TECMINT.LAN
        netbios name = ubuntu
        security = ADS
        dns forwarder = 192.168.1.1

idmap config * : backend = tdb        
idmap config *:range = 50000-1000000
	
   template homedir = /home/%D/%U
   template shell = /bin/bash
   winbind use default domain = true
   winbind offline logon = false
   winbind nss info = rfc2307
   winbind enum users = yes
   winbind enum groups = yes

  vfs objects = acl_xattr
  map acl inherit = Yes
  store dos attributes = Yes

工作组领域netbios名称dns转发器变量替换为您自己的自定义设置。

winbind 使用默认域 参数会导致 winbind 服务将任何不合格的 AD 用户名视为 AD 用户。如果您的本地系统帐户名称与 AD 帐户重叠,则应忽略此参数。

8. 现在您应该重新启动所有 samba 守护进程,停止并删除不必要的服务,并通过发出以下命令在系统范围内启用 samba 服务。


sudo systemctl restart smbd nmbd winbind
sudo systemctl stop samba-ad-dc
sudo systemctl enable smbd nmbd winbind

9. 通过发出以下命令将 Ubuntu 计算机连接到 Samba4 AD DC。使用具有管理员权限的 AD DC 帐户的名称,以便与领域的绑定按预期工作。


sudo net ads join -U ad_admin_user

10. 在安装了 RSAT 工具的 Windows 计算机上,您可以打开 AD UC 并导航到计算机容器。在这里,您的 Ubuntu 连接机器应该会列出。

步骤3:配置AD帐户身份验证

11.为了在本机上对AD帐户进行认证,需要修改本机上的一些服务和文件。

首先,打开并编辑名称服务交换机 (NSS) 配置文件。


sudo nano /etc/nsswitch.conf

接下来为 passwd 和组行附加 winbind 值,如下面的摘录所示。


passwd:         compat winbind
group:          compat winbind

12. 为了测试 Ubuntu 计算机是否已成功集成到领域,请运行 wbinfo 命令来列出域帐户和组。


wbinfo -u
wbinfo -g

13. 此外,通过发出 getent 命令检查 Winbind nsswitch 模块,并通过 grep 等过滤器将结果传送到管道,以缩小输出范围特定域用户或组。


sudo getent passwd| grep your_domain_user
sudo getent group|grep 'domain admins'

14. 为了使用域帐户在 Ubuntu 计算机上进行身份验证,您需要使用 root 权限运行 pam-auth-update 命令,并添加 winbind 服务所需的所有条目并添加到首次登录时自动为每个域帐户创建主目录。

[空格]键检查所有条目,然后点击确定应用配置。


sudo pam-auth-update

15. 在 Debian 系统上,您需要手动编辑 /etc/pam.d/common-account 文件和以下行,以便自动为经过身份验证的域用户创建主目录。


session    required    pam_mkhomedir.so    skel=/etc/skel/    umask=0022

16.为了让Active Directory用户能够在Linux中从命令行更改密码,打开/etc/pam.d/common-password 文件并从密码行中删除 use_authtok 语句,最终看起来如下面的摘录所示。


password       [success=1 default=ignore]      pam_winbind.so try_first_pass

17. 要使用 Samba4 AD 帐户在 Ubuntu 主机上进行身份验证,请在 su – 命令后使用域用户名参数。运行 id 命令以获取有关 AD 帐户的额外信息。


su - your_ad_user

使用 pwd 命令查看域用户当前目录,如果要更改密码,请使用 passwd 命令。

18. 要在 Ubuntu 计算机上使用具有 root 权限的域帐户,您需要通过发出以下命令将 AD 用户名添加到 sudo 系统组:


sudo usermod -aG sudo your_domain_user

使用域帐户登录Ubuntu并通过运行apt-get update命令检查域用户是否具有root权限来更新系统。

19.要为域组添加root权限,请使用visudo命令打开结束编辑/etc/sudoers文件并添加以下行,如图所示在下面的屏幕截图上。


%YOUR_DOMAIN\\your_domain\  group       		 ALL=(ALL:ALL) ALL

使用反斜杠转义域组名称中包含的空格或转义第一个反斜杠。在上面的示例中,TECMINT 领域的域组名为“domain admins”。

前面的百分号 (%) 符号表示我们指的是组,而不是用户名。

20. 如果您运行的是图形版本的 Ubuntu,并且想要使用域用户登录系统,则需要通过编辑 /usr/share/lightdm 来修改 LightDM 显示管理器/lightdm.conf.d/50-ubuntu.conf 文件中,添加以下行并重新启动计算机以反映更改。


greeter-show-manual-login=true
greeter-hide-users=true

现在应该能够使用 your_domain_usernameyour_domain_username@your_domain.tldyour_domain\your_domain_username 格式在 Ubuntu 桌面上执行登录。