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에 대한 문서는 정말 혼란스럽고 DEFAULT 또는 OVERRIDE 값이 필요한지 알 수 없습니다.

이것이 올바른 단계라는 것이 맞습니까? pam_env.conf에 어떤 줄을 넣어야 하나요?

고마워요, 크리스

ps "auth require 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 인증을 수행하도록 설정되었으므로 USER@MACHINE을 ssh할 때 $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 로그인에 대한 환경에 적용됩니다.

OS/X의 기본값은 /etc/bashrc처음 몇 줄을 평가한 후 즉시 종료됩니다(PS1이 비대화형 쉘에 대해 설정되지 않았기 때문).

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

따라서 이 줄을 주석 처리하거나 비대화형 SSH 로그인에 대해 평가하려는 모든 내용을 해당 줄 앞에 넣으십시오.

관련 정보