在无人看管的情况下将 Linux 主机加入 Active Directory

Geo*_*son 5 linux active-directory samba

我正在尝试使用 kickstart 设置一个主机块,并且有两个命令需要输入密码。一个是 kinit,因为它很容易生成一个 keytab 文件并使用 -t 传递它,另一个是当我执行 authconfig 命令时间接调用的网络连接。

有没有办法通过凭证文件或使用密码哈希来提交密码?显然我不想把它作为纯文本传递。


@ewwhite 谢谢你的链接,我去看看。我不确定任何事情,如果 SSSD 让我完成完全相同的事情并且允许无人值守配置,我绝对不反对为此使用 SSSD。我使用 Samba/Winbind 与我对它们的舒适程度有关。你能建议我如何使用 SSSD 做同样的事情,记住我不想手动输入密码吗?

相关kickstart内容:

cat << EOF > /etc/samba/smb.conf
[global]
   encrypt passwords = yes
   # logs split per machine
   log file = /var/log/samba/log.%m
   # max 50KB per log file, then rotate
   max log size = 50
   passdb backend = tdbsam
EOF

chkconfig smb on
chkconfig nmb on
service smb restart
service nmb restart

cat << EOF > /etc/krb5.conf
[logging]
 default = FILE:/var/log/krb5libs.log
 kdc = FILE:/var/log/krb5kdc.log
 admin_server = FILE:/var/log/kadmind.log

[libdefaults]
 default_realm = AD.DOMAIN.NET
 dns_lookup_realm = true
 dns_lookup_kdc = true
 allow_weak_crypto = false
 ticket_lifetime = 24h
 renew_lifetime = 7d
 rdns = false
 forwardable = true

[realms]
 AD.DOMAIN.NET = {
  admin_server = dc01.ad.domain.net
  default_domain = ad.domain.net
  kdc = dc01.ad.domain.net
 }

[domain_realm]
 .ad.domain.net = AD.DOMAIN.NET
 ad.domain.net = AD.DOMAIN.NET
EOF

net time set -S dc01.ad.domain.net

/usr/bin/kinit -k -t addom.keytab Administrator@AD.DOMAIN.NET

authconfig --update \
           --kickstart \
           --enablewinbind \
           --enablewinbindauth \
           --smbsecurity=ads \
           --smbrealm=AD.DOMAIN.NET \
           --winbindjoin=administrator@AD.DOMAIN.NET \
           --winbindtemplatehomedir=/home/DOMAIN/%U \
           --winbindtemplateshell=/bin/bash \
           --enablewinbindusedefaultdomain \
           --enablelocauthorize \
           --smbservers=dc01.ad.domain.net \
           --enablemkhomedir \
           --smbidmaprange=100000-200000
Run Code Online (Sandbox Code Playgroud)

Geo*_*son 2

事实证明,net 命令有一个使用 kerberos keytab 的选项,只需比以前更好地阅读手册页即可。这对我有用:

在域控制器上

ktpass princ host/test.ad.domain.net@AD.DOMAIN.NET mapuser AD\Administrator -pass * out test.keytab
Run Code Online (Sandbox Code Playgroud)

在执行连接的计算机上

kinit -k -t /tmp/test.keytab
net ads join -k
Run Code Online (Sandbox Code Playgroud)