![在脚本中使用时,realm 命令无法正常工作 (CentOS 7)](https://linux22.com/image/91376/%E5%9C%A8%E8%84%9A%E6%9C%AC%E4%B8%AD%E4%BD%BF%E7%94%A8%E6%97%B6%EF%BC%8Crealm%20%E5%91%BD%E4%BB%A4%E6%97%A0%E6%B3%95%E6%AD%A3%E5%B8%B8%E5%B7%A5%E4%BD%9C%20(CentOS%207).png)
我尝试使用领域命令通过我的 AD 在 CentOS 7 主机上自动进行身份验证。
当我自己执行以下命令时,它完全有效。
$ yum -y install realmd oddjob oddjob-mkhomedir sssd samba-common
$ realm join -U admin domain.com
$ realm permit -g [email protected]
除此之外,我将以下几行替换为/etc/sssd/sssd.conf并重启sssd服务。
use_fully_qualified_names = False
fallback_homedir = /home/%d/%u
$systemctl restart sssd
完成这些步骤后,我可以使用 Active Directory 的任何允许的用户登录该特定 CentOS 主机
现在的问题是:
如果我在 CentOS 主机上以 root 身份运行以下脚本,似乎一切都正常。
yum -y install realmd oddjob oddjob-mkhomedir sssd samba-common
echo "Password" | realm join -U admin domain.com
realm permit -g [email protected]
sed -i -e 's/use_fully_qualified_names = True/use_fully_qualified_names = False/g' /etc/sssd/sssd.conf
sed -i -e 's#fallback_homedir = /home/%u@%d#fallback_homedir = /home/%d/%u#g' /etc/sssd/sssd.conf
systemctl restart sssd
如果我尝试以允许的 AD 用户身份登录,它会显示没有权限
我检查了/etc/sssd/sssd.conf对于任何可能由 sed 引起的问题,但这似乎很好。还运行命令领域列表好像没有问题。
# realm list
domain.com
type: kerberos
realm-name: DOMAIN.COM
domain-name: domain.com
configured: kerberos-member
server-software: active-directory
client-software: sssd
required-package: oddjob
required-package: oddjob-mkhomedir
required-package: sssd
required-package: adcli
required-package: samba-common
login-formats: %U
login-policy: allow-permitted-logins
permitted-logins:
permitted-groups: [email protected]
该命令的输出与我手动执行命令后运行它时的输出完全相同。
有人知道如何处理吗?
答案1
我遇到了同样的问题,我注意到这ldap_id_mapping = True
是我的解决方案。这是在/etc/sssd/sssd.conf
.
答案2
您可能希望包含领域加入命令的详细输出。使用 echo 将密码传输到领域命令的方式是编写脚本的正确方法。这是我使用的:
echo $passwd | realm join --verbose --membership-software=adcli --user=administrator MYDOMAIN.COM
我还允许各组使用不同的格式。这就是对我有用的方法。
realm permit --groups "mydomain.com\\group-name"
在我的 sssd.conf 中我有
[domain/mydomain.com]
ad_domain = mydomain.com
krb5_realm = MYDOMAIN.COM
realmd_tags = manages-system joined-with-adcli
cache_credentials = True
id_provider = ad
krb5_store_password_if_offline = True
default_shell = /bin/bash
ldap_id_mapping = True
ad_maximum_machine_account_password_age = 0
ldap_sasl_mech = GSS-SPNEGO
use_fully_qualified_names = True
fallback_homedir = /home/%u@%d
access_provider = simple
simple_allow_groups = mydomain.com\group-name