Come rimuovo un utente da un gruppo?


343

Quale comando dovrei usare per rimuovere un utente da un gruppo in Debian?

Quando si aggiunge un utente a un gruppo, si può fare con:

usermod -a -G group user

Tuttavia, non sono riuscito a trovare un comando simile (accettando un gruppo e un utente come argomenti) per rimuovere l'utente dal gruppo. Il più vicino che potrei ottenere è:

usermod -G all,existing,groups,except,for,group user

Esiste un comando come usermod OPTION group usercon OPTION un'opzione per fare in modo che usermod(o un programma simile) rimuova l'utente dal gruppo?


1
Per gli utenti Fedora che finiscono qui, man usodod rivela nei commenti dell'opzione -G che un elenco di tutti i gruppi attuali desidera essere mantenuto È il modo di eliminare un gruppo. Nessuna opzione -R con Fedora; devi usare l'approccio di Lekensteyn che sta cercando di evitare.
— Stephen,

Risposte:


404

Puoi usare gpasswd:

# gpasswd -d user group

quindi la nuova configurazione di gruppo verrà assegnata al prossimo accesso, almeno su Debian. Se l'utente ha effettuato l'accesso, gli effetti del comando non vengono visualizzati immediatamente.


9
Perfetto grazie! gpasswd -a user groupper aggiungere l'utente al gruppo sembra anche più bello, specialmente se un errore di battitura ha fatto e l' -aopzione viene eliminata.
— Lekensteyn,

1
Non funziona per me. Ricevo due messaggi: a) Rimozione dell'utente dal gruppo. b) gpasswd: l'utente non è un membro del gruppo. Successivamente l'esecuzione di "gruppo di membri" non mostra alcuna modifica.
— geoidesic,

1
@geoidesic è necessario disconnettersi e accedere nuovamente per vedere l'effetto
— Wasif Hossain,

1
C'è un modo per rendere effettive le modifiche senza dover ripetere il login?
— Andy Fusniak,

2
@geoidesic Ho riscontrato questi errori su Centos 7. Ho trovato questo, se stavi cercando di rimuovere l'utente dal loro gruppo predefinito. Prova a cambiare il gruppo predefinito con usermod -g user userquindi prova a rimuoverli.
— PanPipes

175

Su Debian, il adduserpacchetto contiene un deluserprogramma che rimuove un utente da un gruppo se si passano entrambi come argomenti:

deluser user group

Se la tua distribuzione non ha adduser, puoi modificare /etc/groupe /etc/gshadowmanualmente.

vigr
vigr -s

10
Non conoscevo programmi come vigre vipw. Molto utile nel caso in cui le manpage siano troppo lontane :)
— Lekensteyn,

3
In alternativa, dopo aver modificato, /etc/groupeseguire grpconvper aggiornare /etc/gshadowanziché modificarlo.
— Cyrille,

sudo deluser jenkins admin/ usr / sbin / deluser: non puoi rimuovere l'utente dal suo gruppo principale.
— Jonathan,

@JonathanLeaders Ogni utente deve far parte di almeno un gruppo. Utilizzare usermodo vipwper modificare il gruppo principale dell'utente. Questa domanda riguardava gruppi supplementari.
— Gilles,

Bello. C'è anche il adduser $user $groupcomando più semplice invece di usermod -x -y -z -....
— giovedì

65
usermod -G "" username

rimuove tutti i gruppi secondari / supplementari dal nome utente , lasciandoli come membri del solo gruppo primario. questo ha funzionato in Solaris 5.9


5
Testato in CentOS 6.4; lavori.
— aggregate1166877,

1
Funziona anche con Ubuntu 12.04.
— aggregate1166877,

E questo sembra essere il modo migliore per forzare i gruppi secondari a qualsiasi elenco di gruppi, esclusi tutti i gruppi non elencati.
— saggio

Testato e funzionante in CentOS 7. Grazie!
— Tricky

14

Questo è l'approccio della "vecchia scuola" ...

La maggior parte dei sistemi * nix mantiene le informazioni di gruppo in un file di testo semplice /etc/group, dove

  • ogni riga contiene i campi

    • nome del gruppo
    • parola d'ordine
    • GID e
    • lista degli utenti

    delimitato dal :personaggio.

  • il campo elenco_utente è un elenco di nomi utente, separati da virgole.

Supponiamo ora di voler rimuovere un utente chiamato thisuser da un gruppo denominato thatgroup. Inizia eseguendo il backup /etc/group, quindi utilizza l'editor delle tue preferenze con i privilegi su per modificare il file /etc/group e rimuovere il thisuserriferimento dalla thatgroupvoce di riga, ad es.

la linea originale è qualcosa del genere:

thatgroup:x:1274:someuser,thisuser,anotheruser

dopo la modifica dovrebbe essere lasciato in questo modo:

thatgroup:x:1274:someuser,anotheruser

Come per tutte le altre risposte, ciò non influirà sulle sessioni correnti dell'utente, se presenti (ovvero, se l'utente è attualmente connesso). La modifica avrà effetto al successivo accesso dell'utente.


1
vigrè già stato menzionato per la modifica /etc/groupmanuale. Le mie pagine di manuale dicono che i nomi degli utenti sono separati da virgole, non da due punti. Il riavvio non è necessario, è sufficiente accedere nuovamente (o utilizzare newgrp).
— Lekensteyn,

Per aiutare gli utenti non Debian a colpire queste coste alla ricerca di indizi ... questo potrebbe essere sufficiente per Debian secondo l'ambito della domanda di OP, ma se lo si stesse usando per un sistema operativo * BSD, sarebbe necessario modificare il file di testo normale qui come detto, quindi emettere un pwd_mkdb -p /etc/master.passwd per mettere effettivamente in uso tale elenco.
— danno

3

È possibile utilizzare il comando seguente sulle distribuzioni SUSE (e, a quanto pare, nessun altro ).

usermod -R group  nome_utente

dove si grouptrova il gruppo da cui si desidera rimuovere l'utente e user_namel'utente che si desidera rimuovere dal gruppo. Per esempio,

usermod -R root imnottheroot

1
Quale pacchetto fornisce il tuo binario usermod? Sto chiedendo di scoprire la versione, poiché la mia da shadow-utils-4.1.4.3 non fornisce l'opzione -R.
— miroslav,

3
Il mio pacchetto shadow 4.1.5.1-5 (Arch Linux) ha -Run'opzione, ma questo significa qualcos'altro. Non è Linux, immagino.
— Lekensteyn,

3
Non sono sicuro che funzionerà. La manpage sta dicendo che -Rè: "-R, --root CHROOT_DIR Applica le modifiche nella directory CHROOT_DIR e usa i file di configurazione dalla directory CHROOT_DIR."
— MikeKusold

2
L'unica cosa che ho trovato è stata questa manpage di Oracle, ma non è ancora la stessa cosa, quindi questa risposta potrebbe essere rimossa.
— kyrias,

sudo usermod -R admin jenkinsusermod: percorso chroot 'admin' non valido
— Jonathan

1

Tener conto di:

  • nome utente: abc2
  • nome del gruppo: newgroup11

  • Attività: rimozione dell'utente abc2dal grupponewgroup11

[root@home1 ~]# groups abc2
abc2 : abc2
[root@home1 ~]# usermod -G newgroup11 abc2
[root@home1 ~]# groups abc2
abc2 : abc2 newgroup11
[root@home1 ~]# usermod -G newgroup11 abc2
[root@home1 ~]# usermod -G abc2 abc2
[root@home1 ~]# groups abc2
abc2 : abc2

** Gentilmente correggimi se sbaglio. **


1
Questo "funziona", ma solo perché hai un singolo gruppo secondario. usermod -G newgroup11 abc2ti metterà nel gruppo secondario newgroup11. Poiché il gruppo primario è abc2, finirai in entrambi i gruppi. usermod -g abc2 abc2risulta newgroup11essere rimosso dai gruppi secondari perché non è più menzionato. Quindi, per tre o più gruppi diversi, questo metodo non funzionerà. Vedi le altre risposte che coinvolgono gpasswdper un comando migliore.
— Lekensteyn,

1

È possibile rimuovere l'utente dal gruppo eseguendo il comando usermod senza l'opzione -a. Ad esempio, eseguendo "usermod -G nomeutente gruppo1" si aggiungerà l'utente al gruppo1 e lo si rimuoverà da tutti gli altri gruppi in cui si trova. Ricorda, puoi mantenere l'utente in vari gruppi elencando i nomi dei gruppi, separati da una virgola.


1
Questa informazione è stata già presentata più volte.
— Scott,

0

Per continuare a usare usermod in una distro (come Fedora) che non ha un'opzione di rimozione, dove user = bob e group = deletethisgroup, il comando sarebbe:

usermod -G `cat /etc/group |  grep bob | grep -v deletethisgroup | cut -d ':' -f 1 | tr '\n' ',' | sed 's/,$//'` bob

Le pipe (1) ottengono tutte le voci di gruppo a cui appartiene l'utente, (2) eliminano quella che deve essere rimossa, (3) restituisce la prima colonna (nome del gruppo), sostituisce la nuova riga con la virgola e rimuove la virgola finale.

Ovviamente, potresti inserire tutto ciò in uno script bash che richiede all'utente e al gruppo di essere cancellati come parametri. awk poteva essere usato per accorciare la fine ma volevo attenermi a grep, cut, tr e sed.


Secondo questa pagina man , gpasswd -d bob deletethisgroupè disponibile anche. Qualche motivo per cui non lo stai usando?
— Lekensteyn,

Non tutti vogliono impostare password di gruppo. Stavo solo offrendo una soluzione usando il comando a cui faceva riferimento la domanda su una particolare distribuzione. in Fedora / RHEL / Centos con gpasswd -d l'utente rimosso può comunque unirsi al gruppo se ha accesso alla password. In realtà aumenta l'accesso al gruppo invece di non consentirlo.
— Stephen,

Ho capito che l'utilità prende il nome gpasswdperché è strettamente correlata /etc/passwd, ma gestisce invece i gruppi. A differenza del semplice passwdcomando che controlla solo le password, gpasswdpuò anche essere usato per gestire l'appartenenza a un gruppo. Non è richiesta una password di gruppo se si è root o un amministratore di gruppo.
— Lekensteyn,

Hai letto il manuale di gpasswd? Per Fedora / RHEL / CentOS, se leggi il manuale, si afferma che il comando "è usato per amministrare / etc / group e / etc / gshadow". In realtà non ha alcun effetto su / etc / passwd. Il manuale afferma inoltre "Le password di gruppo sono un problema di sicurezza intrinseco poiché è consentito a più di una persona conoscere la password". In realtà non gestisce l'appartenenza a un gruppo, apre il gruppo a QUALSIASI utente con la password. Non è richiesta una password di gruppo se si è già MEMBRI del gruppo.
— Stephen,

Strettamente correlato era nel senso di nomi e scopi simili, non implicavo che il file / etc / passwd sia effettivamente gestito da gpasswd. Nota che "man page" nel mio primo commento punta alla pagina di manuale di gpasswd per Fedora 13. Usando gpasswd $grouppuoi impostare la password del gruppo che causa il problema di sicurezza che hai citato. Tuttavia, non è inoltre possibile disporre di una password e utilizzare gpasswd -d $user $groupper eliminare un utente come descritto nel primo commento e nella risposta accettata. Si noti che questo comando non richiede una password di gruppo né la modifica o la richiede.
— Lekensteyn,

0

Supponi che username = student e groupname = research , quindi per rimuovere l' studentutente dal researchgruppo devi fare quanto segue:

gpasswd -d student research

Perché ripetere qualcosa, che era qui 6 anni prima? È contrassegnato come risposta accettata!
— Betlista,

-1
pw groupmod "groupname|gid" -d "username|uid"

Una soluzione se si utilizza CSH, per qualsiasi motivo.


-1

Per rimuovere un utente da un gruppo gpasswd è la migliore utility per questo IMO.

Esempio di comando:

sudo gpasswd -d group user

* Informazioni sulla guida *

Usage: gpasswd [option] GROUP

Options:
  -a, --add USER                add USER to GROUP
  -d, --delete USER             remove USER from GROUP
  -h, --help                    display this help message and exit
  -Q, --root CHROOT_DIR         directory to chroot into
  -r, --delete-password         remove the GROUP's password
  -R, --restrict                restrict access to GROUP to its members
  -M, --members USER,...        set the list of members of GROUP
  -A, --administrators ADMIN,...
                                set the list of administrators for GROUP
Except for the -A and -M options, the options cannot be combined.

1
Gli argomenti di gruppo e utente vengono scambiati. Inoltre, questo è esattamente ciò che la risposta accettata ha proposto, questo post non è davvero utile?
— Lekensteyn,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.