覆盖 LDAP 外壳

覆盖 LDAP 外壳

我有一个 LDAP 服务器,并在其中设置了一个预定义 shell (bash)。但有些机器上,我希望每次用户登录时都使用不同的 shell,而不是存储在 LDAP 中的 shell。

我该怎么做?有人能给我一些指导吗?

谢谢

答案1

在 /etc/ldap.conf 中添加以下行:

nss_override_attribute_value loginShell <different_shell>

祝你好运,
若昂·米格尔·内维斯

答案2

共享主目录?如果没有,请将其放入用户~/.bash_profile(或任何适当的文件,请检查 中的 INVOCATION man bash) 中:

exec /bin/tcsh

或者您希望用任何 shell 来替换 bash。

如果他们使用 ssh 登录,那么您可以使用密钥对和强制命令。

请注意,根据您将另一个 shell 的 exec 放置在哪里,scp如果您不检查交互式 shell(例如在/etc/skel/.bashrcUbuntu 上),则诸如此类的命令可能无法正常运行。

最好的办法是请您的 LDAP 管理员loginShell为您的 LDAP 用户进行更改。

答案3

十三年后......对于任何在寻找一种方法来本地覆盖特定主机上特定 LDAP 用户的 shell 时找到此帖子的人来说,有一种方法可以通过将覆盖写入 SSSD 缓存来实现。

例如,

sudo sss_override user-add myuser -s /sbin/nologin

myuser将在本地设置 shell /sbin/nologin(阻止该系统上的正常登录)。用于user-del删除覆盖。

通常,您需要在进行这些更改后重新启动守护进程。

sudo systemctl restart sssd

您可能需要安装一个包才能使用 sss_override,例如sssd-tools在 RHEL 上。

相关内容