如何在 Linux 中将 Samba 设置为主域控制器

网友投稿 1461 2022-05-30

系统管理员使用 Samba 来克服在 Linux 和 Windows 的混合环境中的互操作性问题。它为 Windows 和 Linux 提供了一个公共平台,以拥有一个公共共享空间。

域控制器是一种服务,用于集中管理网络中的用户、组或任何对象。该服务使我们能够管理、验证和保护用户登录和相关数据。

本教程解释了我们如何将 Linux 上的 Samba 配置为主域控制器。

1. 设置正确的主机名

确保您已经设置了适当的主机名和静态 ip。如果您使用内部 ip 地址,并且希望从 Internet 访问它,请在防火墙上设置适当的 NAT 规则。

在本教程中将使用 tgs.example.com 作为主机名。

# vi /etc/sysconfig/network HOSTNAME=tgs.example.com

确保它在 ifcfg-eth0 文件中有适当的静态 IP 地址设置。

# vi /etc/sysconfig/network-script/ifcfg-eth0 IPADDR=192.168.101.1 NETMASK=255.255.255.0

此外,在您的 /etc/sysconfig/network 和 /etc/resolv.conf 文件中相应地分配网关和 dns。

验证您的 /etc/hosts 文件是否包含类似于以下内容的条目。

# vi /etc/hosts 192.168.101.1 tgs.example.com tgs

此外,请确保 NTP 服务已在此服务器上设置并正常运行。

2. 从源码安装 Samba

在 CentOS 上,默认情况下不会为最小安装类型安装 samba 包。

首先,安装以下依赖包。

# yum install glibc glibc-devel gcc python* libacl-devel krb5-workstation krb5-libs pam_krb5 git-core openldap-devel

接下来,下载 samba 源代码,如下所示。

# git clone git://git.samba.org/samba.git sambaserver

这些文件将被下载到 sambaserver 目录。如下图安装samba服务器。

cd sambaserver ./configure --enable-debug --enable-selftest make make install

Samba 将安装在默认位置 /usr/local/samba/bin。您将看到在此目录下安装了几个 samba 客户端实用程序。

# cd /usr/local/samba/bin/ # ls cifsdd ldbsearch ntdbrestore regshell smbcquotas tdbbackup dbwrap_tool locktest ntdbtool regtree smbget tdbdump eventlogadm masktest ntlm_auth rpcclient smbpasswd tdbrestore gentest ndrdump oLschema2ldif samba-tool smbspool tdbtool ldbadd net pdbedit sharesec smbstatus testparm ldbdel nmblookup pidl smbcacls smbtar wbinfo ldbedit nmblookup4 profiles smbclient smbta-util ldbmodify ntdbbackup regdiff smbclient4 smbtorture ldbrename ntdbdump regpatch smbcontrol smbtree

3. 设置域供应

要启动域供应,请执行 samba-tool,如下所示。这将从配置文件中选取默认主机名和域名。

# /usr/local/samba/bin/samba-tool domain provision Realm [EXAMPLE.COM]: Domain [EXAMPLE]: Server Role (dc, member, standalone) [dc]: DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]: DNS forwarder IP address (write 'none' to disable forwarding) [125.22.47.125]: 8.8.8.8 Administrator password: Retype password: ... ... Adding DNS accounts Creating CN=MicrosoftDNS,CN=System,DC=example,DC=com Creating DomainDnsZones and ForestDnsZones partitions Populating DomainDnsZones and ForestDnsZones partitions Setting up sam.ldb rootDSE marking as synchronized Fixing provision GUIDs A Kerberos configuration suitable for Samba 4 has been generated at /usr/local/samba/private/krb5.conf Once the above files are installed, your Samba4 server will be ready to use Server Role: active directory domain controller Hostname: tgs NetBIOS Domain: EXAMPLE DNS Domain: example.com DOMAIN SID: S-1-5-21-2869186506-3515775153-2841826798

4.启动Samba服务

启动samba服务,如下图。

/usr/local/samba/sbin/samba

将以下条目添加到 rc.local 文件以确保 samba 服务在系统启动期间自动启动。

# echo /usr/local/samba/sbin/samba >> /etc/rc.d/rc.local # cat /etc/rc.d/rc.local touch /var/lock/subsys/local /usr/local/samba/sbin/samba

5. 检查 Samba 版本

您可以使用 samba 或 smbclient 命令验证 samba 版本,如下所示。

# /usr/local/samba/sbin/samba -V Version 4.2.0pre1-GIT-913b2a1 # /usr/local/samba/bin/smbclient -V Version 4.2.0pre1-GIT-913b2a1

以下命令将显示当前可用的所有 Samba 共享。

# /usr/local/samba/bin/smbclient -L localhost -U% Domain=[EXAMPLE] OS=[Windows 6.1] Server=[Samba 4.2.0pre1-GIT-913b2a1] Sharename Type Comment --------- ---- ------- netlogon Disk sysvol Disk IPC$ IPC IPC Service (Samba 4.2.0pre1-GIT-913b2a1) Domain=[EXAMPLE] OS=[Windows 6.1] Server=[Samba 4.2.0pre1-GIT-913b2a1] Server Comment --------- ------- Workgroup Master --------- -------

验证您是否能够使用管理员用户名和密码登录。

# /usr/local/samba/bin/smbclient //localhost/netlogon -Uadministrator -c 'ls' Enter administrator's password: Domain=[EXAMPLE] OS=[Windows 6.1] Server=[Samba 4.2.0pre1-GIT-913b2a1] . D 0 Fri Feb 21 15:06:15 2014 .. D 0 Fri Feb 21 15:06:28 2014 57901 blocks of size 8309996. 54372 blocks available

6. 验证域

现在让我们检查域是否按预期运行。检查 SRV 和 A 记录,如下所示。

# host -t SRV _ldap._tcp.example.com _ldap._tcp.example.com has SRV record 0 100 389 tgs.example.com. # host -t SRV _kerberos._udp.example.com _kerberos._udp.example.com has SRV record 0 100 88 tgs.example.com. # host -t A tgs.example.com tgs.example.com has address 192.168.101.1

使用 samba-tool 命令验证域名,如下所示。

# /usr/local/samba/bin/samba-tool testparm --suppress-prompt | grep realm realm = EXAMPLE.COM

7. 配置 Kerberos

将示例 krb5.conf 文件复制到 /etc 目录。

cp /usr/local/samba/share/setup/krb5.conf /etc/krb5.conf

将 default_realm 设置为您的域名。在这种情况下,我们将其设置为 example.com

如何在 Linux 中将 Samba 设置为主域控制器

# cat /etc/krb5.conf [libdefaults] default_realm = EXAMPLE.COM dns_lookup_realm = false dns_lookup_kdc = true

使用 kinit 命令确保 Kerberos 设置正确,如下所示。

# kinit administrator@EXAMPLE.COM Password for administrator@EXAMPLE.COM: Warning: Your password will expire in 41 days on Fri Apr 4 15:06:25 2020

最后,您可以使用 Windows 远程管理员工具连接到 Samba 服务器并将其用作域控制器。

如果您在上述过程中遇到任何问题,请确保通过更新所有软件包使系统保持最新状态。您还可以暂时禁用 SELinux,并查看 audit.log 以获取任何与 SELinux 相关的错误消息。此外,请确保您的 IPTables 规则没有阻止 Samba 在服务器之间进行通信所需的端口。

Linux

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:华为云发布四大金融行业解决方案
下一篇:【开天aPaaS】经验即服务,看数字资产治理如何加速应用创新
相关文章