如何使用Samba和Winbind将Ubuntu 16.04添加到AD域

这篇文章讲述了如何将 Ubuntu 主机加入到 Samba4 AD 域,并实现使用域帐号登录 Ubuntu 系统。

要求:

在 Ubuntu 系统上使用 Samba4 软件来创建活动目录架构

第一步: Ubuntu 系统加入到 Samba4 AD 之前的基本配置

1、在将 Ubuntu 主机加入到 AD DC 之前,你得先确保 Ubuntu 系统中的一些服务配置正常。

主机名是你的机器的一个重要标识。因此,在加入域前,使用 hostnamectl 命令或者通过手动编辑 /etc/hostname 文件来为 Ubuntu 主机设置一个合适的主机名。


  1. # hostnamectl set-hostname your_machine_short_name 
  2. # cat /etc/hostname 
  3. # hostnamectl 

设置系统主机名

2、在这一步中,打开并编辑网卡配置文件,为你的主机设置一个合适的 IP 地址。注意把 DNS 地址设置为你的域控制器的地址。

编辑 /etc/network/interfaces 文件,添加 dns-nameservers 参数,并设置为 AD 服务器的 IP 地址;添加 dns-search 参数,其值为域控制器的主机名,如下图所示。

并且,把上面设置的 DNS IP 地址和域名添加到 /etc/resolv.conf 配置文件中,如下图所示:

为 AD 配置网络设置

在上面的截图中, 192.168.1.254 和 192.168.1.253 是 Samba4 AD DC 服务器的 IP 地址, Tecmint.lan 是 AD 域名,已加入到这个域中的所有机器都可以查询到该域名。

3、重启网卡服务或者重启计算机以使网卡配置生效。使用 ping 命令加上域名来检测 DNS 解析是否正常。

AD DC 应该返回的是 FQDN 。如果你的网络中配置了 DHCP 服务器来为局域网中的计算机自动分配 IP 地址,请确保你已经把 AD DC 服务器的 IP 地址添加到 DHCP 服务器的 DNS 配置中。


  1. # systemctl restart networking.service 
  2. # ping -c2 your_domain_name 

4、最后一步是配置服务器时间同步。安装 ntpdate 包,使用下面的命令来查询并同步 AD DC 服务器的时间。


  1. $ sudo apt-get install ntpdate 
  2. $ sudo ntpdate -q your_domain_name 
  3. $ sudo ntpdate your_domain_name  

AD 服务器时间同步

5、下一步,在 Ubuntu 机器上执行下面的命令来安装加入域环境所必需软件。


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

在 Ubuntu 机器上安装 Samba4 软件

在 Kerberos 软件包安装的过程中,你会被询问输入默认的域名。输入大写的域名,并按 Enter 键继续安装。

添加 AD 域名

6、当所有的软件包安装完成之后,使用域管理员帐号来测试 Kerberos 认证,然后执行下面的命令来列出票据信息。


  1. # kinit ad_admin_user 
  2. # klist 

使用 AD 来检查 Kerberos 认证是否正常

第二步:将 Ubuntu 主机添加到 Samba4 AD DC

7、将 Ubuntu 主机添加到 Samba4 活动目录域环境中的第一步是编辑 Samba 配置文件。

备份 Samba 的默认配置文件,这个配置文件是安装 Samba 软件的过程中自动生成的,使用下面的命令来重新初始化配置文件。


  1. # mv /etc/samba/smb.conf /etc/samba/smb.conf.initial 
  2. # nano /etc/samba/smb.conf  

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


  1. [global] 
  2. workgroup = TECMINT 
  3. realm = TECMINT.LAN 
  4. netbios name = ubuntu 
  5. security = ADS 
  6. dns forwarder = 192.168.1.1 
  7. idmap config * : backend = tdb 
  8. idmap config *:range = 50000-1000000 
  9. template homedir = /home/%D/%U 
  10. template shell = /bin/bash 
  11. winbind use default domain = true 
  12. winbind offline logon = false 
  13. winbind nss info = rfc2307 
  14. winbind enum users = yes 
  15. winbind enum groups = yes 
  16. vfs objects = acl_xattr 
  17. map acl inherit = Yes 
  18. store dos attributes = Yes 

Samba 服务的 AD 环境配置

根据你本地的实际情况来替换 workgroup , realm , netbios name 和 dns forwarder 的参数值。

由于 winbind use default domain 这个参数会让 winbind 服务把任何登录系统的帐号都当作 AD 帐号。因此,如果存在本地帐号名跟域帐号同名的情况下,请不要设置该参数。

8、现在,你应该重启 Samba 后台服务,停止并卸载一些不必要的服务,然后启用 samba 服务的 system-wide 功能,使用下面的命令来完成。


  1. $ sudo systemctl restart smbd nmbd winbind 
  2. $ sudo systemctl stop samba-ad-dc 
  3. $ sudo systemctl enable smbd nmbd winbind 

9、通过下面的命令,使用域管理员帐号来把 Ubuntu 主机加入到 Samba4 AD DC 中。


  1. $ sudo net ads join -U ad_admin_user 

把 Ubuntu 主机加入到 Samba4 AD DC

10、在 安装了 RSAT 工具的 Windows 机器上 打开 AD UC ,展开到包含的计算机。你可以看到已加入域的 Ubuntu 计算机。

确认 Ubuntu 计算机已加入到 Windows AD DC

第三步:配置 AD 帐号认证

11、为了在本地完成 AD 帐号认证,你需要修改本地机器上的一些服务和配置文件。

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


  1. $ sudo nano /etc/nsswitch.conf 

然后在 passwd 和 group 行添加 winbind 值,如下图所示:


  1. passwd:         compat winbind 
  2. group:          compat winbind 

配置 AD 帐号认证

12、为了测试 Ubuntu 机器是否已加入到域中,你可以使用 wbinfo 命令来列出域帐号和组。


  1. $ wbinfo -u 
  2. $ wbinfo -g 

列出域帐号和组

13、同时,使用 getent 命令加上管道符及 grep 参数来过滤指定域用户或组,以测试 Winbind nsswitch 模块是否运行正常。


  1. $ sudo getent passwd| grep your_domain_user 
  2. $ sudo getent group|grep 'domain admins' 

检查 AD 域用户和组

14、为了让域帐号在 Ubuntu 机器上完成认证登录,你需要使用 root 帐号运行 pam-auth-update 命令,然后勾选 winbind 服务所需的选项,以让每个域帐号首次登录时自动创建 home 目录。

查看所有的选项,按 ‘[空格]’键选中,单击 OK 以应用更改。


  1. $ sudo pam-auth-update 

使用域帐号登录 Ubuntu 主机

15、在 Debian 系统中,如果想让系统自动为登录的域帐号创建家目录,你需要手动编辑 /etc/pam.d/common-account 配置文件,并添加下面的内容。


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

使用域帐号登录 Debian 系统

16、为了让 AD 用户能够在 Linux 的命令行下修改密码,你需要打开 /etc/pam.d/common-password 配置文件,在 password 那一行删除 use_authtok 参数,如下图所示:

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

允许域帐号在 Linux 命令行下修改密码

17、要使用 Samba4 AD 帐号来登录 Ubuntu 主机,在 su - 后面加上域用户名即可。你还可以通过运行 id 命令来查看 AD 帐号的其它信息。


  1. $ su - your_ad_user 

查看 AD 用户信息

使用 pwd 命令来查看域帐号的当前目录,如果你想修改域帐号的密码,你可以使用 passwd 命令来完成。

18、如果想让域帐号在 ubuntu 机器上拥有 root 权限,你可以使用下面的命令来把 AD 帐号添加到 sudo 系统组中:


  1. $ sudo usermod -aG sudo your_domain_user 

登录域帐号登录到 Ubuntu 主机,然后运行 apt-get-update 命令来更新系统,以验证域账号是否拥有 root 权限。

给域帐号添加 root 权限

19、要为整个域用户组添加 root 权限,使用 vi 命令打开并编辑 /etc/sudoers 配置文件,如下图所示,添加如下内容:


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

为域帐号组添加 root 权限

使用反斜杠来转义域用户组的名称中包含的空格,或者用来转义第一个反斜杠。在上面的例子中, TECMINT 域的域用户组的名字是 “domain admins" 。

前边的 % 表明我们指定是的用户组而不是用户名。

20、如果你使用的是图形界面的 Ubuntu 系统,并且你想使用域帐号来登录系统,你需要修改 LightDM 显示管理器,编辑 /usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf 配置文件,添加下面的内容,然后重启系统才能生效。


  1. greeter-show-manual-login=true 
  2. greeter-hide-users=true 

现在你就可以域帐号来登录 Ubuntu 桌面系统了。使用域用户名或者域用户名@域名.tld 或者域名\域用户名的方式来登录系统。

作者:Matei Cezar

来源:51CTO

时间: 2024-09-04 01:18:56

如何使用Samba和Winbind将Ubuntu 16.04添加到AD域的相关文章

Ubuntu 16.04系统安装以后该怎么设置?

  Ubuntu 16.04系统安装以后该怎么设置?          一.Ubuntu版本选择建议 1.版本选择的建议不是出于专业建议而是出于易于上手目的. 2. 版本:尝鲜可以选择最新发行版,目前是16.10(不是长期支持版),长期支持版是带 LTS 后缀的版本,目前是16.04,如果你想后面更省心就下载Ubuntu kylin (Ubuntu for China )中国专版.还有就是Ubuntu分有多种版本,记得选Ubuntu Desktop (桌面版)就好. 3.安装:至于安装可以选虚拟

Ubuntu 16.04系统总的启动器栏该怎么设置?

  Ubuntu 16.04系统总的启动器栏该怎么设置?新发布的 Ubuntu 16.04 使用 Unity 桌面环境,其特性之一就是桌面左侧有一个启动器栏.该启动器栏有许多可定制的功能,允许用户进行定制以更加符合自己的使用需求. 一.启动器的宽度调整.其他特性的调整 1.Ubuntu Unity 桌面左侧启动器栏的默认宽度是 48 个像素,这在分辨率比较低的屏幕上显得有点过于"宽大",占用了比较多的屏幕空间.这种情况下,可以将启动器栏的宽度调小,其上的应用程序图标也会同步变小. 方法

升级到Ubuntu 16.04 LTS教程

  如果你不想全新安装 Ubuntu 16.04 LTS ,本文将介绍如何从 Ubuntu 15.10 或更老版本的 Ubuntu 进行升级.就目前来看,升级到 Ubuntu 16.04 LTS 的过程中虽然会有些小错误,但整个升级过程还算不错. 在正式开始升级之前,请使用如下命令先对系统进行更新: sudo apt-get update && sudo apt-get dist-upgrade 上述命令将为当前系统安装最新可用的软件包,升级完成后请使用如下命令重启系统以完成更新安装: s

Ubuntu 16.04自定义Unity位置教程

  更改Ubuntu 16.04 Unity位置 刚我已经讲清楚了,该方法目前只适用于 Ubuntu 16.04,不会对早期版本的 Ubuntu 生效. 使用终端命令 你可以在终端中执行如下命令: 将 Unity 位置移到底部 gsettings set com.canonical.Unity.Launcher launcher-position Bottom 将 Unity 位置移到左侧 gsettings set com.canonical.Unity.Launcher launcher-p

在 Ubuntu 16.04 为 Nginx 服务器安装 LEMP 环境(MariaDB,PHP 7 并支持 HTTP 2.0)

LEMP 是个缩写,代表一组软件包(L:Linux OS,E:Nginx 网络服务器,M:MySQL/MariaDB 数据库和 P:PHP 服务端动态编程语言),它被用来搭建动态的网络应用和网页. (LCTT 译注:为何采用 LEMP 而不是 LNMP 的缩写?据 https://lemp.io/ 的解释:Nginx 的发音是 Engine-X,重要的发音而不是首字母,而且 LEMP 实际上是可读的,而 LNMP 看起来只是字母表.) 在 Ubuntu 16.04 安装 Nginx 以及 Mar

How to Install and Configure Zabbix on Ubuntu 16.04

By Hitesh Jethva, Alibaba Cloud Tech Share Author Introduction Zabbix is an open source and enterprise-class network monitoring tool that can be used to monitor performance and availability of the server, network devices and other network components.

在Ubuntu 16.04 Server上安装Zabbix

监控服务器 - 什么是 Zabbix Zabbix 是企业级开源分布式监控服务器解决方案.该软件能监控网络的不同参数以及服务器的完整性,还允许为任何事件配置基于电子邮件的警报.Zabbix 根据存储在数据库(例如 MySQL)中的数据提供报告和数据可视化功能.软件收集的每个测量指标都可以通过基于 Web 的界面访问. Zabbix 根据 GNU 通用公共许可证版本 2(GPLv2)的条款发布,完全免费. 在本教程中,我们将在运行 MySQL.Apache 和 PHP 的 Ubuntu 16.04

Ubuntu 16.04下部署Graylog日志服务器

Graylog 是一个开源的日志管理系统,集中式收集.索引.分析其它服务器发来的日志.它是由 Java 语言编写的,能够接收 TCP.UDP.AMQP 协议发送的日志信息,并且使用 Mongodb 做为后台数据库.它还有一个使用 Ruby 编写的 Web 管理接口,可以轻松管理 Graylog 和查询日志. Graylog 可以收集监控多种不同应用的日志.本文只是会为了示范说明,会把用到的组件全部安装到一个单独的服务器上.对于大型.生产系统你可以把组件分开安装在不同的服务器上,这样可以提高效率.

WordPress with LEMP on Alibaba Cloud – Part 1 Provision and Secure an Ubuntu 16.04 Server

By Jeff Cleverly, Alibaba Cloud Tech Share Author This is the first tutorial of a series that will culminate with a fresh WordPress site running on an Alibaba Cloud ECS Instance running a highly performant LEMP Stack. In this tutorial, we will create