Какой размер буфера я должен создать для максимально длинного имени пользователя или группы в Linux? - PullRequest
2 голосов
/ 15 мая 2011

Каково максимальное количество символов, которое может быть именем пользователя или группы в Linux?

Мне нужно выделить буфер и хотел бы знать, сколько места мне нужно выделить, чтобы гарантировать, что он достаточно велик для любой группы или имени пользователя, с которым может столкнуться мое приложение.

1 Ответ

4 голосов
/ 16 мая 2011

(добавив мой комментарий в ответ теперь, когда вопрос был вновь открыт) * ​​1001 *

POSIX указывает, что LOGIN_NAME_MAX должно быть> = _POSIX_LOGIN_NAME_MAX._POSIX_LOGIN_NAME_MAX, в свою очередь, определяется как 9. В Linux кажется, что LOGIN_NAME_MAX - 256.

Для групп я не думаю, что есть что-то подобное.Какой-то вид верхней границы можно угадать с помощью функций getgrnam_r () и getgrgid_r (), которые принимают предоставленный пользователем буфер для записей char * в struct group.Максимально необходимый размер для этого буфера может быть получен через sysconf (_SC_GETGR_R_SIZE_MAX) или макрос NSS_BUFLEN_GROUP.В Linux NSS_BUFLEN_GROUP кажется равным 1024.

...