我有一个 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/.bashrc
Ubuntu 上),则诸如此类的命令可能无法正常运行。
最好的办法是请您的 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 上。