如何設定使用 LDAP 驗證的非互動式使用者的路徑?

如何設定使用 LDAP 驗證的非互動式使用者的路徑?

在執行 OSX 10.7.5 的 Mac 上,我需要為透過 ssh 連線並使用 LDAP 進行身份驗證的非互動式使用者設定 PATH。這是在這裡提出(並回答)的相同問題:

https://serverfault.com/questions/139426/updating-the-path-for-running-an-command-through-ssh-with-ldap-user-account

但我對 PAM 或 LDAP 不夠熟悉,無法完全理解答案。

看來我需要:

add a line to /etc/pam.d/sshd saying "auth      required    pam_env.so"
create a file named /etc/security/pam_env.conf

但 pam_env.conf 的文檔確實令人困惑,我無法判斷我是否需要預設值或覆蓋值。

我認為這些是正確的步驟嗎?我應該將哪一行放入 pam_env.conf 中?

謝謝,克里斯

ps 我嘗試將「auth required pam_env.so debug」行放入 /etc/pam.d/sshd 中,但在 /var/log/system.log 中沒有看到任何看起來來自 pam_env.so 的內容。我還創建了 /etc/security/pam_env.conf 並將“PATH DEFAULT=/usr/fred OVERRIDE=/usr/george”行放入其中,它對 PATH 沒有明顯的影響。

pps 如果我執行:

ssh USER@MACHINE echo \$SHELL

它說/bin/bash。如果我隨後登入 MACHINE 並將此行新增至 /etc/bashrc:

export Test=Fred

並返回我的機器並執行:

ssh USER@MACHINE echo \$Test

它什麼也不返回。當我使用 LDAP 以這種方式登入時,它不會執行 /etc/bashrc。

ppps 一些可能很重要的附加資訊: 在 MACHINE 上沒有名為 USER 的本機用戶。 MACHINE 已設定為進行 LDAP 驗證,因此當我 ssh USER@MACHINE 時,我的 $HOME 設定為 /Network/Servers/blah/blah/Users/USER。如果我編輯/Network/Servers/blah/blah/Users/USER/.bashrc 來設定PATH,它對我來說可以正常工作,但這不是一個很好的解決方案,因為這意味著每個希望訪問此伺服器的人都必須編輯他們的網頁.bashrc。

答案1

這是一個修改https://askubuntu.com/questions/382485/ssh-how-to-force-execution-of-a-script-etc-sshrc-forcecommand-on

透過以下命令,您可以強制取得/etc/bashrc所有 SSH 登入(無論是否有互動)。這可能會給那些依賴/etc/bashrc不執行非互動式登入的用戶帶來一些問題,因此請謹慎操作(儘管這正是您所要求的,因此您可能知道其含義)。

首先添加ForceCommand /usr/local/bin/sshd_envs/etc/sshd_config.然後將以下內容放入/usr/local/bin/sshd_envs

#!/bin/bash

source /etc/bashrc

if [ -n "$SSH_ORIGINAL_COMMAND" ]; then
  eval $SSH_ORIGINAL_COMMAND
else
  exec $SHELL
fi

無論您輸入什麼環境設置,/etc/bashrc每次 SSH 登入都會進入環境。

請注意,/etc/bashrcOS/X 的預設設定將在評估前幾行後立即退出(因為 PS1 未設定為非互動式 shell):

if [ -z "$PS1" ]; then
  return
fi

因此,要么註解掉這些行,要么將您想要評估非互動式 SSH 登入的所有內容放在這些行之前。

相關內容