Samba/Active Directory 域控制器
本文介绍如何使用 Samba 设置 Active Directory 域控制器。假定所有配置文件都处于其未修改的安装后状态。本文是在全新安装上编写和测试的,除了设置静态 IPv4 网络连接(必需)外,没有其他修改。最后,以下大多数命令都需要提升的权限。尽管传统观点认为不应该这样做,但从 root 会话运行这些简短的命令可能比在需要时获取权限更容易。
安装
一个功能齐全的 samba 域控制器需要 Samba 发行版中未包含的几个程序。安装 krb5、ntp、python-dnspython、python-markdown、openresolv 和 samba 软件包,它们来自官方仓库。
Samba 包含其自己功能齐全的 DNS 服务器,但是如果您需要维护外部域的 DNS 区域,强烈建议您改用 BIND。如果您需要共享打印机,您还需要 CUPS。如果需要,请安装 bind 和/或 cups 软件包。
创建新目录
配置
创建 Active Directory 域的第一步是配置。这包括设置内部 LDAP、Kerberos 和 DNS 服务器,并执行目录所需的所有基本配置。如果您之前设置过目录服务器,您无疑会意识到使这些单独组件作为一个单元协同工作存在潜在的错误。这样做的难度正是 Samba 开发人员选择提供这些程序的内部版本的原因。上面安装的服务器软件包仅用于客户端实用程序。使用 Samba 进行配置要容易得多。只需发出以下命令
# samba-tool domain provision --use-rfc2307 --interactive
参数解释
- --use-rfc2307
- 此参数将 POSIX 属性 (UID/GID) 添加到 AD 架构。如果您打算除了 Microsoft Windows 之外还对 Linux、BSD 或 macOS 客户端(包括本地计算机)进行身份验证,这将是必要的。
- --interactive
- 此参数强制配置脚本以交互方式运行。
或者,您可以通过运行 samba-tool domain provision --help
来查看配置步骤的帮助。
交互式配置解释
- Realm
- INTERNAL.DOMAIN.COM - 这应该与 DNS 域名相同,全部大写。通常使用仅限内部的子域将您的内部域与外部 DNS 域分开,但这不是必需的。
- Domain
- INTERNAL - 这将是 NetBIOS 域名,通常是最左侧的 DNS 子域,但可以是您喜欢的任何名称。例如,名称 INTERNAL 就不是很具有描述性。也许公司名称或首字母缩写词会更合适。这应该全部大写输入,并且为了与旧客户端兼容,长度应为 15 个字符的最大长度。
- Server Role
- dc - 本文假定您正在新域中安装第一个 DC。如果您选择任何不同的选项,本文的其余部分可能对您无用。
- DNS Backend
- BIND9_DLZ 或 SAMBA_INTERNAL - 这取决于服务器管理员的个人偏好。同样,如果您为外部域托管 DNS,则强烈建议您使用 BIND9_DLZ 后端,以便平面区域文件可以继续使用,并且现有传输规则可以与内部 DNS 服务器共存。如果不确定,请使用 SAMBA_INTERNAL 后端。
- DNS forwarder IP address
- xxx.xxx.xxx.xxx 或 none - 此选项仅在使用 SAMBA_INTERNAL DNS 后端时显示。提供 DNS 服务器的 IP 地址以转发非本地 DNS 查询,或者使用字符串 none 始终执行根查找。
- Administrator password
- xxxxxxxx - 您必须为管理员帐户选择一个强密码。最低要求是一个大写字母、一个数字和至少八个字符。如果您尝试使用不符合复杂性要求的密码,配置将失败。
配置守护进程
NTPD
为您的网络时间服务器创建合适的 NTP 配置。有关说明和附加配置选项,请参阅 网络时间协议守护程序。
使用以下内容修改 /etc/ntp.conf
文件
/etc/ntp.conf
# Please consider joining the pool: # # http://www.pool.ntp.org/join.html # # For additional information see: # - https://wiki.archlinux.org.cn/index.php/Network_Time_Protocol_daemon # - http://support.ntp.org/bin/view/Support/GettingStarted # - the ntp.conf man page # Associate to Arch's NTP pool server 0.arch.pool.ntp.org server 1.arch.pool.ntp.org server 2.arch.pool.ntp.org server 3.arch.pool.ntp.org # Restrictions restrict default kod limited nomodify notrap nopeer mssntp restrict 127.0.0.1 restrict ::1 restrict 0.arch.pool.ntp.org mask 255.255.255.255 nomodify notrap nopeer noquery restrict 1.arch.pool.ntp.org mask 255.255.255.255 nomodify notrap nopeer noquery restrict 2.arch.pool.ntp.org mask 255.255.255.255 nomodify notrap nopeer noquery restrict 3.arch.pool.ntp.org mask 255.255.255.255 nomodify notrap nopeer noquery # Location of drift file driftfile /var/lib/ntp/ntpd.drift # Location of the update directory ntpsigndsocket /var/lib/samba/ntp_signd/
创建状态目录并设置权限
# install -d /var/lib/samba/ntp_signd # chown root:ntp /var/lib/samba/ntp_signd # chmod 0750 /var/lib/samba/ntp_signd
启用并启动 ntpd.service
单元。
BIND
如果您选择使用 BIND9_DLZ DNS 后端,请安装 bind 软件包并创建以下 BIND 配置。有关说明和附加配置选项,请参阅 BIND。请务必将 x 字符替换为合适的值
创建 /etc/named.conf
文件
/etc/named.conf
// vim:set ts=4 sw=4 et: acl local-networks { 127.0.0.0/8; xxx.xxx.xxx.xxx/xx; // Uncomment the following line(s) if using IPv6 //::1/128; //xxxx:xxxx:xxxx:xxxx::/64; }; options { directory "/var/named"; pid-file "/run/named/named.pid"; session-keyfile "/run/named/session.key"; // Uncomment this line to enable IPv6 connections support // listen-on-v6 { any; }; // Add this for no IPv4: // listen-on { none; }; // Add any subnets or hosts you want to allow to the local-networks acl allow-query { local-networks; }; allow-recursion { local-networks; }; allow-query-cache { local-networks; }; allow-transfer { none; }; allow-update { none; }; version none; hostname none; server-id none; auth-nxdomain yes; datasize default; empty-zones-enable no; tkey-gssapi-keytab "/var/lib/samba/bind-dns/dns.keytab"; // Uncomment if you wish to use ISP forwarders // forwarders { xxx.xxx.xxx.xxx; xxx.xxx.xxx.xxx; }; }; zone "localhost" IN { type master; file "localhost.zone"; }; zone "0.0.127.in-addr.arpa" IN { type master; file "127.0.0.zone"; }; zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" { type master; file "localhost.ip6.zone"; }; // Load AD integrated zones include "/var/lib/samba/bind-dns/named.conf"; //zone "example.org" IN { // type slave; // file "example.zone"; // masters { // 192.168.1.100; // }; // allow-query { any; }; // allow-transfer { any; }; //}; logging { channel xfer-log { file "/var/log/named.log"; print-category yes; print-severity yes; severity info; }; category xfer-in { xfer-log; }; category xfer-out { xfer-log; }; category notify { xfer-log; }; };
设置权限
# chgrp named /var/lib/samba/private/dns.keytab # chmod g+r /var/lib/samba/private/dns.keytab # touch /var/log/named.log # chown root:named /var/log/named.log # chmod 664 /var/log/named.log
启用并启动 named.service
单元。
转发器的良好值是您的 ISP 的 DNS 服务器。 Google (8.8.8.8, 8.8.4.4, 2001:4860:4860::8888 和 2001:4860:4860::8844) 和 OpenDNS (208.67.222.222, 208.67.220.220, 2620:0:ccc::2 和 2620:0:ccd::2) 免费提供合适的公共 DNS 服务器。子网的适当值特定于您的网络。
Kerberos 客户端实用程序
上面的配置步骤创建了一个完全有效的 krb5.conf 文件,用于 Samba 域控制器。使用以下命令安装它
# mv /etc/krb5.conf{,.default} # cp /var/lib/samba/private/krb5.conf /etc
DNS
您现在需要开始使用本地 DNS 服务器。重新配置 resolvconf 以仅使用 localhost 进行 DNS 查找。创建 /etc/resolv.conf.tail
(不要忘记将 internal.domain.tld 替换为您的内部域)
# Samba configuration search internal.domain.tld # If using IPv6, uncomment the following line #nameserver ::1 nameserver 127.0.0.1
设置权限并重新生成新的 /etc/resolv.conf
文件
# chmod 644 /etc/resolv.conf.tail # resolvconf -u
Samba
启用并启动 samba.service
单元。如果您打算使用 LDB 实用程序,您还需要创建 /etc/profile.d/sambaldb.sh
文件来设置 LDB_MODULES_PATH
export LDB_MODULES_PATH="${LDB_MODULES_PATH}:/usr/lib/samba/ldb"
设置文件权限并加载它
# chmod 0755 /etc/profile.d/sambaldb.sh # . /etc/profile.d/sambaldb.sh
测试安装
DNS
首先,验证 DNS 是否按预期工作。执行以下命令,将 internal.domain.com 和 server 替换为适当的值
# host -t SRV _ldap._tcp.internal.domain.com. # host -t SRV _kerberos._udp.internal.domain.com. # host -t A server.internal.domain.com.
您应该收到类似于以下内容的输出
_ldap._tcp.internal.domain.com has SRV record 0 100 389 server.internal.domain.com. _kerberos._udp.internal.domain.com has SRV record 0 100 88 server.internal.domain.com. server.internal.domain.com has address xxx.xxx.xxx.xxx
NT 身份验证
接下来,验证密码身份验证是否按预期工作
# smbclient //127.0.0.1/netlogon -U Administrator -c 'ls'
系统将提示您输入密码(您之前选择的密码),并将获得如下目录列表
. D 0 Wed Nov 27 23:59:07 2013 .. D 0 Wed Nov 27 23:59:12 2013 50332 blocks of size 2097152. 47185 blocks available
Kerberos
现在验证 KDC 是否按预期工作。请务必替换 INTERNAL.DOMAIN.COM 并使用大写字母
# kinit administrator@INTERNAL.DOMAIN.COM
系统将提示您输入密码并获得类似于以下内容的输出
Warning: Your password will expire in 41 days on Wed 08 Jan 2014 11:59:11 PM CST
验证您是否实际获得了票证
# klist
您应该获得类似于以下的输出
Ticket cache: FILE:/tmp/krb5cc_0 Default principal: administrator@INTERNAL.DOMAIN.COM Valid starting Expires Service principal 11/28/2013 00:22:17 11/28/2013 10:22:17 krbtgt/INTERNAL.DOMAIN.COM@INTERNAL.DOMAIN.COM renew until 11/29/2013 00:22:14
作为最后的测试,将 smbclient 与您最近获得的票证一起使用。将 server 替换为正确的服务器名称
# smbclient //server/netlogon -k -c 'ls'
输出应与上面测试密码身份验证时的输出相同。
附加配置
DNS
您还需要在 DNS 中为环境中的每个子网创建反向查找区域。重要的是,这应保留在 Samba 的 DNS 中,而不是 BIND 中,以便允许客户端进行动态更新。对于每个子网,使用以下命令创建反向查找区域。将 server.internal.domain.tld 和 xxx.xxx.xxx 替换为适当的值。对于 xxx.xxx.xxx,请以相反的顺序使用子网的前三个八位字节(例如:192.168.0.0/24 变为 0.168.192)
# samba-tool dns zonecreate server.internal.domain.tld xxx.xxx.xxx.in-addr.arpa -U Administrator
现在,为您的服务器添加记录(如果您的服务器是多宿主的,则为每个子网添加记录),再次如上所述替换适当的值。 zzz 将被服务器 IP 的第四个八位字节替换
# samba-tool dns add server.internal.domain.tld xxx.xxx.xxx.in-addr.arpa zzz PTR server.internal.domain.tld -U Administrator
最后,测试查找。将 xxx.xxx.xxx.xxx 替换为您的服务器的 IP
# host -t PTR xxx.xxx.xxx.xxx
您应该获得类似于以下内容的输出
xxx.xxx.xxx.xxx.in-addr.arpa domain name pointer server.internal.domain.tld.
TLS
默认情况下未启用 TLS 支持,但是,当 DC 启动时,会创建一个默认证书。随着 Samba 4.3.8 和 4.2.2 的发布,默认情况下禁用不安全的 LDAP 绑定,您必须配置 TLS 才能将 Samba 用作身份验证源(而不会降低 Samba 安装的安全性)。要使用默认密钥,请将以下行附加到 /etc/samba/smb.conf
文件的 “[global]” 部分
/etc/samba/smb.conf
[global] tls enabled = yes tls keyfile = tls/key.pem tls certfile = tls/cert.pem tls cafile = tls/ca.pem
如果需要受信任的证书,请创建签名密钥和证书请求(有关详细说明,请参阅 OpenSSL)。让您选择的证书颁发机构签署请求,并放入此目录。如果您的证书颁发机构还需要中间证书,请连接证书(服务器证书在前,然后是中间证书)并使 tls cafile 为空。
重启 samba
以使更改生效。
向现有域添加第二个域控制器
先决条件
与设置新域时的配置设置一样,您必须按照 上面的说明 配置 ntp。此外,原始域设置上的一些参数和选项必须在此处复制。
参数解释
- --option='idmap_ldb:use rfc2307 = yes'
- 如果您选择在现有域上包含 Unix UID/GID 支持(使用 Samba 配置步骤的 --use-rfc2307 选项或应用 RFC 2307 架构扩展),则这是必需的。
- --dns-backend=DNSTYPE
- 将 DNSTYPE 替换为 BIND9_DLZ 或 SAMBA_INTERNAL - 这再次取决于服务器管理员的个人偏好。如果使用 BIND9_DLZ 后端,您将需要在加入域后按照 上面的说明 配置 bind。
- --option="dns forwarder="xxx.xxx.xxx.xxx"
- 这仅对 SAMBA_INTERNAL DNS 后端有效,它允许您指定 DNS 转发器。将 xxx.xxx.xxx.xxx 替换为适当的值。
- --site=SITE
- 如果您定义了多个站点,请使用此选项直接加入该站点。
有关其他选项,请参阅 samba-tool domain join --help
的输出。
将现有域作为新 DC 加入
执行以下命令(将上面任何必要的参数添加到命令末尾)
# samba-tool domain join internal.domain.tld DC -U"INTERNAL\administrator"
现在复制 krb5.conf
# cp /var/lib/samba/private/krb5.conf /etc/krb5.conf
如果您使用了 RFC 2307 架构扩展,您需要从现有 DC 复制 idmap。如果使用 Samba,请从另一个 DC 执行以下命令
# tdbbackup -s .bak /var/lib/samba/private/idmap.ldb
这将生成文件 /var/lib/samba/private/idmap.ldb.bak
,将此文件传输到新服务器的 /var/lib/samba/private
目录中,删除 .bak 扩展名。如果您打算保留多个 DC,您将需要使用 Samba 网站 此处 列出的方法之一来自动化此过程。这也适用于从 Windows DC 传输 idmap。
启用并启动 samba.service
单元。
如果使用 BIND9_DLZ DNS 后端,您需要按照上面的 BIND 部分进行操作。检查是否创建了 /var/lib/samba/private/dns
目录,如果未创建,请运行以下命令(忽略有关更新 named.conf 的警告)
# samba_upgradedns --dns-backend=BIND9_DLZ
重启 named.service
,然后使用以下命令更新 DNS 记录
# samba_dnsupdate --all-names --use-samba-tool --verbose
现在按照新域的 LDB 配置和测试进行操作 此处。
转移 FSMO 角色
如果打算用它来替换现有的域控制器,您需要在降级现有 DC 之前转移 FSMO 角色。这目前不在本文档的范围之内。请参阅 Samba Wiki 此处。
附加服务
打印
默认情况下,当 Samba 服务器配置为域控制器时,默认情况下不启用打印。您需要将以下行添加到 /etc/samba/smb.conf
文件的 global 部分
/etc/samba/smb.conf
[global] ... rpc_server:spoolss = external rpc_daemon:spoolssd = fork printing = CUPS ... [printers] path = /var/spool/samba/ printable = yes
上述配置将启用自动共享所有 CUPS 打印队列。如果您希望仅共享特定的打印队列,您需要添加以下附加行(删除上面的 [printers] 共享)
/etc/samba/smb.conf
[global] ... load printers = no ... # Add an example print share [HPDJ3050] path = /var/spool/samba/ printable = yes printer name = hpdj3050
技巧与窍门
使用动态 DNS 更新的 DHCP
应该注意的是,使用此方法会影响 Windows 客户端的功能,因为它们仍会尝试自行更新 DNS。当这种情况发生时,机器将被拒绝执行此操作的权限,因为记录将由 dhcp 用户而不是机器帐户拥有。虽然这基本上是无害的,但它会在违规机器的系统日志中生成警告。您应该创建一个 GPO 来克服这个问题,但不幸的是,Samba 还没有命令行实用程序来修改 GPO。您将需要一台安装了 RSAT 工具的 Windows PC。只需使用组策略编辑器创建一个专用的 GPO,并仅应用于包含使用 DHCP 的工作站的 OU(以便 Samba/Windows 服务器和静态配置的 Samba/Windows 客户端仍然可以使用“ipconfig /registerdns”更新),并配置以下设置
Computer Configuration Policies Administrative Templates Network DNS Client Dynamic Update = Disabled Register PTR Records = Disabled
安装 dhcp、 sudo 和 samba-dhcpd-updateAUR 软件包。
在 AD 中创建一个非特权用户来执行更新。当提示输入密码时,使用安全密码。63 个随机的、混合大小写的字母数字字符就足够了。可选地,samba-tool 也接受 random 参数
# samba-tool user create dhcp --description="Unprivileged user for DNS updates via DHCP server"
由于这是一个服务帐户,建议禁用用户帐户的密码过期,但不是必需的
# samba-tool user setexpiry dhcp --noexpiry
授予用户管理 DNS 的权限
# samba-tool group addmembers DnsAdmins dhcp
创建 SPN 并将用户凭据导出到私有 keytab
# samba-tool spn add server/server.internal.domain.tld@INTERNAL.DOMAIN.TLD dhcp # samba-tool domain exportkeytab --principal=dhcp@INTERNAL.DOMAIN.TLD dhcpd.keytab # install -vdm 755 /etc/dhcpd # mv dhcpd.keytab /etc/dhcpd # chown root:root /etc/dhcpd/dhcpd.keytab # chmod 400 /etc/dhcpd/dhcpd.keytab
使用以下命令修改 dhcpd-update-samba-dns.conf
文件(将 server、internal.domain.tld 和 INTERNAL.DOMAIN.TLD 替换为正确的值)
/etc/dhcpd/dhcpd-update-samba-dns.conf
# Variables KRB5CC="/tmp/dhcpd4.krb5cc" KEYTAB="/etc/dhcpd/dhcpd.keytab" DOMAIN="internal.domain.tld" REALM="INTERNAL.DOMAIN.TLD" PRINCIPAL="dhcp@${REALM}" NAMESERVER="server.${DOMAIN}" ZONE="${DOMAIN}"
授予 dhcp 用户帐户权限,使其无需密码提示即可运行更新脚本(将 server 替换为服务器的主机名)
/etc/sudoers.d/dhcp-update
dhcp server = (root) NOPASSWD: /usr/bin/dhcpd-update-samba-dns.sh
按照 dhcpd 文章配置 dhcpd 服务器,并将以下内容添加到 /etc/dhcpd.conf
文件中提供 DHCP 服务的所有子网声明中
on commit { set ClientIP = binary-to-ascii(10, 8, ".", leased-address); set ClientName = pick-first-value(option host-name, host-decl-name); execute("/usr/bin/sudo", "/usr/bin/dhcpd-update-samba-dns.sh", "add", ClientIP, ClientName); } on release { set ClientIP = binary-to-ascii(10, 8, ".", leased-address); set ClientName = pick-first-value(option host-name, host-decl-name); execute("/usr/bin/sudo", "/usr/bin/dhcpd-update-samba-dns.sh", "delete", ClientIP, ClientName); } on expiry { set ClientIP = binary-to-ascii(10, 8, ".", leased-address); set ClientName = pick-first-value(option host-name, host-decl-name); execute("/usr/bin/sudo", "/usr/bin/dhcpd-update-samba-dns.sh", "delete", ClientIP, ClientName);
这是一个完整的 /etc/dhcpd.conf
文件示例,供参考
/etc/dhcpd.conf
subnet 192.168.1.0 netmask 255.255.255.0 { range 192.168.1.100 192.168.1.199; option subnet-mask 255.255.255.0; option routers 192.168.1.254; option domain-name "internal.domain.tld"; option domain-name-servers 192.168.1.1; option broadcast-address 192.168.1.255; default-lease-time 28800; max-lease-time 43200; authoritative; on commit { set ClientIP = binary-to-ascii(10, 8, ".", leased-address); set ClientName = pick-first-value(option host-name, host-decl-name); execute("/usr/bin/sudo", "/usr/bin/dhcpd-update-samba-dns.sh", "add", ClientIP, ClientName); } on release { set ClientIP = binary-to-ascii(10, 8, ".", leased-address); set ClientName = pick-first-value(option host-name, host-decl-name); execute("/usr/bin/sudo", "/usr/bin/dhcpd-update-samba-dns.sh", "delete", ClientIP, ClientName); } on expiry { set ClientIP = binary-to-ascii(10, 8, ".", leased-address); set ClientName = pick-first-value(option host-name, host-decl-name); execute("/usr/bin/sudo", "/usr/bin/dhcpd-update-samba-dns.sh", "delete", ClientIP, ClientName); } }
最后,启用并启动(或重启)dhcpd4
服务。
将用户从一个目录转移到另一个目录
不幸的是,没有内置实用程序可以将用户从一个目录导出到另一个目录。这是一种方法,尽管非常笨拙,但可以将用户特定字段从您现有的 SAM 中提取出来,并转换为适用于 ldbmodify 的 LDIF 格式
# ldbsearch -H /var/lib/samba/private/sam.ldb \ -s sub -b cn=Users,dc=internal,dc=domain,dc=tld '(objectClass=user)' | \ grep -e "^\# record" -e "^accountExpires:" -e "^c:" -e "^cn:" -e "^co:" -e "^codePage:" \ -e "^comment:" -e "^company:" -e "^countryCode:" -e "^department:" \ -e "^description:" -e "^displayName" -e "^displayNamePrintable:" \ -e "^distinguishedName" -e "^division:" -e "^dn:" -e "^employeeID:" \ -e "^facsimileTelephoneNumber:" -e "^generationQualifier:" \ -e "^givenName" -e "^homeDirectory:" -e "^homeDrive:" -e "^homePhone:" \ -e "^homePostalAddress:" -e "^info:" -e "^initials:" \ -e "^internationalISDNNumber:" -e "^ipPhone:" -e "^l:" -e "^mail:" \ -e "^manager:" -e "^middleName:" -e "^mobile:" -e "^name:" -e "^o:" \ -e "^objectClass" -e "^otherFacsimileTelephoneNumber:" \ -e "^otherHomePhone:" -e "^otherIpPhone:" -e "^otherMailbox:" \ -e "^otherMobile:" -e "^otherPager:" -e "^otherTelephone:" -e "^pager:" \ -e "^personalTitle:" -e "^physicalDeliveryOfficeName:" -e "^postalAddress:" \ -e "^postalCode:" -e "^postOfficeBox:" -e "^proxyAddresses\: SMTP" \ -e "^proxyAddresses: smtp" -e "^referredDeliveryMethod:" \ -e "^primaryInternationalISDNNumber:" -e "^primaryTelexNumber:" \ -e "^profilePath:" -e "^registeredAddress:" -e "^sAMAccountName:" \ -e "^scriptPath:" -e "^sn:" -e "^st:" -e "^street:" -e "^streetAddress:" \ -e "^telephoneNumber:" -e "^teletexTerminalIdentifier:" \ -e "^telexNumber:" -e "^title:" -e "^userAccountControl:" -e "^userPrincipalName:"\ -e "^url:" -e "^userSharedFolder:" -e "^userSharedFolderOther:" -e "^wWWHomePage:" | \ sed '/^dn:.*/ a\changetype: add' | sed '/^# record/ i\\n' > user-export.ldif
说明:仅在 users 容器中运行 ldbsearch,使用子树搜索 objectclass=user。如果您需要整个目录,您可以修改搜索库以使用根目录或其他 OU。然后将 ldbsearch 的输出通过管道传输到一个非常长的 grep 命令,该命令仅返回要保留在新目录中的适当属性。这显然是主观的,可能应该根据您的具体用例进行定制。最后,我们使用 sed 插入 changetype 行(用于告诉 ldbmodify 我们正在添加用户),并为每个导出的对象添加一个空行前缀(使其更易于阅读)。
要导入,在编辑文件并传输到新服务器后,只需在您的新 Samba 域控制器上运行以下命令
# ldbmodify -H /var/lib/samba/private/sam.ldb user-export.ldif
密码复杂度
默认情况下,Samba 要求强密码。要禁用复杂度检查,请执行以下命令
# samba-tool domain passwordsettings set --complexity=off
有关更多信息,请参阅 Samba Wiki 中的 密码设置对象