Создание группы пользователей в linux с помощью python
Я хочу создать группу пользователей с помощью python в системе CentOS. Когда я говорю "использование python", я имею в виду, что не хочу делать что-то вроде ОС.системы и дать команду Unix для создания новой группы. Я хотел бы знать, есть ли какой-либо модуль python, который занимается этим.
поиск в сети не показал многого о том, что я хочу, за исключением групп пользователей python.. поэтому я должен был спросить об этом.
Я узнал о модуле grp, выполнив поиск здесь на SO, но не смог найти что - нибудь о создании группы.
редактировать: Я не знаю, должен ли я начать новый вопрос для этого, но я также хотел бы знать, как добавить (существующих) пользователей в недавно созданную группу.
любая помощь ценится. Спасибо.
4 ответов
Я не знаю модуля python для этого, но формат /etc/group и /etc/gshadow довольно стандартный, поэтому, если вы хотите, вы можете просто открыть файлы, проанализировать их текущее содержимое и при необходимости добавить новую группу.
прежде чем вы это сделаете, подумайте:
- что произойдет, если вы попытаетесь добавить группу, которая уже существует в системе
- что происходит, когда несколько экземпляров вашей программы пытаются добавить группу одновременно время
- что происходит с вашим кодом, когда несовместимые изменения вносятся в формат группы пару выпусков вниз по строке
- NIS, LDAP, Kerberos, ...
Если вы не хотите иметь дело с такими проблемами, просто используйте модуль подпроцесса и запустите groupadd. Это будет менее вероятно, чтобы сломать ваши клиенты машины.
еще одна вещь, которую вы могли бы сделать, что было бы менее хрупким, чем писать свой собственный, было бы обернуть код в программой groupadd.c (в теневом пакете) в Python и сделайте это таким образом. Я не вижу, чтобы это покупало вас много по сравнению с просто исполнением, хотя, и это добавило бы больше сложности и хрупкости вашей сборке.
Я думаю, что вы должны используйте программы командной строки из вашей программы, много внимания ушло на то, чтобы убедиться, что они не нарушают файл групп, если что-то пойдет не так.
однако формат файла довольно прямо вперед, чтобы написать что-то самостоятельно, если вы решите пойти этим путем
нет вызовов библиотеки для создания группы. Это потому, что на самом деле нет такой вещи, как создание группы. GID-это просто номер, присвоенный процессу или файлу. Все эти числа уже существуют - вам ничего не нужно делать, чтобы начать использовать GID. С соответствующими привилегиями вы можете вызвать chown (2), чтобы установить GID файла на любое число, или setgid (2), чтобы установить GID текущего процесса (есть немного больше, чем это, с эффективными идентификаторами, дополнительными идентификаторами, п.)
присвоение имени GID выполняется записью в /etc/group в базовых системах Unix/Linux/POSIX, но это действительно просто соглашение, соблюдаемое инструментами userland Unix/Linux / POSIX. Существуют и другие сетевые каталоги, как упоминал Джек Ллойд.
группа man-страниц (5) описывает формат файла /etc/group, но не рекомендуется писать в него напрямую. Ваш дистрибутив будет иметь политики о том, как распределяются неназванные GIDs, такие как резервирование определенных пространств для различных целей (фиксированные системные группы, динамические системные группы, группы пользователей и т. д.). Диапазон этих числовых пространств различается в разных распределениях. Эти политики обычно кодируются в средствах командной строки, которые системный администратор использует для назначения неназванных gid.
Это означает, что лучший способ добавить группу локально-использовать инструменты командной строки.
Если вы смотрите на Python, попробуйте эту программу. Его довольно простой в использовании, и код можно легко настроить http://aleph-null.tv/downloads/mpb-adduser-1.tgz