Usuaris i grups a Linux

Les comandes groupadd, groupmod i groupdel a Linux: crear, modificar i esborrar grups



Els grups són la manera més pràctica de repartir permisos a Linux: en lloc de donar accés usuari per usuari, dones accés a un grup i hi poses les persones que el necessiten. Per crear, modificar i esborrar grups tens tres comandes que van juntes: groupadd, groupmod i groupdel. Totes tres formen part del paquet shadow (passwd a Debian i Ubuntu, shadow-utils a RHEL i Fedora) i necessiten sudo.

Si encara no tens clar què és un grup primari o un GID, comença per l’article Usuaris i grups a Linux.

Alguns grups habituals

GrupPer a què serveix
sudo (Debian, Ubuntu) / wheel (RHEL, Fedora)Els seus membres poden executar comandes com a administrador amb sudo
admPot llegir molts registres del sistema a /var/log
usersGrup genèric per a usuaris normals (GID 100)
dockerPot fer servir Docker sense sudo (en la pràctica, és com ser root)

groupadd: crear un grup

sudo groupadd [opcions] grup
OpcióQuè fa
-g GIDCrea el grup amb un GID concret
-rCrea un grup de sistema (GID per sota de 1000)
-U usuari1,usuari2Hi afegeix membres en el moment de crear-lo
-fNo dona error si el grup ja existeix
-oPermet un GID repetit (amb -g); poc recomanable

Exemples:

# Grup per al departament de finances
sudo groupadd finances

# Amb un GID fix (útil si ha de coincidir entre diversos servidors)
sudo groupadd -g 2001 vendes

# Grup de sistema per a un servei
sudo groupadd -r copies

# Crear-lo i posar-hi membres de cop
sudo groupadd -U joan,maria projecte

Comprova el resultat amb getent:

$ getent group projecte
projecte:x:2003:joan,maria

Si el grup ja existeix, groupadd s’atura amb un error; amb -f acaba bé igualment, cosa útil en scripts:

$ sudo groupadd vendes
groupadd: group 'vendes' already exists
$ sudo groupadd -f vendes      # no diu res i retorna 0

groupmod: modificar un grup

sudo groupmod [opcions] grup
OpcióQuè fa
-n nou_nomCanvia el nom del grup
-g GIDCanvia el GID
-U usuarisSubstitueix la llista de membres
-a -U usuarisAfegeix membres sense treure els que ja hi són
# Canviar el nom
sudo groupmod -n comptabilitat finances

# Canviar el GID
sudo groupmod -g 2005 comptabilitat

# Afegir un membre sense esborrar els altres
sudo groupmod -a -U pere projecte

Compte amb -U sense -a: deixa al grup només els usuaris que indiques. I recorda que, si canvies el GID, els fitxers que tenien el grup antic no s’actualitzen sols. Ho tens tot explicat a la fitxa de groupmod.

groupdel: esborrar un grup

sudo groupdel grup
sudo groupdel vendes

groupdel esborra el grup encara que tingui membres secundaris (simplement desapareix de la seva llista de grups). L’únic cas en què es nega és quan el grup és el grup primari d’algun usuari:

$ sudo groupdel joan
groupdel: cannot remove the primary group of user 'joan'

L’opció -f força l’esborrat igualment, però no esborra cap fitxer: només elimina el grup i deixa l’usuari amb un GID primari que ja no correspon a cap grup. Més detalls a la fitxa de groupdel.

Exemple: un grup per a un projecte

sudo groupadd projecte
sudo usermod -aG projecte joan
sudo usermod -aG projecte maria
sudo mkdir /srv/projecte
sudo chgrp projecte /srv/projecte
sudo chmod 2775 /srv/projecte

El 2 de 2775 és el bit setgid: els fitxers que es creïn a dins tindran el grup projecte automàticament. Els usuaris han de tancar la sessió i tornar a entrar perquè el nou grup tingui efecte.

Comandes relacionades

  • groupmod i groupdel: fitxes detallades.
  • usermod: afegir un usuari a grups (-aG).
  • grpck: comprovar que /etc/group i /etc/gshadow són coherents.
  • chgrp: canviar el grup d’un fitxer.
  • newgrp: canviar de grup dins la sessió.
  • gpasswd: afegir (-a) o treure (-d) membres d’un grup.