Чи існує обмеження довжини рядка у файлах конфігурації PAM?


2

Як я потрапив до цієї підозри:

Я намагаюся налаштувати проксі в мережі моїх компаній. Є досить багато хостів, до яких можна дістатися лише без проксі, тому я спробував налаштувати $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) з пам 1.3.1

Відповіді:


0

Можливо, поточне джерело для 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), які можуть знову відрізнятися.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.