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
| Grup | Per a què serveix |
|---|---|
sudo (Debian, Ubuntu) / wheel (RHEL, Fedora) | Els seus membres poden executar comandes com a administrador amb sudo |
adm | Pot llegir molts registres del sistema a /var/log |
users | Grup genèric per a usuaris normals (GID 100) |
docker | Pot 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 GID | Crea el grup amb un GID concret |
-r | Crea un grup de sistema (GID per sota de 1000) |
-U usuari1,usuari2 | Hi afegeix membres en el moment de crear-lo |
-f | No dona error si el grup ja existeix |
-o | Permet 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_nom | Canvia el nom del grup |
-g GID | Canvia el GID |
-U usuaris | Substitueix la llista de membres |
-a -U usuaris | Afegeix 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.