Ich habe ein Debian 6 (64-Bit) VPS, bei dem ich die Gebietsschema-Umgebungsvariablen LANG und LC_ * scheinbar nicht erhalten kann. (Alles unten als Wurzel).
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
Dies sollte die über meinen SSH-Client bereitgestellten Gebietsschemaeinstellungen überschreiben, die Standardeinstellungen für das Gebietsschema werden jedoch nicht wirksam.
.profile, .bashrc, / etc / environment und / etc / profile enthalten keine Gebietsschemaeinstellungen. Ich habe auch keine anderen Standorte gefunden, von denen diese Umgebungsvariablen stammen.
me:~# grep "LANG" ~/.profile ~/.bashrc /etc/environment /etc/profile
me:~# grep "LC_" ~/.profile ~/.bashrc /etc/environment /etc/profile
me:~#
Meine SSH-Client-Einstellungen werden auch nicht wirksam, während sie auf anderen VPS ausgeführt werden. Vor Ort habe ich in meiner / etc / ssh / ssh_config:
SendEnv LANG LC_*
Und auf dem VPS enthält / etc / ssh / sshd_config:
# Allow client to pass locale environment variables
AcceptEnv LANG LC_*
Ich bin nicht sicher, ob die Variablen wirksam werden sollen, aber das /etc/pam.d/login meines VPS enthält:
# 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
Und /etc/pam.d/sshd enthält:
# 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
(my /etc/security/pam_env.conf
enthält nur kommentierte Optionen)
Es scheint also, dass etwas nicht zulässt, dass entweder meine / etc / default / locale oder die Gebietsschemaeinstellungen meines SSH-Clients wirksam werden. Daher wird standardmäßig POSIX verwendet (oder etwas erzwingt POSIX explizit). Irgendwelche Hinweise, was stören könnte? Oder Ideen, wie man herausfindet, was es ist?
Ich kann export LC_CTYPE=en_US.UTF-8
usw. in meiner .bashrc tun, und das funktioniert. Ich versuche jedoch, dieses Verhalten zu verstehen, das sich von dem bei anderen Debian-Installationen (6 oder 7) unterscheidet, mit denen ich arbeite.
Bearbeiten: einige weitere Details:
- Ich habe das System neu gestartet, keine Auswirkung;
- / etc / ssh / sshd_config hat
UsePAM yes
; - Ich habe auch versucht,
en_US.utf8
als alternativen Namen in zu verwenden/etc/default/locale
.
locale -a
oben). Der Vergleich des gesamten Systems scheint eine Menge Arbeit zu sein. Ich hatte mir einen gezielteren Ansatz erhofft.
/etc/pam.d/login
, diese Datei jedoch nur für lokale Anmeldungen herangezogen wird (z. B. Anmeldung an der Konsole oder an anderen von verwalteten seriellen Ports getty
). Für die SSH-Anmeldung sollten Sie sich /etc/pam.d/sshd
stattdessen ansehen . Meins enthält die erforderliche pam_env.so
Zeile. Ist deins? Schließlich können Sie die Ausgabe von env
nach der Anmeldung durch SSH überprüfen , um sicherzustellen, dass die Einstellungen der Umgebungsvariablen für LANG
und LC_CTYPE
tatsächlich vorhanden sind.
su -
zu root, werden die Gebietsschemaeinstellungen beibehalten?