Existe um limite para o tamanho da linha nos arquivos de configuração do PAM?

2

Como cheguei a essa suspeita:

Eu tento configurar o proxy na rede da minha empresa. Existem alguns hosts que só podem ser acessados sem proxy, então tentei configurar $NO_PROXY in /etc/environment . No entanto, a variável de ambiente que é realmente definida parece ser cortada para um determinado comprimento (inspecionado com echo $NO_PROXY ).

Depois de alguns ajustes, consegui definir a variável correta com

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},...

Ainda assim, eu me pergunto por que isso é necessário.

Mais algumas investigações:

Não consegui encontrá-lo documentado em nenhum lugar, mas suponho que o limite de comprimento da linha seja 1024, porque echo $no_proxy | wc me deu 1014 caracteres, mais NO_PROXY=" é 10 caracteres (não tenho mais certeza sobre os números exatos, mas parece como se fosse adicionar até 1024)

Eu estou no Manjaro Linux (que é basicamente Arch) com o pam 1.3.1

    
por Qw3ry 14.08.2018 / 15:32

1 resposta

0

Talvez, a fonte atual para linux-pam mostre o código que usa um buffer de 1024 caracteres, por exemplo: em 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) {

e outro código que usa getline sem limite. Você provavelmente correu para um caminho de código que usa um dos buffers de 1024 caracteres.

Também existem outras implementações do PAM (OpenPAM) que podem diferir novamente.

    
por 14.08.2018 / 16:10