热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

开发笔记:Samba系列(十五):用SSSD和Realm集成Ubuntu到Samba4ADDC

篇首语:本文由编程笔记#小编为大家整理,主要介绍了Samba系列(十五):用SSSD和Realm集成Ubuntu到Samba4ADDC相关的知识,希望对你有一定的参考价值。

篇首语:本文由编程笔记#小编为大家整理,主要介绍了Samba 系列(十五):用 SSSD 和 Realm 集成 Ubuntu 到 Samba4 AD DC相关的知识,希望对你有一定的参考价值。





本教程将告诉你如何将 Ubuntu 桌面版机器加入到带有 SSSD 和 Realm 服务的 Samba4 活动目录域中,以在活动目录中认证用户。


-- Matei Cezar







本文导航




编译自 | https://www.tecmint.com/integrate-ubuntu-to-samba4-ad-dc-with-sssd-and-realm/ 


 作者 | Matei Cezar


 译者 | XYenChi


本教程将告诉你如何将 Ubuntu 桌面版机器加入到带有 SSSD 和 Realm 服务的 Samba4 活动目录域中,以在活动目录中认证用户。

要求:





☉ 

[1]


第 1 步:初始配置

1、 在把 Ubuntu 加入活动目录前确保主机名被正确设置了。使用 hostnamectl 命令设置机器名字或者手动编辑 /etc/hostname 文件。









  1. $ sudo hostnamectl set-hostname your_machine_short_hostname





  2. $ cat /etc/hostname





  3. $ hostnamectl





Samba 系列(十五):用 SSSD 和 Realm 集成 Ubuntu 到 Samba4 AD DC

设置网络接口

3、 用 GUI(图形用户界面)或命令行重启网络服务来应用修改,并且对你的域名发起一系列 ping 请求来测试 DNS 解析如预期工作。 也用 host 命令来测试 DNS 解析。









  1. $ sudo systemctl restart networking.service





  2. $ host your_domain.tld





  3. $ ping -c2 your_domain_name





  4. $ ping -c2 adc1





  5. $ ping -c2 adc2





4、 最后, 确保机器时间和 Samba4 AD 同步。安装 ntpdate 包并用下列指令和 AD 同步时间。









  1. $ sudo apt-get install ntpdate





  2. $ sudo ntpdate your_domain_name





第 2 步:安装需要的包

5、 这一步将安装将 Ubuntu 加入 Samba4 活动目录域控制器所必须的软件和依赖:Realmd 和 SSSD 服务。









  1. $ sudo apt install adcli realmd krb5-user samba-common-bin samba-libs samba-dsdb-modules sssd sssd-tools libnss-sss libpam-sss packagekit policykit-1





6、 输入大写的默认 realm 名称,然后按下回车继续安装。

Samba 系列(十五):用 SSSD 和 Realm 集成 Ubuntu 到 Samba4 AD DC

输入 Realm 名称

7、 接着,创建包含以下内容的 SSSD 配置文件。









  1. $ sudo nano /etc/sssd/sssd.conf





加入下面的内容到 sssd.conf 文件。









  1. [nss]





  2. filter_groups = root





  3. filter_users = root





  4. reconnection_retries = 3





  5. [pam]





  6. reconnection_retries = 3





  7. [sssd]





  8. domains = tecmint.lan





  9. config_file_version = 2





  10. services = nss, pam





  11. default_domain_suffix = TECMINT.LAN





  12. [domain/tecmint.lan]





  13. ad_domain = tecmint.lan





  14. krb5_realm = TECMINT.LAN





  15. realmd_tags = manages-system joined-with-samba





  16. cache_credentials = True





  17. id_provider = ad





  18. krb5_store_password_if_offline = True





  19. default_shell = /bin/bash





  20. ldap_id_mapping = True





  21. use_fully_qualified_names = True





  22. fallback_homedir = /home/%d/%u





  23. access_provider = ad





  24. auth_provider = ad





  25. chpass_provider = ad





  26. access_provider = ad





  27. ldap_schema = ad





  28. dyndns_update = true





  29. dyndsn_refresh_interval = 43200





  30. dyndns_update_ptr = true





  31. dyndns_ttl = 3600





确保你对应地替换了下列参数的域名:









  1. domains = tecmint.lan





  2. default_domain_suffix = TECMINT.LAN





  3. [domain/tecmint.lan]





  4. ad_domain = tecmint.lan





  5. krb5_realm = TECMINT.LAN





8、 接着,用下列命令给 SSSD 配置文件适当的权限:









  1. $ sudo chmod 700 /etc/sssd/sssd.conf





9、 现在,打开并编辑 Realmd 配置文件,输入下面这行:









  1. $ sudo nano /etc/realmd.conf





realmd.conf 文件摘录:









  1. [active-directory]





  2. os-name = Linux Ubuntu





  3. os-version = 17.04





  4. [service]





  5. automatic-install = yes





  6. [users]





  7. default-home = /home/%d/%u





  8. default-shell = /bin/bash





  9. [tecmint.lan]





  10. user-principal = yes





  11. fully-qualified-names = no





10、 最后需要修改的文件属于 Samba 守护进程。 打开 /etc/samba/smb.conf 文件编辑,然后在文件开头加入下面这块代码,在 [global] 之后的部分如下图所示。









  1. workgroup = TECMINT





  2. client signing = yes





  3. client use spnego = yes





  4. kerberos method = secrets and keytab





  5. realm = TECMINT.LAN





  6. security = ads





Samba 系列(十五):用 SSSD 和 Realm 集成 Ubuntu 到 Samba4 AD DC

配置 Samba 服务器

确保你替换了域名值,特别是对应域名的 realm 值,并运行 testparm 命令检验设置文件是否包含错误。









  1. $ sudo testparm





Samba 系列(十五):用 SSSD 和 Realm 集成 Ubuntu 到 Samba4 AD DC

测试 Samba 配置

11、 在做完所有必需的修改之后,用 AD 管理员帐号验证 Kerberos 认证并用下面的命令列出票据。









  1. $ sudo kinit ad_admin_user@DOMAIN.TLD





  2. $ sudo klist





Samba 系列(十五):用 SSSD 和 Realm 集成 Ubuntu 到 Samba4 AD DC

检验 Kerberos 认证

第 3 步: 加入 Ubuntu 到 Samba4 Realm

12、 键入下列命令将 Ubuntu 机器加入到 Samba4 活动目录。用有管理员权限的 AD DC 账户名字,以便绑定 realm 可以如预期般工作,并替换对应的域名值。









  1. $ sudo realm discover -v DOMAIN.TLD





  2. $ sudo realm list





  3. $ sudo realm join TECMINT.LAN -U ad_admin_user -v





  4. $ sudo net ads join -k





Samba 系列(十五):用 SSSD 和 Realm 集成 Ubuntu 到 Samba4 AD DC

加入 Ubuntu 到 Samba4 Realm

Samba 系列(十五):用 SSSD 和 Realm 集成 Ubuntu 到 Samba4 AD DC

列出 Realm Domain 信息

Samba 系列(十五):用 SSSD 和 Realm 集成 Ubuntu 到 Samba4 AD DC

添加用户到 Realm Domain

Samba 系列(十五):用 SSSD 和 Realm 集成 Ubuntu 到 Samba4 AD DC

添加 Domain 到 Realm

13、 区域绑定好了之后,运行下面的命令确保所有域账户允许在这台机器上认证。









  1. $ sudo realm permit -all





然后你可以使用下面举例的 realm 命令允许或者禁止域用户帐号或群组访问。









  1. $ sudo realm deny -a





  2. $ realm permit --groups domain.tld\Linux Admins





  3. $ realm permit user@domain.lan





  4. $ realm permit DOMAIN\\User2





14、 从一个 [2] Windows 机器上你可以打开 AD UC 并浏览“电脑computers”容器,并检验是否有一个使用你机器名的对象帐号已经创建。

Samba 系列(十五):用 SSSD 和 Realm 集成 Ubuntu 到 Samba4 AD DC

确保域被加入 AD DC

第 4 步:配置 AD 账户认证

15、 为了在 Ubuntu 机器上用域账户认证,你需要用 root 权限运行 pam-auth-update 命令并允许所有 PAM 配置文件,包括为每个域账户在第一次注册的时候自动创建家目录的选项。

按 [空格] 键检验所有配置项并点击 ok 来应用配置。









  1. $ sudo pam-auth-update





Samba 系列(十五):用 SSSD 和 Realm 集成 Ubuntu 到 Samba4 AD DC

PAM 配置

16、 在系统上手动编辑 /etc/pam.d/common-account 文件,下面这几行是为了给认证过的域用户自动创建家目录。









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





17、 如果活动目录用户不能用 linux 命令行修改他们的密码,打开 /etc/pam.d/common-password 文件并在 password 行移除 use_authtok 语句,最后如下:









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





18、 最后,用下面的命令重启并启用以应用 Realmd 和 SSSD 服务的修改:









  1. $ sudo systemctl restart realmd sssd





  2. $ sudo systemctl enable realmd sssd





19、 为了测试 Ubuntu 机器是是否成功集成到 realm ,安装 winbind 包并运行 wbinfo 命令列出域账户和群组,如下所示。









  1. $ sudo apt-get install winbind





  2. $ wbinfo -u





  3. $ wbinfo -g





Samba 系列(十五):用 SSSD 和 Realm 集成 Ubuntu 到 Samba4 AD DC

列出域账户

20、 同样,也可以针对特定的域用户或群组使用 getent 命令检验 Winbind nsswitch 模块。









  1. $ sudo getent passwd your_domain_user





  2. $ sudo getent group domain admins





Samba 系列(十五):用 SSSD 和 Realm 集成 Ubuntu 到 Samba4 AD DC

检验 Winbind Nsswitch

21、 你也可以用 Linux id 命令获取 AD 账户的信息,命令如下:









  1. $ id tecmint_user





Samba 系列(十五):用 SSSD 和 Realm 集成 Ubuntu 到 Samba4 AD DC

检验 AD 用户信息

22、 用 su - 后跟上域用户名参数来认证 Ubuntu 主机的一个 Samba4 AD 账户。运行 id 命令获取该 AD 账户的更多信息。









  1. $ su - your_ad_user





Samba 系列(十五):用 SSSD 和 Realm 集成 Ubuntu 到 Samba4 AD DC

AD 用户认证

用 pwd 命令查看你的域用户当前工作目录,和用 passwd 命令修改密码。

23、 在 Ubuntu 上使用有 root 权限的域账户,你需要用下面的命令添加 AD 用户名到 sudo 系统群组:









  1. $ sudo usermod -aG sudo your_domain_user@domain.tld





用域账户登录 Ubuntu 并运行 apt update 命令来更新你的系统以检验 root 权限。

24、 给一个域群组 root 权限,用 visudo 命令打开并编辑 /etc/sudoers 文件,并加入如下行:









  1. %domain\ admins@tecmint.lan              ALL=(ALL:ALL) ALL





25、 要在 Ubuntu 桌面使用域账户认证,通过编辑 /usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf 文件来修改 LightDM 显示管理器,增加以下两行并重启 lightdm 服务或重启机器应用修改。









  1. greeter-show-manual-login=true





  2. greeter-hide-users=true





域账户用“你的域用户”或“你的域用户@你的域” 格式来登录 Ubuntu 桌面。

26、 为使用 Samba AD 账户的简称格式,编辑 /etc/sssd/sssd.conf 文件,在 [sssd] 块加入如下几行命令。









  1. full_name_format = %1$s





并重启 SSSD 守护进程应用改变。









  1. $ sudo systemctl restart sssd





你会注意到 bash 提示符会变成了没有附加域名部分的 AD 用户名。

27、 万一你因为 sssd.conf 里的 enumerate=true 参数设定而不能登录,你得用下面的命令清空 sssd 缓存数据:









  1. $ rm /var/lib/sss/db/cache_tecmint.lan.ldb





这就是全部了!虽然这个教程主要集中于集成 Samba4 活动目录,同样的步骤也能被用于把使用 Realm 和 SSSD 服务的 Ubuntu 整合到微软 Windows 服务器活动目录。



作者简介:

Matei Cezar - 我是一名网瘾少年,开源和基于 linux 系统软件的粉丝,有4年经验在 linux 发行版桌面、服务器和 bash 脚本。



via: https://www.tecmint.com/integrate-ubuntu-to-samba4-ad-dc-with-sssd-and-realm/

本文由 LCTT 原创编译,Linux中国 荣誉推出





LCTT 译者



Samba 系列(十五):用 SSSD 和 Realm 集成 Ubuntu 到 Samba4 AD DC


XYenChi


共计翻译:
6 篇


贡献时间:144 天










推荐文章




<左右滑动查看相关文章 >










推荐阅读
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • 本文介绍了如何使用C#制作Java+Mysql+Tomcat环境安装程序,实现一键式安装。通过将JDK、Mysql、Tomcat三者制作成一个安装包,解决了客户在安装软件时的复杂配置和繁琐问题,便于管理软件版本和系统集成。具体步骤包括配置JDK环境变量和安装Mysql服务,其中使用了MySQL Server 5.5社区版和my.ini文件。安装方法为通过命令行将目录转到mysql的bin目录下,执行mysqld --install MySQL5命令。 ... [详细]
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • C语言注释工具及快捷键,删除C语言注释工具的实现思路
    本文介绍了C语言中注释的两种方式以及注释的作用,提供了删除C语言注释的工具实现思路,并分享了C语言中注释的快捷键操作方法。 ... [详细]
  • 本文介绍了在Linux下安装Perl的步骤,并提供了一个简单的Perl程序示例。同时,还展示了运行该程序的结果。 ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • 本文探讨了C语言中指针的应用与价值,指针在C语言中具有灵活性和可变性,通过指针可以操作系统内存和控制外部I/O端口。文章介绍了指针变量和指针的指向变量的含义和用法,以及判断变量数据类型和指向变量或成员变量的类型的方法。还讨论了指针访问数组元素和下标法数组元素的等价关系,以及指针作为函数参数可以改变主调函数变量的值的特点。此外,文章还提到了指针在动态存储分配、链表创建和相关操作中的应用,以及类成员指针与外部变量的区分方法。通过本文的阐述,读者可以更好地理解和应用C语言中的指针。 ... [详细]
  • imx6ull开发板驱动MT7601U无线网卡的方法和步骤详解
    本文详细介绍了在imx6ull开发板上驱动MT7601U无线网卡的方法和步骤。首先介绍了开发环境和硬件平台,然后说明了MT7601U驱动已经集成在linux内核的linux-4.x.x/drivers/net/wireless/mediatek/mt7601u文件中。接着介绍了移植mt7601u驱动的过程,包括编译内核和配置设备驱动。最后,列举了关键词和相关信息供读者参考。 ... [详细]
  • 本文介绍了在mac环境下使用nginx配置nodejs代理服务器的步骤,包括安装nginx、创建目录和文件、配置代理的域名和日志记录等。 ... [详细]
  • Android源码深入理解JNI技术的概述和应用
    本文介绍了Android源码中的JNI技术,包括概述和应用。JNI是Java Native Interface的缩写,是一种技术,可以实现Java程序调用Native语言写的函数,以及Native程序调用Java层的函数。在Android平台上,JNI充当了连接Java世界和Native世界的桥梁。本文通过分析Android源码中的相关文件和位置,深入探讨了JNI技术在Android开发中的重要性和应用场景。 ... [详细]
  • 本文介绍了在多平台下进行条件编译的必要性,以及具体的实现方法。通过示例代码展示了如何使用条件编译来实现不同平台的功能。最后总结了只要接口相同,不同平台下的编译运行结果也会相同。 ... [详细]
  • 本文由编程笔记#小编为大家整理,主要介绍了StartingzookeeperFAILEDTOSTART相关的知识,希望对你有一定的参考价值。下载路径:https://ar ... [详细]
  • Java在运行已编译完成的类时,是通过java虚拟机来装载和执行的,java虚拟机通过操作系统命令JAVA_HOMEbinjava–option来启 ... [详细]
author-avatar
hojk
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有