在 Active Directory 域中的 Linux 系统上覆盖模板 shell?

在 Active Directory 域中的 Linux 系统上覆盖模板 shell?

是否有一种简单的方法可以根据每个用户覆盖 Samba“模板 shell = /bin/bash”设置?

这是针对加入 Active Directory 域的 Linux 系统。有些用户想要 /bin/bash。其他人(包括我自己)想要 /bin/zsh。我可以设置一些 AD 属性吗?

我通过谷歌搜索找到的任何东西看起来都充其量只是黑客行为(编写一个脚本来替换 /bin/sh——维护很麻烦)。

类似的 serverfault 问题覆盖 LDAP 外壳似乎是面向 OpenLDAP 的(但如果有人知道如何让它与 AD 一起工作,请告诉我)。

答案1

如果您使用 winbind,您可以执行以下操作:

  1. 按照 Christoph 的建议安装 IDMU。如果你有 2003 R2 或更高版本,必要的 RFC 2307 架构已安装,因此您可以跳过此步骤。

  2. 将以下内容添加到 smb.conf,按照Samba 维基

    winbind nss info = rfc2307
    

    再次强调,这只有在您使用 winbind 时才会起作用。更改完成后请重新启动。

  3. 在 Active Directory 中设置用户loginShell属性。winbind 将在下次刷新时遵循该设置。

答案2

如果您有大量使用 AD 的 Linux 系统,这可能效率不高,但对于少数系统来说,最简单的方法是在 Linux 机器上运行以下命令:

getent passwd ADUSER >> /etc/passwd

然后编辑 /etc/passwd 中的相应行以反映首选的 shell(或者更好的是,在附加到 /etc/passwd 之前使用 sed 动态更改 shell 条目)。正如其他人所建议的,IDMU 可能是多主机最优雅的解决方案,但如果您只是想在几个系统上执行此操作,上述示例就可以完成工作。

答案3

如果您安装Unix 的身份管理(IDMU)在您的 AD 服务器上,LDAP 模式被扩展用于存储 Unix 属性,您可以在(用户)对象属性的“Unix 属性”选项卡中设置登录 shell。

相关内容