当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 如何使用 Samba 连接到 Linux Active Directory

作者:精品下载站 日期:2024-12-14 13:18:17 浏览:12 分类:玩电脑

如何使用 Samba 连接到 Linux Active Directory


如果您是系统管理员,并且想知道如何将 Linux 桌面和服务器添加到当前的 Linux Active Directory (AD),那么您来对地方了。将新客户端添加到 AD 可以简化多台客户端计算机之间的用户管理,特别是当您管理环境中的数百台计算机时。

在本教程中,您将学习如何将 Linux 系统(Ubuntu 20.04、Linux Mint 和 Ubuntu Server)添加到 Linux Samba Active Directory。这样做允许 Samba Active Directory 用户使用自己的主目录、默认 shell 和 sudo root 权限(如果需要)登录 Linux 客户端计算机。

准备好?直接跳进去!

您的 Active Directory 中的密码是否已泄露?下载 Specops 密码审核器并免费扫描。

先决条件

本教程将是一个实践演示。如果您想跟随,请确保您满足以下要求:

  • Linux 桌面计算机 - 本教程使用 Ubuntu 20.04 桌面,但您可以使用其他发行版,例如 Linux Mint 和 Ubuntu Server。
  • 具有 sudo 权限的非 root 用户。
  • 功能齐全的 Samba Active Directory (AD)。

设置永久 DNS 解析器

在将 Linux 客户端添加到 Samba Active Directory 之前,必须确保可以从客户端计算机访问 Samba Active Directory 域名。如何?通过在 /etc/resolv.conf 配置文件中将 Samba AD IP 地址设置为每台客户端计算机的默认 DNS 解析器。

1. 打开终端,然后运行下面的 systemctl 命令来禁用和停止 systemd-resolved 服务。这样做可以确保 Linux 客户端使用静态且永久的 DNS 解析器。

管理员定义了此永久 DNS 解析,并且不会被任何第三方服务(例如 systemd-resolved)取代。

# disable and stop systemd-resolved service
sudo systemctl disable --now systemd-resolved

[玩转系统] 如何使用 Samba 连接到 Linux Active Directory

2. 接下来,运行下面的unlink命令来删除符号链接文件(/etc/resolv.conf)。您将在下一步中替换该文件。 # 删除符号链接文件 /etc/resolv.conf sudo unlink /etc/resolv.conf

# remove symlink file /etc/resolv.conf
sudo unlink /etc/resolv.conf

3. 现在,使用您喜欢的编辑器创建一个名为 /etc/resolv.conf 的新文件,并使用以下配置填充该文件。

下面的配置设置了主 DNS 解析器和后备 DNS 解析器。

# Samba AD as main DNS resolver
nameserver 172.16.1.10

# fall-back DNS resolver using Cloudflare
nameserver 1.1.1.1

# hostname lookup for domain example.lan
search example.lan

4. 运行下面的 chattr 命令使文件 /etc/resolv.conf 不可变,以确保客户端计算机始终使用 Samba AD 作为默认 DNS 解析器。这些命令还可以防止其他服务(例如 NetworkManager)的覆盖。

# making the file `/etc/resolv.conf` immutable
sudo chattr +i /etc/resolv.conf

# remove immutable attribute
sudo chattr -i /etc/resolv.conf

5. 最后,运行下面的 ping 命令来验证与 Samba AD 域名 dc1.example.lanexample.lan 的连接。

# ping to AD server dc1.example.an and example.lan
ping -c3 dc1.example.lan
ping -c3 example.lan

如果连接成功,您将收到 AD 服务器的回复消息,并且域 dc1.example.lanexample.lan 将解析为 Samba广告 IP 地址。

[玩转系统] 如何使用 Samba 连接到 Linux Active Directory

将 Chrony 设置为 NTP 客户端

配置 DNS 解析器后,您现在将设置 Chrony 以同步客户端计算机与 Samba AD 服务器之间的时间。如果客户端与AD服务器之间存在时间差(最多5分钟),客户端将无法访问AD服务器上的所有资源。

1. 运行以下命令将 chrony 安装到您的 Linux 客户端。

# install chrony
sudo apt install chrony -y

2. 现在,在您的首选编辑器中编辑默认 Chrony 配置 (/etc/chrony/chrony.conf) 并添加以下配置。

bindcmdaddress 值必须是客户端 IP 地址。 Chrony 服务将在此 IP 地址上运行。而服务器选项是您将 Samba AD 域名添加为 NTP 服务器的位置。

# run Chrony as NTP client on the IP address
bindcmdaddress 172.16.1.85

# time synchronize to the Samba AD dc1.example.lan
server dc1.example.lan iburst

3. 接下来,运行下面的 systemctl 命令来重新启动 chronyd 服务并验证服务状态是否为活动(正在运行)# 重新启动 chronyd 服务 sudo systemctl restart chronyd # 验证 chronyd 服务状态 sudo systemctl status chronyd

# restart chronyd service
sudo systemctl restart chronyd

# verify status chronyd service
sudo systemctl status chronyd

如下所示,chronyd 服务处于活动(正在运行) 状态并且已启用。 Chrony NTP 客户端现在将在系统启动时自动启动。

[玩转系统] 如何使用 Samba 连接到 Linux Active Directory

4. 最后,运行以下命令以验证客户端计算机上的 Chrony 服务是否已连接到 Samba AD NTP 服务器。 慢性跟踪

chronyc tracking

如下所示,Linux 客户端上的 Chrony 服务连接到 IP 地址为 172.16.1.10 的 Samba AD NTP 服务器。

[玩转系统] 如何使用 Samba 连接到 Linux Active Directory

将 Linux 客户端加入 Samba Active Directory

您现在已经在 Linux 客户端上配置了 Chrony。但是如何将这台客户端计算机添加到 Samba Active Directory 中呢?首先安装并配置 realmdsssd 服务,以将 Linux 客户端添加到 Samba AD 服务器。

1. 运行下面的 apt 命令来刷新您的软件包索引。此命令可确保您从存储库安装最新版本的软件包。

sudo apt update

接下来,运行以下命令来安装 realmdsssd 服务以及所需的所有其他软件包。 realmd 服务与底层 Linux 服务(例如 sssd)一起使用,以加入 Samba Active Directory。

sudo apt install -y realmd sssd sssd-tools samba-common krb5-user packagekit samba-common-bin samba-libs adcli

输入 Samba Active Directory 的默认领域(大写),如下所示。您将使用此默认领域进行 Kerberos 身份验证。

在此示例中,Samba AD 的默认领域域是 EXAMPLE.LAN

[玩转系统] 如何使用 Samba 连接到 Linux Active Directory

3. 使用您喜欢的编辑器创建一个新文件 /etc/realmd.conf 并添加以下配置。以下配置执行以下操作:

  • 处理Samba AD域和用户的行为
  • 指定客户端与 AD 服务器的连接
  • 确定是否使用附加服务的自动安装。
  • example.lan AD 域的具体配置。
[users]
# define Samba AD users behavior
# define default home directory and shell for Samba AD users
default-home = /home/%U
default-shell = /bin/bash

[active-directory]
# define realmd connection to the Samba AD
# you can use `sssd` or `winbind` for realmd to join Samba AD
# os-name can used as an identifier for client
default-client = sssd
os-name = Linux Ubuntu and Mint Desktop

[service]
# disable automati install for additional realmd service
automatic-install = no

[example.lan]
# define behavior of Samba AD `example.lan`
# disable fully-qualified-names so you can use a username to identify Samba users
# automatic-id-mapping to yes will automatically generate UID and GID numbers
# user-principal to yes will automatically create UserPrincipalName for the client machine
# manage-system to yes to enabled realmd to manage client machine
fully-qualified-names = no
automatic-id-mapping = yes
user-principal = yes
manage-system = yes

运行下面的 kinit 命令,使用默认用户 (administrator) 验证与 Kerberos 服务的域连接 (EXAMPLE.LAN)。

出现提示时输入administrator Samba AD 用户的密码,如下所示。

向 Samba AD 添加新客户端需要使用管理员用户。

# authenticate to Kerberos server on EXAMPLE.LAN using administrator
sudo kinit [email 

# verify authentication and print detailed Kerberos tickets for administrator user
sudo klist

[玩转系统] 如何使用 Samba 连接到 Linux Active Directory

5. 现在,运行下面的 realm join 命令将 Linux 客户端添加到 Samba AD (example.lan)。将 UbuntuMintDesktop 替换为唯一的用户主体名称 (UPN)。每个客户端/计算机必须有不同的 UPN。

# joining/adding Linux Ubuntu/Mint to Samba AD example.lan
# --verbose to get full logs from the process
# --user-principal will automatically set the UserPrincipalName for this machine
# --unattended will run the realm command without prompting for a password prompt,
# because you've already authenticated through the Kerberos ticket
sudo realm join --verbose example.lan --user-principal=UbuntuMintDesktop/[email  --unattended

该过程完成后,您将收到在领域中成功注册计算机消息。至此,您已成功将 Linux 客户端添加到 Samba Active Directory。

[玩转系统] 如何使用 Samba 连接到 Linux Active Directory

6. 接下来,在您的首选编辑器中打开 /etc/sssd/sssd.conf 配置文件。

添加以下行,将默认组策略对象 (GPO) 访问控制更改为 permissive,并将 access_provider 的值设置为 adad 值表示 sssd 服务的默认身份验证是 Active Directory。

在撰写本文期间,当 ad_gpo_access_control 设置为 enforcing(默认值)时,Ubuntu 20.04 桌面版和服务器版将不允许 AD 用户登录。因此,您将 ad_gpo_access_control 值更改为 permissive

但在 Linux Mint 上,即使 ad_gpo_access_control 处于强制模式,您仍然可以使用 AD 用户登录。

# change default GPO access control to permissive
ad_gpo_access_control = permissive

[玩转系统] 如何使用 Samba 连接到 Linux Active Directory

7. 运行下面的 pam-auth-update 命令来修改 PAM 配置。此命令启用 PAM 模块 (pam_mkhomedir.so)。启用 PAM 模块会自动为 Samba AD 用户创建主目录(仅当主目录不可用时)。

# modify PAM configuration
pam-auth-update

在终端屏幕上选择在登录时创建主目录选项,然后选择确定进行确认。

按 SPACE 键启用选项,然后按 TAB 键移动光标菜单。

[玩转系统] 如何使用 Samba 连接到 Linux Active Directory

8. 运行下面的realm list命令来验证您与 Samba Active Directory 的连接。

# Checking connected AD
realm list

如果连接成功,您将收到详细的 AD 连接信息,如下所示。

在下面,您可以看到 Ubuntu/Mint 桌面计算机作为 (kerberos-member) 连接到 Samba Active Directory (example.lan)。

[玩转系统] 如何使用 Samba 连接到 Linux Active Directory

9. 现在,运行下面的 id 命令来检查 Samba AD 用户。

# checking Samba AD user `alice`
id alice

如果安装成功,您将收到 Samba 用户 alice 的随机 uidgid。在此示例中,您可以看到用户 alice 已创建并可在 Samba AD 上使用。

[玩转系统] 如何使用 Samba 连接到 Linux Active Directory

10. 此外,运行以下命令设置默认文本编辑器并在默认编辑器中打开 (visudo) /etc/sudoers 文件。您可以随时更改首选文本编辑器,但此演示的默认编辑器是 nano

# Sets default editor to nano
export EDITOR=nano
# Opens the /etc/sudoers file in the default editor
visudo

使用以下格式将您的 Samba AD 用户添加到 sudoers 文件中,保存更改并关闭编辑器。这样做可以让您为 Samba 用户启用 sudo 权限(如果您需要用户运行 sudo)。

# add Samba user `alice` to sudoers
alice ALL=(ALL:ALL) ALL

[玩转系统] 如何使用 Samba 连接到 Linux Active Directory

11. 最后,在 Ubuntu 桌面上运行以下命令来重新启动系统以应用新配置。

但对于 Linux Mint 和 Ubuntu 服务器,您仍然需要添加一些额外的配置,这将在下一节中介绍。

sudo reboot

为 Samba Active Directory 设置 LightDM

使用用户名和密码进行手动登录过程的默认 LightDM 配置在 Linux Mint 桌面上已禁用。您将更改 LightDM 配置以启用手动登录过程,以便 Samba AD 用户可以登录到 Mint Desktop 计算机。

在您的首选编辑器中打开 LightDM (/etc/lightdm/lightdm.conf) 配置文件,并在 [Seat:*] 部分下填充以下配置。

下面的greeter-show-manual-login=true选项启用 LightDM 上的手动登录过程,而allow-guest=false选项则禁用访客用户登录。

# enable manual login
greeter-show-manual-login=true

# disable guest login
allow-guest=false

[玩转系统] 如何使用 Samba 连接到 Linux Active Directory

现在,运行以下命令重新启动 Linux Mint 桌面以应用新配置。

sudo reboot

为 SSH 服务设置 Kerberos 身份验证

您必须在服务器环境中的SSH服务上启用Kerberos身份验证。这样做可以让 AD 用户登录到服务器。如何?通过编辑 SSH 配置文件。

在您的首选编辑器中打开 SSH (/etc/ssh/sshd_config) 配置文件。

取消注释以下选项并将其值设置为 yes

  • KerberosAuthentication - 启用 Kerberos 身份验证。
  • KerberosTicketCleanup - 注销时自动销毁 Kerberos 票证

[玩转系统] 如何使用 Samba 连接到 Linux Active Directory

现在,运行以下命令重新启动服务器并应用新配置。

sudo reboot

使用Samba AD用户登录Linux机器

现在您已完成 Linux 客户端并将其添加到 Samba AD。但是如何验证 Samba AD 用户是否可以登录这些 Linux 客户端呢?您可以在 Linux 桌面客户端上的显示管理器登录屏幕上指定用户和密码。而对于Ubuntu服务器,您可以通过安全的SSH协议进行连接。

登录 Ubuntu、Mint 和 Ubuntu 服务器看起来各不相同。但不用担心,在此演示中您将看到如何使用 Samba AD 用户登录每个操作系统。

登录Linux Ubuntu桌面

对于 Linux Ubuntu Desktop,使用 Samba AD 用户登录与通常登录用户帐户的方式相同。

1. 启动您的 Ubuntu 桌面客户端,单击 Ubuntu GDM 登录屏幕上的未列出?选项以使用其他用户登录。

[玩转系统] 如何使用 Samba 连接到 Linux Active Directory

2. 接下来,以 [email 格式输入您的 Samba AD 用户。此示例使用 Samba AD 用户alice(example.lan),如下所示。

[玩转系统] 如何使用 Samba 连接到 Linux Active Directory

3. 输入 Samba AD 用户 (alice) 的密码,然后按 ENTER 登录。

[玩转系统] 如何使用 Samba 连接到 Linux Active Directory

登录后,您将看到默认的 Ubuntu 桌面,如下图所示,其中 Samba AD 用户 alice 已成功登录。

您可以在下面看到 PAM 模块 (pam_mkhomedir.so.) 自动创建用户的主目录。而 sudo root 权限是通过文件 sudoers 配置的。

[玩转系统] 如何使用 Samba 连接到 Linux Active Directory

登录Linux Mint桌面

对于 Linux Mint 桌面,登录看起来与在 Ubuntu 桌面上登录的方式有点不同,

点击“登录”按钮,输入您的用户名和密码,如下所示,然后按 ENTER 登录。

[玩转系统] 如何使用 Samba 连接到 Linux Active Directory

现在,您将看到 Samba AD 用户的 Linux Mint 桌面,如下所示。

[玩转系统] 如何使用 Samba 连接到 Linux Active Directory

登录Ubuntu服务器

与前两个操作系统不同,您将使用 ssh 命令通过命令行环境登录 Ubuntu 服务器。

从另一台计算机运行下面的 ssh 命令,使用 Samba AD 用户按照 user@server_ip 格式连接到服务器,如下所示。

# connect to SSH using AD user
ssh [email 

输入 yes 添加服务器指纹身份并输入 Ubuntu 服务器的 Samba AD 用户密码。

[玩转系统] 如何使用 Samba 连接到 Linux Active Directory

如下所示,系统会自动创建用户的主目录,并且 Samba AD 用户的默认 shell 是 Bash。

[玩转系统] 如何使用 Samba 连接到 Linux Active Directory

强制执行合规性要求,阻止超过 30 亿个被泄露的密码,并通过动态最终用户反馈帮助用户在 Active Directory 中创建更强的密码。立即联系我们了解 Specops 密码政策!

结论

在本教程中,您学习了如何使用 SSSD 和领域服务将 Linux 客户端(桌面和服务器)添加到 Samba Active Directory (AD)。此外,您还学习了如何在 Linux 服务器的 SSH 服务上启用 Kerberos 身份验证。

现在,您将如何利用 Samba Active Directory 的功能?也许尝试添加另一台服务器作为域控制器 (DC) 以加入当前的 Samba AD?此设置为您的 AD 提供复制、冗余和负载平衡支持。因此,您可以将另一组客户端添加到 Samba AD。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯