在 Active Directory 域中覆盖 linux 系统上的模板外壳?

ben*_*izi 5 linux active-directory samba

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

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

我通过谷歌搜索找到的任何东西充其量看起来都是骇人听闻的(编写脚本来替换 /bin/sh ——维护麻烦)。

一个类似的服务器故障问题Override LDAP shell似乎是面向 OpenLDAP 的(但如果有人知道如何让它与 AD 一起工作,请说出来)。

Han*_*an5 5

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

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

  2. 根据Samba wiki,将以下内容添加到 smb.conf 中:

    winbind nss info = rfc2307
    
    Run Code Online (Sandbox Code Playgroud)

    同样,这仅在您使用 winbind 时才有效。完成更改后重新启动它。

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


rvf*_*rvf 5

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

getent passwd ADUSER >> /etc/passwd
Run Code Online (Sandbox Code Playgroud)

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


小智 1

如果您在 AD 服务器上安装Identity Management for Unix (IDMU),LDAP 架构将扩展用于存储 Unix 属性,并且您可以在(用户)对象属性的“Unix 属性”选项卡中设置登录 shell。