Создайте группу пользователей в Linux с помощью Python

Также существует Модель Вложенного Набора Деревьев, которая имеет некоторые преимущества перед моделью ParentID. См. http://www.evanpetersen.com/item/nested-sets.html и http://falsinsoft.blogspot.nl/2013/01/tree-in-sql-database-nested-set-model.html

6
задан Shrikant Sharat 15 October 2009 в 05:21
поделиться

4 ответа

Я не знаю модуля python для этого, но формат / etc / group и / etc / gshadow довольно стандартный, поэтому, если вы хотите, вы можете просто открыть файлы, проанализируйте их текущее содержимое, а затем при необходимости добавьте новую группу.

Прежде чем вы это сделаете, подумайте:

  • Что произойдет, если вы попытаетесь добавить группу, которая уже существует в системе.
  • Что произойдет, если несколько экземпляров вашей программы попытайтесь добавить группу одновременно
  • Что происходит с вашим кодом, когда в формат группы вносятся несовместимые изменения, которые пара выпускает в дальнейшем
  • NIS, LDAP, Kerberos, ...

Если вы не желаете иметь дело с такого рода проблемами, просто используйте модуль subprocess и запустите groupadd. У вас будет меньше шансов сломать машины ваших клиентов.

Еще одна вещь, которую вы могли бы сделать менее хрупкой, чем написание собственного, - обернуть код в groupadd.c (в теневом пакете) в Python и сделать это таким же образом. Однако я не думаю, что это будет вам выгодно по сравнению с простым выполнением, и это добавит сложности и хрупкости вашей сборке.

11
ответ дан 8 December 2019 в 14:44
поделиться

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

Однако формат файла довольно прост, чтобы написать что-нибудь самостоятельно, если вы выберете такой путь

5
ответ дан 8 December 2019 в 14:44
поделиться

Нет вызовов библиотеки для создания группы. Это потому, что на самом деле нет такой вещи, как создание группы. GID - это просто номер, присвоенный процессу или файлу. Все эти числа уже существуют - вам ничего не нужно делать, чтобы начать использовать GID. С соответствующими привилегиями вы можете вызвать chown (2), чтобы установить GID файла на любое число, или setgid (2), чтобы установить GID текущего процесса (есть кое-что еще, с эффективными идентификаторами, дополнительные идентификаторы и т. д.).

Присвоение имени GID осуществляется записью в / etc / group в базовых системах Unix / Linux / POSIX, но на самом деле это просто соглашение, которого придерживается пользовательское пространство Unix / Linux / POSIX инструменты. Другие сетевые каталоги также существуют, как упоминал Джек Ллойд.

Группа страниц руководства (5) описывает формат файла / etc / group, но не рекомендуется писать ему напрямую. В вашем дистрибутиве будут правила распределения безымянных GID, такие как резервирование определенных пространств для различных целей (фиксированные системные группы, динамические системные группы, группы пользователей и т. Д.). Диапазон этих числовых пространств отличается в разных распределениях. Эти политики обычно кодируются в инструментах командной строки, которые сисадмин использует для назначения безымянных GID.

Это означает, что лучший способ добавить группу локально - использовать инструменты командной строки.

1
ответ дан 8 December 2019 в 14:44
поделиться

Если вы смотрите на Python, попробуйте эту программу. Его довольно просто использовать, а код можно легко настроить http://aleph-null.tv/downloads/mpb-adduser-1.tgz

-1
ответ дан 8 December 2019 в 14:44
поделиться
Другие вопросы по тегам:

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