我应该为 Linux 上最长的用户名或组名创建多大的缓冲区?

发布于 2024-11-07 12:28:56 字数 94 浏览 4 评论 0原文

Linux 上用户名或组名的最大字符数是多少?

我需要分配一个缓冲区,并且想知道需要分配多少空间以保证它对于我的应用程序可能遇到的任何组或用户名来说都足够大。

What is the maximum number of characters that a user name or group name may be on Linux?

I need to allocate a buffer and would like to know how much space I need to allocate to guarantee it is large enough for whatever group or user name my application might encounter.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

感情旳空白 2024-11-14 12:28:56

(现在问题已重新开放,将我的评论放入答案中)

POSIX 指定 LOGIN_NAME_MAX 必须 >= _POSIX_LOGIN_NAME_MAX。 _POSIX_LOGIN_NAME_MAX 又被定义为 9。在 Linux 上,LOGIN_NAME_MAX 似乎是 256。

对于组,我认为没有类似的东西。可以通过 getgrnam_r() 和 getgrgid_r() 函数来猜测某种上限,这些函数采用用户为 struct group 中的 char* 条目提供的缓冲区。该缓冲区所需的最大大小可以通过 sysconf(_SC_GETGR_R_SIZE_MAX) 或宏 NSS_BUFLEN_GROUP 检索。在 Linux 上,NSS_BUFLEN_GROUP 似乎是 1024。

(Putting my comment into an answer now that the question has been reopened)

POSIX specifies that LOGIN_NAME_MAX must be >= _POSIX_LOGIN_NAME_MAX. _POSIX_LOGIN_NAME_MAX, in turn, is defined to 9. On Linux it seems LOGIN_NAME_MAX is 256.

For groups, I don't think there is anything similar. Some kind of upper bound can be guesstimated via the getgrnam_r() and getgrgid_r() functions, which take a user supplied buffer for the char* entries in struct group. The maximum needed size for this buffer can be retrieved via sysconf(_SC_GETGR_R_SIZE_MAX) or the macro NSS_BUFLEN_GROUP. On Linux, NSS_BUFLEN_GROUP seems to be 1024.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文