У нас есть настройка LDAP для предоставления информации о sudo. Вся система работает, но для возврата любой команды sudo требуется много времени (~ 10 секунд).
Например, если я бегу
strace -f -r -o strace.sudo-l.wri sudo -l
Мы видим это в выводе strace - добавлены пустые строки для отображения кода цикла:
16737 0.000129 open("/etc/netgroup", O_RDONLY) = -1 ENOENT (No such file or directory)
16737 0.000131 socket(PF_FILE, SOCK_STREAM, 0) = 6
16737 0.000097 connect(6, {sa_family=AF_FILE, path="/var/run/nslcd/socket"}, 110) = 0
16737 0.000246 select(1024, NULL, [6], NULL, {9, 999999}) = 1 (out [6], left {9, 999995})
16737 0.000192 sendto(6, "\1\0\0\0\341.\0\0\17\0\0\0TestGroup1_users", 27, MSG_NOSIGNAL, NULL, 0) = 27
16737 0.000134 select(1024, [6], NULL, NULL, {59, 999999}) = 1 (in [6], left {59, 987006})
16737 0.013308 read(6, "\1\0\0\0\341.\0\0\3\0\0\0", 1024) = 12
16737 0.000153 close(6) = 0
16737 0.000114 open("/etc/netgroup", O_RDONLY) = -1 ENOENT (No such file or directory)
16737 0.000112 socket(PF_FILE, SOCK_STREAM, 0) = 6
16737 0.000091 connect(6, {sa_family=AF_FILE, path="/var/run/nslcd/socket"}, 110) = 0
16737 0.000214 select(1024, NULL, [6], NULL, {9, 1000000}) = 1 (out [6], left {9, 999996})
16737 0.000215 sendto(6, "\1\0\0\0\341.\0\0\21\0\0\0TestGroup2_users", 29, MSG_NOSIGNAL, NULL, 0) = 29
16737 0.000129 select(1024, [6], NULL, NULL, {59, 1000000}) = 1 (in [6], left {59, 987427})
16737 0.012863 read(6, "\1\0\0\0\341.\0\0\0\0\0\0\310\1\0\0\1\0\0\0-\10\0\0\0username1"..., 1024) = 248
16737 0.000156 close(6) = 0
16737 0.000112 open("/etc/netgroup", O_RDONLY) = -1 ENOENT (No such file or directory)
16737 0.000110 socket(PF_FILE, SOCK_STREAM, 0) = 6
16737 0.000092 connect(6, {sa_family=AF_FILE, path="/var/run/nslcd/socket"}, 110) = 0
16737 0.000215 select(1024, NULL, [6], NULL, {9, 999999}) = 1 (out [6], left {9, 999995})
16737 0.000208 sendto(6, "\1\0\0\0\341.\0\0\17\0\0\0TestGroup3_users", 27, MSG_NOSIGNAL, NULL, 0) = 27
16737 0.000152 select(1024, [6], NULL, NULL, {59, 999999}) = 1 (in [6], left {59, 987404})
16737 0.012881 read(6, "\1\0\0\0\341.\0\0\3\0\0\0", 1024) = 12
16737 0.000121 close(6) = 0
Обратите внимание на относительно долгое время для вызовов read (6,) для возврата. Имеется более 800 вызовов чтения и 800 * 0,0128 секунды == 10,37 секунды.
Я понимаю, что вызов занимает некоторое время по сети, но вывод strace показывает, что он снова и снова выполняет одну и ту же работу:
Есть ли флаг в sudo-ldap.conf или pam_ldap.conf (или где-либо еще), который я неправильно настроил, вызывающий это, или это ошибка производительности в коде sudo? (Или что-то другое?)