是否有一种简单的方法可以根据每个用户覆盖 Samba“模板 shell = /bin/bash”设置?
这是针对加入 Active Directory 域的 Linux 系统。有些用户想要 /bin/bash。其他人(包括我自己)想要 /bin/zsh。我可以设置一些 AD 属性吗?
我通过谷歌搜索找到的任何东西看起来都充其量只是黑客行为(编写一个脚本来替换 /bin/sh——维护很麻烦)。
类似的 serverfault 问题覆盖 LDAP 外壳似乎是面向 OpenLDAP 的(但如果有人知道如何让它与 AD 一起工作,请告诉我)。
答案1
如果您使用 winbind,您可以执行以下操作:
按照 Christoph 的建议安装 IDMU。如果你有 2003 R2 或更高版本,必要的 RFC 2307 架构已安装,因此您可以跳过此步骤。
将以下内容添加到 smb.conf,按照Samba 维基:
winbind nss info = rfc2307
再次强调,这只有在您使用 winbind 时才会起作用。更改完成后请重新启动。
在 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。