Существует два предела. На поддержка в Linux, другой максимальное количество в используемой схеме таблицы разделов: Это зависит при использовании MBR прежней версии или более нового GPT.
MBR поддерживает четыре основных раздела. Один из них мог быть расширять разделом, который может содержать произвольное число логических разделов, ограниченных только Вашим дисковым пространством.
GPT поддерживает до 128 "основных" разделов.
В былые времена Linux поддерживал только до 63 разделов на IDE и 15 на дисках SCSI из-за ограниченных номеров устройств. Сегодня ядро может выделить номера устройств динамично (udev, ключевое слово), таким образом, это ограничивает, не должен быть длиннее допустимый.
Поскольку это не ответственность glibc. glibc делегирует к другим сервисам, установленным в системе для автора; если бы что-либо, это были бы те, которые обеспечили бы способность изменить userdb.
Вы запускаете с предположения здесь, которое является этим /etc/{passwd,shadow,group}
всегда единственная точка истины (SPOT) для получения информации о пользователе о полях Unix. Это не было верно с середины 1980-х, когда Sun представил NIS.
Обратные API случая действительно существуют: getpwnam(3)
и друзья. Если бы ПЯТНО Вашего сайта для пользовательских данных является сервером LDAP, легко видеть, как Вы сократили бы его богатые объемы производства для показа только тех вещей, которые существуют в /etc/{passwd,shadow}
.
Но, Вы хотите API, который делает реверс. Как Вы реализовали бы setpwnam(3)
в мире, где Вы не знаете, ли хранилище данных бэкенда /etc/*
, или NIS или NIS +, или LDAP или ActiveDirectory, или...? Можно отфильтровать криля от океана, но Вы не можете получить кубические метры океана от корзины криля.
getpwnam
. Некоторые бэкенды поддерживали бы его (например, files
), некоторые не были бы (например, ldap
). Я подозреваю, что реальный ответ - то, что упрощенный интерфейс не на самом деле полезен для очень никого.
– derobert
08.01.2013, 21:03
/etc/*
, который нисколько не является, для чего nsswitch. Его точка должна сделать "операцию" фильтрации криля: вытяните требуемую информацию от настраиваемой серии мест и представьте ее в стандартной форме. Если бы была инверсия nsswitch, то ее API должен был бы иметь всю функциональность, в которой Вы находите libldap
, nis_*()
, и т.д. Я запрограммировал использование libldap
... это совсем не просто. Теперь создайте API, который должен смочь взять информацию, подходящую для popupating не только LDAP, но также и NIS +, AD... <дрожь>
– Warren Young
08.01.2013, 21:24
getpwnam
не идеальная абстракция, также. Например, смотрите PAM. Это абстрагирует "пароль изменения". Это работает над каждой установкой LDAP? Нет. Но его все еще полезный на установках это действительно продолжает работать. Но я предполагаю, хотим ли мы продолжить это, мы должны использовать чат.
– derobert
08.01.2013, 22:02
Простой ответ, если Вы думаете об этом, не может быть никакой стандартной библиотекой C для взаимодействия с ними, просто потому что они не стандартные функции C. Как это работало бы над окнами?
passwd
/shadow
система, которую рассматривают стандартизированной? Posix или иначе?
– Karthik T
08.01.2013, 12:12
getpwnam(3)
и друзья живут в glibc. Еслиsetpwnam(3)
и такой существовавший, почему они не жили бы там, также? Предоставленный, они могут просто быть интерфейсами к другим механизмам, но с точки зрения программиста, они получают эти средства от glibc. Это не вопрос ответственности. Это - вопрос реверса, отображающего OP, хочет быть совсем не тривиальным, поэтому если бы кто-то действительно создавал библиотеку, которая сделала это, то ее API был бы колоссальной путаницей. – Warren Young 08.01.2013, 20:39