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

举报
Tiamo_T 发表于 2022/08/24 16:49:23 2022/08/24
【摘要】 本文解释了我们如何将 Linux 上的 Samba 配置为主域控制器。

系统管理员使用 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 8388608. 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

# 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 2014 

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

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

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。