su-에서 환경 변수를 어떻게 보존 할 수 있습니까?

서버 장애

ssh를 원격 시스템에 사용할 때 ssh_config LC_ALL="en_US.UTF-8"를 통해 내 보냅니다 sendEnv. 언제 su - user123이 변수는 로그인 쉘에 의해 리셋이다. LC_xxx원격 시스템에서 다른 사용자로 로그인 쉘을 실행할 때이 변수 (및 기타 변수) 를 보존하는 방법이 있습니까?

쉘을 실행하거나 ~/.bashrc대상 사용자 의 항목을 실행 한 후 수동으로 변수를 내보낼 수 있다는 것을 알고 있지만 ssh가능한 경우 보낸 원래 값을 유지하려고 합니다. 감사.

편집 : 초기화 된 사용자 환경의 특정 부분이 필요하므로 su -사용됩니다. 나는 보존하고 싶을뿐LC_xxx

서버 장애

I의 FOUND는 su환경을 보존하는 옵션이 있습니다 :

-m, -p, --preserve-environment
           Preserve the current environment, except for:
...

이렇게하면 로그인 셸과 마찬가지로 대상 사용자의 셸 초기화 파일이 실행되지만 LC_xxx유효한 값이 이미 포함 된 경우 모든 변수를 테스트하고 초기화 할 수 없습니다.

편집 : 참고로 /etc/profile.d/ssh_lc_vars.sh내 보낸 LC_xxx 변수와 함께 작동 하는 스크립트를 추가하여이 시스템 전체에 적용 할 수있었습니다 . 또한 .NET으로 처리되지 않는 초기화되지 않은 환경 변수로 추가 작업을 수행해야했습니다 su -ml userxxx. 아래는 전체 스크립트를 포함 할 수 없기 때문에 더 많은 예입니다. 누군가가 그것을 개선 할 수 있다면 더 좋습니다.

...
# clean up client-side variable for junk
lc_sanitize()
{
   arg="$1"
   # first, strip underscores
   clean="${arg//_/}"

   # next, replace spaces with underscores
   clean="${clean// /_}"

   # now, clean out anything that's not alphanumeric, underscore, hypen or dot
   ret="${clean//[^a-zA-Z0-9_\.-]/}"

   # return santized value to caller
   echo "$ret"
}

# LC_MY_LANG comes from an ssh client environment. If empty,
# this isn't a remote ssh user, but set it locally so this user
# can connect elsewhere where this script runs
if [ -z "$LC_MY_LANG" ]; then
   # force an LC_xxx setting for the environment
    LC_MY_LANG="en-US.utf-8"
else
    # otherwise, use the LC_xxxx variable from the ssh environment
    # 2017-01-30 - when using "su --preserve-environment  userxxx --login" be sure to fixup needed variables
    # shorthand: su -ml user111
    export USER=`whoami`
    export LOGNAME=${USER}
    export HOME=$( getent passwd "$USER" | cut -d: -f6 )
    cd ${HOME}

    # sanitize variable which was set client-side and log it
    u_sanitized=$(lc_sanitize "$LC_MY_LANG")
    echo "Notice: LC_MY_LANG sanitized to $u_sanitized from $SSH_CLIENT as user $USER" | logger -p auth.info
fi

# mark variable read-only so user cannot change it then export it
readonly LC_MY_LANG
# set terminal to LC_MY_LANG
export LC_LANG=${LC_MY_LANG}
export LC_MY_LANG
...

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

내 shebang에서 환경 변수를 어떻게 사용할 수 있습니까?

분류에서Dev

유성에서 환경 변수를 어떻게 확인할 수 있습니까?

분류에서Dev

.rdf 보고서를 .jrxml 파일로 어떻게 변환 할 수 있습니까?

분류에서Dev

nixos buildFHSUserEnv에 환경 변수를 어떻게 전달할 수 있습니까?

분류에서Dev

sudo su를 할 때도 모든 사용자에 대한 환경 변수를 어떻게 설정합니까?

분류에서Dev

루프 내부에서 매개 변수를 어떻게 보존 할 수 있습니까?

분류에서Dev

sshd의 환경에서 새 SSH 세션으로 환경 변수를 어떻게 전달할 수 있습니까?

분류에서Dev

Angular 지시문에서 변수를 어떻게 변경할 수 있습니까?

분류에서Dev

Bluemix 문서를 어떻게 변경할 수 있습니까?

분류에서Dev

VBA를 사용하여 Access 보고서에서 차트 제목을 어떻게 변경할 수 있습니까?

분류에서Dev

함수 내에서 사용자를 어떻게 변경할 수 있습니까?

분류에서Dev

보낸 사람 주소에 따라 $ record를 mutt에서 어떻게 변경할 수 있습니까?

분류에서Dev

보낸 사람 주소에 따라 $ record를 mutt에서 어떻게 변경할 수 있습니까?

분류에서Dev

생산과 단계 사이에 Electron의 환경 변수를 어떻게 변경할 수 있습니까?

분류에서Dev

공유 메모리는 서버 환경에서 어떻게 위험 할 수 있으며 어떻게 보호 할 수 있습니까?

분류에서Dev

공유 메모리는 서버 환경에서 어떻게 위험 할 수 있으며 어떻게 보호 할 수 있습니까?

분류에서Dev

공유 메모리는 서버 환경에서 어떻게 위험 할 수 있으며 어떻게 보호 할 수 있습니까?

분류에서Dev

공유 메모리는 서버 환경에서 어떻게 위험 할 수 있으며 어떻게 보호 할 수 있습니까?

분류에서Dev

Kubernetes에서 sslcert 및 sslkey를 환경 변수로 어떻게 전달할 수 있습니까?

분류에서Dev

Windows 7에서 Python 환경 변수를 어떻게 설정할 수 있습니까?

분류에서Dev

Linux에서 그래픽 로그인을위한 환경 변수를 어떻게 설정할 수 있습니까?

분류에서Dev

zsh에서 모든 환경 변수를 어떻게 나열 할 수 있습니까?

분류에서Dev

OS X Mavericks에서 GUI 앱의 환경 변수를 어떻게 설정할 수 있습니까?

분류에서Dev

awk의 정규식 내에서 환경 변수를 어떻게 사용할 수 있습니까?

분류에서Dev

awk의 정규식 내에서 환경 변수를 어떻게 사용할 수 있습니까?

분류에서Dev

PS1 환경 변수에서 느낌표를 어떻게 이스케이프 할 수 있습니까?

분류에서Dev

PS1 환경 변수에서 느낌표를 어떻게 이스케이프 할 수 있습니까?

분류에서Dev

노드 스폰에서 현재의 모든 환경 변수를 어떻게 전달할 수 있습니까?

분류에서Dev

Dockerfile에서 .bash_profile 환경 변수를 어떻게 설정할 수 있습니까?

Related 관련 기사

  1. 1

    내 shebang에서 환경 변수를 어떻게 사용할 수 있습니까?

  2. 2

    유성에서 환경 변수를 어떻게 확인할 수 있습니까?

  3. 3

    .rdf 보고서를 .jrxml 파일로 어떻게 변환 할 수 있습니까?

  4. 4

    nixos buildFHSUserEnv에 환경 변수를 어떻게 전달할 수 있습니까?

  5. 5

    sudo su를 할 때도 모든 사용자에 대한 환경 변수를 어떻게 설정합니까?

  6. 6

    루프 내부에서 매개 변수를 어떻게 보존 할 수 있습니까?

  7. 7

    sshd의 환경에서 새 SSH 세션으로 환경 변수를 어떻게 전달할 수 있습니까?

  8. 8

    Angular 지시문에서 변수를 어떻게 변경할 수 있습니까?

  9. 9

    Bluemix 문서를 어떻게 변경할 수 있습니까?

  10. 10

    VBA를 사용하여 Access 보고서에서 차트 제목을 어떻게 변경할 수 있습니까?

  11. 11

    함수 내에서 사용자를 어떻게 변경할 수 있습니까?

  12. 12

    보낸 사람 주소에 따라 $ record를 mutt에서 어떻게 변경할 수 있습니까?

  13. 13

    보낸 사람 주소에 따라 $ record를 mutt에서 어떻게 변경할 수 있습니까?

  14. 14

    생산과 단계 사이에 Electron의 환경 변수를 어떻게 변경할 수 있습니까?

  15. 15

    공유 메모리는 서버 환경에서 어떻게 위험 할 수 있으며 어떻게 보호 할 수 있습니까?

  16. 16

    공유 메모리는 서버 환경에서 어떻게 위험 할 수 있으며 어떻게 보호 할 수 있습니까?

  17. 17

    공유 메모리는 서버 환경에서 어떻게 위험 할 수 있으며 어떻게 보호 할 수 있습니까?

  18. 18

    공유 메모리는 서버 환경에서 어떻게 위험 할 수 있으며 어떻게 보호 할 수 있습니까?

  19. 19

    Kubernetes에서 sslcert 및 sslkey를 환경 변수로 어떻게 전달할 수 있습니까?

  20. 20

    Windows 7에서 Python 환경 변수를 어떻게 설정할 수 있습니까?

  21. 21

    Linux에서 그래픽 로그인을위한 환경 변수를 어떻게 설정할 수 있습니까?

  22. 22

    zsh에서 모든 환경 변수를 어떻게 나열 할 수 있습니까?

  23. 23

    OS X Mavericks에서 GUI 앱의 환경 변수를 어떻게 설정할 수 있습니까?

  24. 24

    awk의 정규식 내에서 환경 변수를 어떻게 사용할 수 있습니까?

  25. 25

    awk의 정규식 내에서 환경 변수를 어떻게 사용할 수 있습니까?

  26. 26

    PS1 환경 변수에서 느낌표를 어떻게 이스케이프 할 수 있습니까?

  27. 27

    PS1 환경 변수에서 느낌표를 어떻게 이스케이프 할 수 있습니까?

  28. 28

    노드 스폰에서 현재의 모든 환경 변수를 어떻게 전달할 수 있습니까?

  29. 29

    Dockerfile에서 .bash_profile 환경 변수를 어떻게 설정할 수 있습니까?

뜨겁다태그

보관