로케일 환경 변수 설정이 적용되지 않습니다. [닫기]

로케일 환경 변수 설정이 적용되지 않습니다. [닫기]

Debian 6(64비트) VPS가 있는데 로케일 환경 변수 LANG 및 LC_*를 설정할 수 없는 것 같습니다. (아래의 모든 것은 루트입니다).

vps:~# locale -a
C
POSIX
en_US.utf8
nl_NL.utf8

vps:~# locale
LANG=
LANGUAGE=
LC_CTYPE="POSIX"
LC_NUMERIC="POSIX"
LC_TIME="POSIX"
LC_COLLATE="POSIX"
LC_MONETARY="POSIX"
LC_MESSAGES="POSIX"
LC_PAPER="POSIX"
LC_NAME="POSIX"
LC_ADDRESS="POSIX"
LC_TELEPHONE="POSIX"
LC_MEASUREMENT="POSIX"
LC_IDENTIFICATION="POSIX"
LC_ALL=

vps:~# cat /etc/default/locale
#  File generated by update-locale
LANG=en_US.UTF-8
LC_CTYPE=en_US.UTF-8
LC_COLLATE=POSIX

이는 내 SSH 클라이언트를 통해 제공된 로케일을 재정의해야 하지만 기본 로케일이 작동하지 않습니다.

.profile, .bashrc, /etc/environment 및 /etc/profile에는 로케일 설정이 포함되어 있지 않습니다. 이러한 환경 변수가 나오는 다른 위치를 찾지 못했습니다.

me:~# grep "LANG" ~/.profile ~/.bashrc /etc/environment /etc/profile
me:~# grep "LC_" ~/.profile ~/.bashrc /etc/environment /etc/profile
me:~#

내 SSH 클라이언트 설정도 작동하지 않았지만 다른 VPS에서는 작동했습니다. 로컬로 내 /etc/ssh/ssh_config에는 다음이 있습니다.

SendEnv LANG LC_*

VPS에서 /etc/ssh/sshd_config에는 다음이 포함됩니다.

# Allow client to pass locale environment variables
AcceptEnv LANG LC_*

변수가 유효해야 하는지 잘 모르겠지만 내 VPS의 /etc/pam.d/login에 다음이 포함되어 있습니다.

# locale variables are also kept into /etc/default/locale in etch
# reading this file *in addition to /etc/environment* does not hurt
session       required   pam_env.so readenv=1 envfile=/etc/default/locale

/etc/pam.d/sshd에는 다음이 포함됩니다.

# Read environment variables from /etc/environment and
# /etc/security/pam_env.conf.
auth       required     pam_env.so # [1]
# In Debian 4.0 (etch), locale-related environment variables were moved to
# /etc/default/locale, so read that as well.
auth       required     pam_env.so envfile=/etc/default/locale

(내 것에는 /etc/security/pam_env.conf댓글 옵션만 포함되어 있습니다)

따라서 내 /etc/default/locale 또는 SSH 클라이언트의 로케일이 적용되는 것을 허용하지 않는 것 같아서 기본값이 POSIX로 설정됩니다(또는 명시적으로 POSIX를 강제하는 항목). 방해할 수 있는 단서가 있나요? 아니면 그것이 무엇인지 알아내는 방법은 무엇입니까?

내 .bashrc에서 다른 작업을 수행 할 수 export LC_CTYPE=en_US.UTF-8있는데 이것이 작동합니다. 하지만 저는 이 동작을 이해하려고 노력하고 있는데, 이는 제가 사용하고 있는 다른 Debian(6 또는 7) 설치의 동작과 다릅니다.

편집: 자세한 내용:

  • 시스템을 다시 시작했지만 아무런 효과가 없었습니다.
  • /etc/ssh/sshd_config에는 UsePAM yes;
  • 나는 또한 en_US.utf8대체 이름으로 사용해 보았습니다 /etc/default/locale.

답변1

sshd 구성 파일의 [PermitUserEnvironment]도 yes로 설정되어 있는지 확인해야 합니다. 기본값이 무엇인지 모르겠습니다.

관련 정보