Почему не там стандартная библиотека для изменения/etc/{passwd, тень}?

Существует два предела. На поддержка в Linux, другой максимальное количество в используемой схеме таблицы разделов: Это зависит при использовании MBR прежней версии или более нового GPT.

MBR поддерживает четыре основных раздела. Один из них мог быть расширять разделом, который может содержать произвольное число логических разделов, ограниченных только Вашим дисковым пространством.

GPT поддерживает до 128 "основных" разделов.

В былые времена Linux поддерживал только до 63 разделов на IDE и 15 на дисках SCSI из-за ограниченных номеров устройств. Сегодня ядро может выделить номера устройств динамично (udev, ключевое слово), таким образом, это ограничивает, не должен быть длиннее допустимый.

2
08.01.2013, 07:02
3 ответа

Поскольку это не ответственность glibc. glibc делегирует к другим сервисам, установленным в системе для автора; если бы что-либо, это были бы те, которые обеспечили бы способность изменить userdb.

3
27.01.2020, 21:53
  • 1
    1: getpwnam(3) и друзья живут в glibc. Если setpwnam(3) и такой существовавший, почему они не жили бы там, также? Предоставленный, они могут просто быть интерфейсами к другим механизмам, но с точки зрения программиста, они получают эти средства от glibc. Это не вопрос ответственности. Это - вопрос реверса, отображающего OP, хочет быть совсем не тривиальным, поэтому если бы кто-то действительно создавал библиотеку, которая сделала это, то ее API был бы колоссальной путаницей. –  Warren Young 08.01.2013, 20:39

Вы запускаете с предположения здесь, которое является этим /etc/{passwd,shadow,group} всегда единственная точка истины (SPOT) для получения информации о пользователе о полях Unix. Это не было верно с середины 1980-х, когда Sun представил NIS.

Обратные API случая действительно существуют: getpwnam(3) и друзья. Если бы ПЯТНО Вашего сайта для пользовательских данных является сервером LDAP, легко видеть, как Вы сократили бы его богатые объемы производства для показа только тех вещей, которые существуют в /etc/{passwd,shadow}.

Но, Вы хотите API, который делает реверс. Как Вы реализовали бы setpwnam(3) в мире, где Вы не знаете, ли хранилище данных бэкенда /etc/*, или NIS или NIS +, или LDAP или ActiveDirectory, или...? Можно отфильтровать криля от океана, но Вы не можете получить кубические метры океана от корзины криля.

3
27.01.2020, 21:53
  • 1
    Вы реализовали бы его через NSS, точно так же, как getpwnam. Некоторые бэкенды поддерживали бы его (например, files), некоторые не были бы (например, ldap). Я подозреваю, что реальный ответ - то, что упрощенный интерфейс не на самом деле полезен для очень никого. –  derobert 08.01.2013, 21:03
  • 2
    @derobert: кажется, что Вы говорите о функции, которая только была бы полезна для изменения /etc/*, который нисколько не является, для чего nsswitch. Его точка должна сделать "операцию" фильтрации криля: вытяните требуемую информацию от настраиваемой серии мест и представьте ее в стандартной форме. Если бы была инверсия nsswitch, то ее API должен был бы иметь всю функциональность, в которой Вы находите libldap, nis_*(), и т.д. Я запрограммировал использование libldap... это совсем не просто. Теперь создайте API, который должен смочь взять информацию, подходящую для popupating не только LDAP, но также и NIS +, AD... <дрожь> –  Warren Young 08.01.2013, 21:24
  • 3
    Если бы был достаточно большой спрос на желание функциональности изменения, например, корневой каталог, оболочка, uid, ценуроз, то это было бы довольно разумно, чтобы сделать для файлов, Ниса, ldap, и т.д. (gecos было бы почти невозможно, и никто не использует pw_passwd для реального больше, и PAM уже обрабатывает это), Но конечно, программа, которая хочет сделать, это, на самом деле хочет сделать все виды материала с тем пользователем LDAP. Таким образом, нет действительно спроса на упрощенный API (и порог для получения, это в libc довольно высоко). Я думаю вот почему, что это не существует, не что его действительно твердое для создания. –  derobert 08.01.2013, 21:28
  • 4
    @derobert: Скажите Вам, что, пойдите, читает эту книгу, затем возвратитесь и скажите мне, как легкий это должно было бы создать такой API. (Да, я уже считал его, и я могу сказать Вам, что это на самом деле довольно устарело. Реальная ситуация в 2013 еще более сложна.) –  Warren Young 08.01.2013, 21:31
  • 5
    Так, я на самом деле выполняю пользователей LDAP на наших полях Linux сюда — и да, Вы определенная банка и действительно имею системы LDAP, где "изменение поле оболочки" могло бы быть твердым, даже бессмысленным. Возможно, его даже распространенный на очень больших установках (который я признаюсь, что я не знаком с), Но и что? getpwnam не идеальная абстракция, также. Например, смотрите PAM. Это абстрагирует "пароль изменения". Это работает над каждой установкой LDAP? Нет. Но его все еще полезный на установках это действительно продолжает работать. Но я предполагаю, хотим ли мы продолжить это, мы должны использовать чат. –  derobert 08.01.2013, 22:02

Простой ответ, если Вы думаете об этом, не может быть никакой стандартной библиотекой C для взаимодействия с ними, просто потому что они не стандартные функции C. Как это работало бы над окнами?

1
27.01.2020, 21:53
  • 1
    Этот ответ является настолько прямым к точке, как можно добраться. Даже если это не имело место, добавляя пользователя к passwd, или тень берет совершенно различные логические пути, когда Вы начинаете смешивать с/etc/nsswitch.conf. Особенно, когда тот же uid определяется в нескольких nsswitch базах данных. –  Andrew B 08.01.2013, 08:47
  • 2
    Мало POSIX является стандартными функциями C, все же glibc реализует значительную часть его. –  Ignacio Vazquez-Abrams 08.01.2013, 11:52
  • 3
    @IgnacioVazquez-Abrams положительная сторона. passwd/shadow система, которую рассматривают стандартизированной? Posix или иначе? –  Karthik T 08.01.2013, 12:12

Теги

Похожие вопросы