La comanda pwck a Linux: comprovar usuaris | Iespai

La comanda pwck a Linux: comprovar /etc/passwd i /etc/shadow



La comanda pwck (password check) comprova la coherència de /etc/passwd i /etc/shadow: que cada línia tingui el format correcte, que no hi hagi usuaris duplicats, que els grups primaris i els directoris personals existeixin, que cada usuari tingui la seva entrada a /etc/shadow… És útil després d’editar aquests fitxers a mà, de migrar usuaris d’un servidor a un altre o quan alguna cosa d’inici de sessió falla sense motiu aparent.

Sintaxi

sudo pwck [opcions] [passwd [shadow]]

Per defecte revisa /etc/passwd i /etc/shadow, però li pots passar altres fitxers (per exemple, còpies que vols revisar abans de posar-les en producció).

Opcions

OpcióQuè fa
-rNomés lectura: mostra els problemes però no toca res (respon «no» a totes les preguntes)
-qNomés mostra els errors greus, no els avisos
-sOrdena les entrades de /etc/passwd i /etc/shadow per UID
-R dirTreballa sobre un sistema muntat a dir (fa un chroot)

-r i -s no es poden combinar.

Què comprova

A /etc/passwd, que cada línia tingui:

  • el nombre correcte de camps (set);
  • un nom d’usuari únic i vàlid;
  • un UID i un GID vàlids, i un grup primari que existeixi;
  • un directori personal que existeixi;
  • un shell que existeixi.

I amb /etc/shadow, que cada usuari de passwd hi tingui la seva entrada (i a l’inrevés), que les entrades no estiguin repetides i que la data de l’últim canvi de contrasenya no sigui en el futur.

Exemples

Revisar sense canviar res (és el que hauries de fer sempre primer):

$ sudo pwck -r
user 'lp': directory '/var/spool/lpd' does not exist
user 'news': directory '/var/spool/news' does not exist
user 'uucp': directory '/var/spool/uucp' does not exist
user 'list': directory '/var/list' does not exist
user 'irc': directory '/run/ircd' does not exist
pwck: no changes

Avisos com aquests són normals en un sistema Debian: són usuaris de sistema que no fan servir el seu directori. Els que t’han de preocupar són d’aquest estil (sortida real d’uns fitxers de prova amb errors):

duplicate password entry
delete line 'joan:x:1003:100::/home/joan:/bin/bash'? No
user 'maria': directory '/home/maria' does not exist
no matching password file entry in /etc/shadow
add user 'maria' in /etc/shadow? No
user 'pere': no group 3000
user 'pere': program '/bin/zsh' does not exist
pwck: no changes

Només els errors, sense avisos:

sudo pwck -rq

Revisar unes còpies dels fitxers en lloc dels del sistema:

sudo pwck -r ./passwd.nou ./shadow.nou

Ordenar els fitxers per UID (els modifica, així que fes-ne una còpia abans):

sudo cp -a /etc/passwd /etc/passwd.bak
sudo cp -a /etc/shadow /etc/shadow.bak
sudo pwck -s

Corregir els problemes

Sense -r, pwck és interactiu: per a cada error greu (línia mal formada o usuari duplicat) et pregunta si vols esborrar la línia, i si falta l’entrada de shadow et proposa afegir-la. La resta són avisos i no els arregla ell: els has de corregir tu amb les eines habituals.

AvísCom es corregeix
directory '...' does not existCrear el directori o canviar-lo amb usermod -d
no group NCrear el grup (groupadd -g N) o canviar el grup primari amb usermod -g
program '...' does not existInstal·lar el shell o canviar-lo amb usermod -s
no matching password file entry in /etc/shadowDeixar que pwck l’afegeixi o executar pwconv

Codis de sortida

Útils si el fas servir en un script de monitoratge:

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
6No es poden ordenar els fitxers

Compte: els avisos de directoris inexistents també compten com a entrades incorrectes, de manera que en un Debian acabat d’instal·lar pwck -r ja retorna 2. Si només et vols assabentar dels errors greus, fes servir pwck -rq, que en aquest cas retorna 0.

Aclariment

En algunes guies, i en una versió anterior d’aquest article, es parla d’opcions com pwck -a (correcció automàtica) o es diu que -r serveix per indicar un fitxer i -s per veure més detalls. No és així: -a no existeix, -r vol dir read-only i -s vol dir sort. Els fitxers es passen com a arguments, sense cap opció al davant.

Comandes relacionades

Esta web usa cookies.