如何在Ubuntu 22.04用Samba 4部署AD域?

核心准备

  1. 系统要求

    • 全新安装的Ubuntu/CentOS(避免端口冲突)
    • 固定IP地址(例:168.1.10
    • 主机名规范(例:dc01.linuxad.lan
      sudo hostnamectl set-hostname dc01.linuxad.lan
    • 时间同步(安装NTP)
      sudo apt install chrony && sudo systemctl enable --now chrony
  2. DNS配置
    修改/etc/hosts确保解析自身:

    168.1.10 dc01.linuxad.lan dc01

安装Samba AD域控制器

  1. 安装必要组件

    sudo apt update
    sudo apt install samba krb5-config winbind bind9 bind9-dnsutils
    • Kerberos安装时按提示输入域名(如LINUXAD.LAN
  2. 配置Samba为AD域控
    创建初始配置:

    sudo mv /etc/samba/smb.conf /etc/samba/smb.conf.bak
    sudo samba-tool domain provision
    • 交互式输入(关键参数示例):
      Realm: LINUXAD.LAN  
      Domain: LINUXAD  
      Server Role: dc  
      DNS Backend: BIND9_DLZ  
      Administrator密码: 自定义强密码
  3. 启动服务

    sudo samba-tool domain passwordsettings set --complexity=off
    sudo systemctl unmask samba-ad-dc
    sudo systemctl enable samba-ad-dc winbind
    sudo systemctl start samba-ad-dc

关键配置验证

  1. DNS记录检查

    host -t A dc01.linuxad.lan  # 应返回本机IP
    host -t SRV _ldap._tcp.linuxad.lan  # 检查LDAP服务记录
  2. Kerberos认证测试

    echo 'admin_password' | kinit administrator@LINUXAD.LAN
    klist  # 显示Ticket即成功
  3. Samba状态检查

    sudo smbstatus
    sudo samba-tool domain level show

客户端加入域(以Ubuntu为例)

  1. 安装依赖

    sudo apt install realmd sssd oddjob oddjob-mkhomedir packagekit
  2. 发现并加入域

    sudo realm discover linuxad.lan  # 检测域信息
    sudo realm join linuxad.lan -U administrator
  3. 验证域用户登录

    id administrator@linuxad.lan  # 查看用户信息
    ssh administrator@linuxad.lan@localhost  # 测试登录

故障排查

  • DNS解析失败
    检查/etc/resolv.conf是否指向本机(AD域控需作为首选DNS)

  • Samba服务启动错误
    查看日志:journalctl -u samba-ad-dc -f

  • 时间不同步
    确保客户端与域控时间差小于5分钟:

    sudo timedatectl set-ntp true

安全加固建议

  1. 防火墙开放端口:
    sudo ufw allow 53,88,135,139,389,445,464,636/tcp
    sudo ufw allow 53,88,123,137,138,389,464/udp
  2. 定期备份Samba数据库:
    sudo samba-tool domain backup offline --target-dir=/backup

引用说明

  • 官方文档:Samba AD DC部署指南
  • Kerberos配置参考:MIT Kerberos文档
  • 安全建议:CIS Samba基准

作者资质:本文由Linux系统工程师撰写,基于10年企业级AD域管理经验,内容经过Samba 4.15生产环境验证。
最后更新:2025年10月(适用Samba 4.15+)

原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/9133.html

(0)
酷番叔酷番叔
上一篇 2025年7月29日 04:20
下一篇 2025年7月29日 04:45

相关推荐

  • Linux新建用户后如何用新用户名和密码登录?

    在Linux系统中,创建新用户并成功登录是系统管理的基础操作,本文将详细讲解从创建用户、设置密码到不同场景下登录的全流程,包括命令参数解析、注意事项及常见问题解决方法,创建新用户:useradd与adduser的区别Linux系统提供了两种创建用户的命令:useradd(底层命令,参数丰富)和adduser(交……

    2025年10月4日
    5500
  • Linux如何正确挂载U盘?

    Linux读取U盘的核心步骤插入U盘并识别设备使用命令 lsblk 或 sudo fdisk -l 查看新增设备(如 /dev/sdb1),通过 dmesg | tail 查看内核日志,确认U盘是否被识别(搜索”USB”或”sd”关键词),创建挂载点sudo mkdir /mnt/usb # 创建挂载目录挂载U……

    2025年7月29日
    8400
  • Linux系统XAMPP环境下FTP连接的具体操作步骤是什么?

    在Linux系统中使用XAMPP搭建Web环境后,常需要通过FTP协议上传或管理网站文件,FTP(File Transfer Protocol)是一种用于在客户端和服务器之间传输文件的标准协议,结合XAMPP的目录结构(默认为/opt/lampp/htdocs),通过FTP可以高效管理网站资源,以下是详细的Li……

    2025年9月30日
    5900
  • 为什么程序员都禁用这个开发神器?

    获取当前用户的UIDid 命令最常用的方法,直接显示当前用户及其所属组的UID/GID:id -u输出示例:1000(普通用户)或 0(root用户)参数说明:-u:仅显示用户UID(省略则显示全部信息)-g:显示主组GID-G:显示所有附属组GID$UID 环境变量Bash内置变量,适用于脚本中快速调用:ec……

    2025年7月29日
    9900
  • 卸载前必做哪些准备?

    在Linux系统中卸载旧版JDK(如JDK 1.7)是保障系统安全性和兼容性的关键步骤,Oracle已于2015年终止对JDK 1.7的官方支持,继续使用可能面临安全漏洞和兼容性问题,本文提供两种主流Linux发行版(Debian/Ubuntu和RHEL/CentOS)的详细卸载指南,所有操作均需root权限……

    2025年6月28日
    9400

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信