PAM 配置文件中的行长度是否有限制?

PAM 配置文件中的行长度是否有限制?

我是如何产生这种怀疑的:

我尝试在我的公司网络上配置代理。有相当多的主机只能在没有代理的情况下到达,所以我尝试$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),它们也可能有所不同。

相关内容