我是如何产生这种怀疑的:
我尝试在我的公司网络上配置代理。有相当多的主机只能在没有代理的情况下到达,所以我尝试$NO_PROXY
在/etc/environment
.然而,实际设置的环境变量似乎被削减到一定的长度(用检查echo $NO_PROXY
)。
经过一番摆弄后,我设法设置了正确的变量
NO_PROXY_1 DEFAULT=some,hosts
NO_PROXY_2 DEFAULT=some,more.hosts
NO_PROXY_3 DEFAULT=...
NO_PROXY_4 DEFAULT=...
...
NO_PROXY DEFAULT=${NO_PROXY_1},${NO_PROXY_2},...
不过,我想知道为什么这是必要的。
更多调查:
我在任何地方都找不到它的记录,但我认为行长度限制是 1024,因为echo $no_proxy | wc
给了我 1014 个字符,再加上NO_PROXY="
10 个字符(不再确定确切的数字,但看起来加起来会是 1024)
我使用的是 Manjaro Linux(基本上是 Arch)和 pam 1.3.1
答案1
也许,目前的来源linux-pam显示了使用 1024 个字符缓冲区的代码,例如modules/pam_env/pam_env.c
#define BUF_SIZE 1024
...
_parse_config_file(pam_handle_t *pamh, int ctrl, const char *file)
{
int retval;
char buffer[BUF_SIZE];
...
while (( retval = _assemble_line(conf, buffer, BUF_SIZE)) > 0) {
以及其他使用它的代码getline
没有这样的限制。您可能遇到过使用 1024 个字符缓冲区之一的代码路径。
还有其他 PAM 实现 (OpenPAM),它们也可能有所不同。