为什么通过 ssh 登录时未获取 /etc/default/locale ?

Nor*_*ize 8 ssh locale

我不是新手,但我已经和这个看似简单的问题斗争了一段时间了。我知道如何使用/etc/environment或其他技巧来解决它,但我希望变量/etc/default/locale能够工作......它们根本没有来源

使用 Ubuntu 14.04.4。目前的内容/etc/default/locale有:

LANG=en_US.UTF-8
LANGUAGE=en_US:en
LC_ALL=en_US.UTF-8
Run Code Online (Sandbox Code Playgroud)

我知道我可以将它们放入/etc/environment/etc/profile等中。触发dpkg-reconfigure locales, locale-gen,locale-update效果为零。我知道他们所有人。

那些应该来源的东西/etc/default/locale却没有来源。我不明白是什么。我也重启了。

这是我 ssh 进入机器的时候。

Nor*_*ize 4

...几分钟后我想通了...该死的 PAM!

通过查看所有源自 /etc/default/locale 的 /etc 文件来追踪它,并且出现了 PAM。它的来源是/etc/pam.d/sshd.

然后我想起来,当我想通过 chroot'ing 来监禁 sftp 用户时,我最近才/etc/ssh/sshd_config通过注释该行来禁用 PAM。#UsePAM yes

解决方案:在 sshd_config 中重新启用 PAM,或者在 /etc/environment、/etc/profile 或 ~/.profile 中源 /etc/default/locale

如果管理员愿意,可以删除问题和此答案。我会离开他们,以防其他人陷入同样的​​困境。

然而!

难道这实际上不应该是一个值得向 Ubuntu 开发人员报告的错误吗?是否不应该在所有登录上配置区域设置,无论是否使用 PAM?