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 |
|---|---|
-r | Només lectura: mostra els problemes però no toca res (respon «no» a totes les preguntes) |
-q | Només mostra els errors greus, no els avisos |
-s | Ordena les entrades de /etc/passwd i /etc/shadow per UID |
-R dir | Treballa 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ís | Com es corregeix |
|---|---|
directory '...' does not exist | Crear el directori o canviar-lo amb usermod -d |
no group N | Crear el grup (groupadd -g N) o canviar el grup primari amb usermod -g |
program '...' does not exist | Instal·lar el shell o canviar-lo amb usermod -s |
no matching password file entry in /etc/shadow | Deixar que pwck l’afegeixi o executar pwconv |
Codis de sortida
Útils si el fas servir en un script de monitoratge:
| Codi | Significat |
|---|---|
| 0 | Tot correcte |
| 1 | Error de sintaxi de la comanda |
| 2 | Hi ha una o més entrades incorrectes |
| 3 | No es poden obrir els fitxers |
| 4 | No es poden bloquejar els fitxers |
| 5 | No es poden actualitzar els fitxers |
| 6 | No 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
grpck: el mateix per a/etc/groupi/etc/gshadow.usermod: corregir el directori, el grup o el shell d’un usuari.passwdichage: les eines que treballen amb/etc/shadow.- Usuaris i grups a Linux: el format de
/etc/passwd.
Esta web usa cookies.