使用 LDAP 用户帐户更新通过 SSH 运行命令的 $PATH

使用 LDAP 用户帐户更新通过 SSH 运行命令的 $PATH

我正在设置一个 Mac OSX 1.6 服务器来托管 Git 存储库。因此,我们需要通过 SSH 将提交推送到服务器。

该服务器只有一个管理员帐户,并使用来自 LDAP 服务器的用户列表。

现在,由于它通过非交互式 shell 访问服务器,git 操作无法完成,因为 git 可执行文件不在默认路径中。

由于用户是网络用户,他们没有本地主文件夹。所以我不能使用 ~/.bashrc 之类的解决方案。

我浏览了几篇文章但无法让它在一个干净的设置下运行。

以下是我迄今为止收集的方法信息:

  • 我可以更新默认 PATH 环境以包含 git 可执行文件文件夹。但是,我无法成功完成此操作。更新 /etc/paths 不会改变任何内容,而且由于它不是交互式 shell,因此 /etc/profile 和 /etc/bashrc 将被忽略。

  • 从 ssh 手册页中,我了解到可以设置 BASH_ENV 变量来执行可选脚本。但是我不知道如何在服务器上设置系统范围的变量。如果需要在客户端计算机上设置,这不是一个可接受的解决方案。如果有人知道应该如何设置,请务必告知!

  • 我可以通过在系统根目录中创建一个带有 PATH 更正的 .bashrc 来解决这个问题(因为所有网络用户都会从这里开始,因为他们没有主目录)。但这感觉不对劲。此外,如果我们为用户创建主文件夹,那么 git 命令将再次失败。

  • 我可以安装第三方应用程序来设置登录挂钩,然后运行脚本创建具有必要路径更正的主目录。这听起来像是后院修修补补和用胶带解决问题。

  • 我可以在服务器上安装一个小脚本,并在登录时将 sshd 强制执行此脚本。然后,此脚本将查找要执行的命令 ($SSH_ORIGINAL_COMMAND) 并触发登录 shell 来运行此命令,或者仅触发常规登录 shell 进行交互式会话。此方法的完整详细信息可在此处找到:http://marc.info/?l=git&m=121378876831164

最后一个是我迄今为止发现的最好的方法。

关于如何正确处理此事有什么建议吗?

答案1

添加pam_env.so到 sshd 的 PAM 堆栈,并配置它以将适当的目录添加到$PATH。如果 OS X 没有单独的 sshd 堆栈,那么将其放入主身份验证堆栈中应该是安全的。

答案2

你看过 Gitosis 吗?吉托莱特? 两者都允许您更轻松地管理用户和 SSH 密钥以推送提交以及创建存储库。

我已经使用 Gitolite 一段时间了,可能会推荐它而不是 Gitosis,因为它安装起来更容易一些,并且提供每个分支的权限控制。您甚至可以将配置拆分为多个文件并将其委托出去。

(抱歉,我是新手,只能发布一个链接。)

相关内容