Domanda

Voglio creare un gruppo di utenti utilizzando Python su un sistema CentOS. Quando dico 'utilizzando python' voglio dire che non voglio fare qualcosa di simile os.system e dare il comando UNIX per creare un nuovo gruppo. Vorrei sapere se c'è qualche modulo python che si occupa di questo.

Ricerca in rete non ha rivelato molto di quello che voglio, ad eccezione di pitone gruppi di utenti .. così ho dovuto chiedere questo.

ho imparato a conoscere il modulo grp cercando qui su SO, ma non ho trovato nulla di creazione di un gruppo.

Modifica :. Non so se devo iniziare una nuova domanda per questo, ma vorrei anche sapere come aggiungere utenti (già esistenti) al gruppo appena creato

Qualsiasi aiuto apprezzato. Grazie.

È stato utile?

Soluzione

Non so di un modulo Python per farlo, ma il file / etc / group e / etc formato / gshadow è abbastanza standard, quindi se si voleva si poteva solo aprire i file, analizzare il loro contenuto corrente e quindi aggiungere il nuovo gruppo, se necessario.

Prima di andare a fare questo, prendere in considerazione:

  • Che cosa succede se si tenta di aggiungere un gruppo già esistente sul sistema
  • Cosa succede quando più istanze del programma tenta di aggiungere un gruppo allo stesso tempo
  • Cosa succede al tuo codice quando un cambiamento incompatibile è fatto per il formato di gruppo un paio di uscite su tutta la linea
  • NIS, LDAP, Kerberos, ...

Se non siete disposti a trattare con questi tipi di problemi, basta utilizzare il modulo sottoprocesso ed eseguire groupadd. Sarà modo meno probabilità di rompere le macchine dei clienti.

Un'altra cosa che potreste fare che sarebbe meno fragile di scrivere il proprio sarebbe quello di avvolgere il codice groupadd.c (nel pacchetto shadow) in Python e farlo in quel modo. Non vedo questo voi acquisto molto contro solo exec'ing, però, e sarebbe aggiungere più complessità e la fragilità di build.

Altri suggerimenti

Credo che si dovrebbe utilizzare i programmi a riga di comando dal programma, un sacco di cura è andato a fare in modo che essi non si rompono il file gruppi, se qualcosa va storto.

Tuttavia, il formato del file è abbastanza semplice scrivere qualcosa da soli se si sceglie di andare in quel modo

Non ci sono chiamate di libreria per la creazione di un gruppo. Questo perché non c'è davvero una cosa come la creazione di un gruppo. Una GID è semplicemente un numero assegnato ad un processo o di un file. Tutti questi numeri esistono già - non c'è niente che devi fare per iniziare a utilizzare un GID. Con i privilegi appropriati, è possibile chiamare chown (2) per impostare il GID di un file a qualsiasi numero, o setgid (2) per impostare il GID per il processo corrente (c'è un po 'di più ad esso che quello, con gli ID efficaci, ID supplementari, ecc).

Dare un nome ad una GID è fatto da una voce in / etc / group su sistemi Unix / Linux / POSIX, ma questo è davvero solo una convenzione aderito a dagli strumenti Unix / Linux / POSIX userland. Esistono anche altre directory basati sulla rete, come detto da Jack Lloyd.

Il gruppo pagina man (5) descrive il formato del file / etc / group, ma non è consigliabile che si scrive a esso direttamente. La vostra distribuzione avrà politiche su come GID senza nome vengono assegnati, come ad esempio riservare alcuni spazi per scopi diversi (gruppi di sistema fisso, gruppi di sistema dinamici, gruppi di utenti, ecc). La gamma di questi spazi numero diverso su diverse distribuzioni. Queste politiche sono solitamente codificati negli strumenti da riga di comando che un amministratore di sistema utilizza per assegnare GIDs senza nome.

Questo significa che il modo migliore per aggiungere un gruppo a livello locale è quello di utilizzare gli strumenti della riga di comando.

Se siete alla ricerca di Python, quindi provare questo programma. La sua abbastanza semplice da usare, e il codice può essere facilmente personalizzato http: // aleph -null.tv/downloads/mpb-adduser-1.tgz

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top