Einstellungen für Gebietsschema-Umgebungsvariablen werden nicht wirksam [geschlossen]

7

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.confenthä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-8usw. 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.utf8als alternativen Namen in zu verwenden /etc/default/locale.
Arjan
quelle
Auf das Offensichtliche hinweisen, aber die relevanten Gebietsschemas wurden generiert, oder? Sie sagen, dass dies bei anderen VPS nicht der Fall ist? Also wahrscheinlich nicht das Problem. Übrigens, wenn andere VPS richtig funktionieren, warum nicht Dateien mit ihnen vergleichen? Ich habe festgestellt, dass eine praktikable Debugging-Strategie in der Vergangenheit.
Faheem Mitha
Ja, die Gebietsschemas wurden generiert (siehe Ausgabe locale -aoben). Der Vergleich des gesamten Systems scheint eine Menge Arbeit zu sein. Ich hatte mir einen gezielteren Ansatz erhofft.
Arjan
Nicht das gesamte System, nur ausgewählte Dateien. Grundsätzlich alles, was mit Gebietsschemas zu tun hat.
Faheem Mitha
1
Ich stelle fest, dass Sie dies überprüft haben /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/sshdstattdessen ansehen . Meins enthält die erforderliche pam_env.soZeile. Ist deins? Schließlich können Sie die Ausgabe von envnach der Anmeldung durch SSH überprüfen , um sicherzustellen, dass die Einstellungen der Umgebungsvariablen für LANGund LC_CTYPEtatsächlich vorhanden sind.
Celada
1
Lassen Sie uns verstehen, ob dies mit ssh zusammenhängt: Wenn Sie über ssh eine Verbindung mit einem anderen Benutzer herstellen, dann Gebietsschemavariablen exportieren und dann su -zu root, werden die Gebietsschemaeinstellungen beibehalten?
Eppesuig

Antworten:

0

Sie sollten sicherstellen, dass [PermitUserEnvironment] in Ihrer sshd-Konfigurationsdatei ebenfalls auf yes gesetzt ist. Ich weiß nicht, was die Standardeinstellung ist.

ET
quelle