Usuaris i grups a Linux

La comanda grpck a Linux: comprovar /etc/group i /etc/gshadow



La comanda grpck (group check) comprova la coherència de /etc/group i /etc/gshadow, els fitxers on Linux guarda els grups. És la germana de pwck, que fa el mateix amb els usuaris. Fes-la servir després d’editar els fitxers de grups a mà, de copiar-los d’un altre servidor o si les comandes de grups donen errors estranys.

Sintaxi

sudo grpck [opcions] [group [gshadow]]

Per defecte revisa /etc/group i /etc/gshadow. També li pots passar altres fitxers com a arguments.

Opcions

OpcióQuè fa
-rNomés lectura: mostra els problemes però respon «no» a totes les preguntes i no canvia res
-sOrdena les entrades de /etc/group i /etc/gshadow per GID
-SSilencia els avisos més discutibles, com les diferències de membres entre group i gshadow
-R dirTreballa sobre un sistema muntat a dir (fa un chroot)

-r i -s no es poden combinar.

Què comprova

Per a cada grup, que:

  • la línia tingui el nombre correcte de camps (quatre);
  • el nom del grup sigui únic i vàlid;
  • el GID sigui vàlid;
  • els membres i els administradors siguin usuaris que existeixen;
  • hi hagi l’entrada corresponent a /etc/gshadow (i a l’inrevés).

Exemples

Revisar sense tocar res:

sudo grpck -r

En un sistema sa no mostra res i acaba amb codi 0. Si hi ha problemes, veuràs una cosa així (sortida real d’uns fitxers de prova amb errors):

duplicate group entry
delete line 'projecte:x:2001:joan,ningu'? No
group projecte: no user ningu
delete member 'ningu'? No
'ningu' is a member of the 'projecte' group in /etc/group but not in /etc/gshadow
duplicate group entry
delete line 'projecte:x:2002:'? No
invalid group file entry
delete line 'vendes:x:2003'? No
grpck: no changes

Aquí hi ha quatre problemes: el grup projecte és duplicat (dues línies amb GID diferents), té un membre (ningu) que no existeix, aquest membre no apareix a gshadow, i a la línia de vendes li falta el quart camp (la llista de membres, encara que sigui buida, necessita els dos punts: vendes:x:2003:).

Comprovar el codi de sortida en un script:

if ! sudo grpck -r >/dev/null 2>&1; then
    echo "Hi ha problemes a /etc/group o /etc/gshadow"
fi

Revisar unes còpies abans de posar-les en producció:

sudo grpck -r ./group.nou ./gshadow.nou

Ordenar els fitxers per GID (els modifica: fes-ne una còpia abans):

sudo cp -a /etc/group /etc/group.bak
sudo cp -a /etc/gshadow /etc/gshadow.bak
sudo grpck -s

Corregir els problemes

Sense -r, grpck et pregunta per a cada error si vols esborrar la línia o el membre problemàtic. Respon amb calma: si esborres una línia de grup, aquest grup desapareix. Els altres avisos es corregeixen amb les eines de sempre:

ProblemaCom es corregeix
Membre que no existeixsudo gpasswd -d usuari grup
Grup que falta a gshadowsudo grpconv, que regenera gshadow a partir de group
Nom o GID incorrectegroupmod -n o -g
Grup sobrergroupdel

Si has d’editar els fitxers a mà, fes-ho amb sudo vigr (i sudo vigr -s per a gshadow), que els bloqueja mentre treballes.

Codis de sortida

CodiSignificat
0Tot correcte
1Error de sintaxi de la comanda
2Hi ha una o més entrades incorrectes
3No es poden obrir els fitxers
4No es poden bloquejar els fitxers
5No es poden actualitzar els fitxers

Aclariment

En algunes guies, i en una versió anterior d’aquest article, apareixen opcions com grpck -a (corregir automàticament) o -q (sortida compacta), i es diu que -r serveix per indicar un fitxer. No és correcte: grpck no té -a ni -q, -r vol dir read-only i els fitxers es passen directament com a arguments.

Comandes relacionades