Cài đặt biến môi trường miền địa phương không có hiệu lực [đã đóng]


7

Tôi có VPS Debian 6 (64 bit) nơi tôi dường như không thể nhận được các biến môi trường cục bộ LANG và LC_ * được đặt. (Mọi thứ bên dưới là root).

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

Điều này sẽ ghi đè cài đặt ngôn ngữ được cung cấp qua ứng dụng khách SSH của tôi, nhưng cài đặt ngôn ngữ mặc định không có hiệu lực.

.profile, .bashrc, / etc / môi trường và / etc / profile không chứa bất kỳ cài đặt ngôn ngữ nào. Tôi cũng không tìm thấy bất kỳ vị trí nào khác từ đó các biến môi trường này có nguồn gốc.

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

Cài đặt máy khách SSH của tôi cũng không có hiệu lực, trong khi chúng thực hiện trên các VPS khác. Tại địa phương, tôi có trong / etc / ssh / ssh_config:

SendEnv LANG LC_*

Và trên VPS, / etc / ssh / sshd_config chứa:

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

Tôi không chắc liệu các biến này có hiệu lực hay không, nhưng /etc/pam.d/login của VPS của tôi có chứa:

# 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

Và /etc/pam.d/sshd chứa:

# 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

(của tôi /etc/security/pam_env.confchỉ chứa các tùy chọn nhận xét)

Vì vậy, có vẻ như một cái gì đó không cho phép cài đặt ngôn ngữ / máy khách SSH của tôi / etc / default / locale của tôi có hiệu lực, do đó, nó mặc định là POSIX (hoặc một cái gì đó đang buộc POSIX rõ ràng). Bất kỳ manh mối gì có thể can thiệp? Hoặc ý tưởng làm thế nào để tìm ra nó là gì?

Tôi có thể làm, export LC_CTYPE=en_US.UTF-8v.v. trong .bashrc của tôi và điều đó không hoạt động. Tuy nhiên, tôi đang cố gắng hiểu hành vi này, khác với hành vi trên các bản cài đặt Debian (6 hoặc 7) khác mà tôi đang làm việc.

Chỉnh sửa: một số chi tiết khác:

  • Tôi đã khởi động lại hệ thống, không có hiệu lực;
  • / etc / ssh / sshd_config có UsePAM yes;
  • Tôi cũng đã thử sử dụng en_US.utf8làm tên thay thế trong /etc/default/locale.

Chỉ ra điều hiển nhiên, nhưng các địa phương có liên quan đã được tạo ra, phải không? Bạn nói điều này không xảy ra với các VPS khác? Vì vậy, có lẽ không phải là vấn đề. Ngẫu nhiên, nếu các VPS khác hoạt động chính xác, tại sao không so sánh các tệp với chúng? Tôi đã thấy rằng một chiến lược gỡ lỗi khả thi trong quá khứ.
Faheem Mitha

Có, các địa phương đã được tạo, xem đầu ra locale -aở trên cùng. So sánh toàn bộ hệ thống có vẻ như rất nhiều công việc, tôi đã hy vọng cho một cách tiếp cận mục tiêu hơn.
arjan

Không phải toàn bộ hệ thống, chỉ cần các tập tin được chọn. Bất cứ điều gì liên quan đến địa phương, về cơ bản.
Faheem Mitha

1
Tôi lưu ý rằng bạn đã kiểm tra /etc/pam.d/loginnhưng tệp đó chỉ được tư vấn cho thông tin đăng nhập cục bộ (ví dụ: đăng nhập trên bảng điều khiển hoặc các cổng nối tiếp khác được quản lý bởi getty). Để đăng nhập SSH, bạn sẽ muốn xem xét /etc/pam.d/sshdthay thế. Của tôi không chứa pam_env.sodòng cần thiết . Có phải của bạn không? Cuối cùng, bạn có thể kiểm tra đầu ra envsau khi đăng nhập bằng SSH chỉ để đảm bảo các cài đặt biến môi trường cho LANGLC_CTYPEthực sự có mặt.
Celada

1
Chúng ta hãy hiểu nếu điều này có liên quan đến ssh: nếu bạn kết nối qua ssh với một người dùng khác, sau đó xuất các biến cục bộ, sau đó su -đến root, nó có giữ các cài đặt ngôn ngữ không?
eppesuig

Câu trả lời:


0

Bạn nên xác minh rằng [PermitUserEn Môi trường] trong tệp cấu hình sshd của bạn cũng được đặt thành có. Tôi không biết mặc định là gì.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.