J'ai de nombreux périphériques sous Ubuntu autour de moi.
Pour autant que je sache, /etc/group
, /etc/passwd
, /etc/shadow
sont créés lors de l'installation, ils n'appartiennent donc à aucun package:
$ dpkg -S /etc/passwd
dpkg-query: no path found matching pattern /etc/passwd
$ dpkg -S /etc/shadow
dpkg-query: no path found matching pattern /etc/shadow
$ dpkg -S /etc/group
dpkg-query: no path found matching pattern /etc/group
Ma question est dans le titre - Comment vérifier que mes utilisateurs et groupes sont corrects? Que faire si j'ai mal orthographié ou modifié quelque chose à la main dans de tels fichiers?
J'ai trouvé un paquet très utile pour une telle opération. Il s'appelle base-passwd
et a la description suivante:
_$ apt-cache show base-passwd
Package: base-passwd
...
Description-en: Debian base system master password and group files
These are the canonical master copies of the user database files
(/etc/passwd and /etc/group), containing the Debian-allocated user and
group IDs. The update-passwd tool is provided to keep the system databases
synchronized with these master files.
_
Les fichiers maîtres (dans la terminologie susmentionnée) sont placés dans:
/usr/share/base-passwd/group.master
_/usr/share/base-passwd/passwd.master
_Le package contient un seul binaire _/usr/sbin/update-passwd
_.
Son objectif est décrit dans la page de manuel ( man update-passwd
):
LA DESCRIPTION
_update-passwd
_ gère les mises à jour de _/etc/passwd
_, _/etc/shadow
_ et _/etc/group
_ sur les systèmes Debian en cours d'exécution. Il compare les fichiers actuels aux copies maîtres, distribuées dans le package _base-passwd
_, et met à jour toutes les entrées de la plage système globale (c'est-à-dire, 0 à 99).
Pour le problème de la question, nous devons exécuter:
_Sudo update-passwd --sanity-check --verbose
_
Vous pouvez aussi essayer de lancer la simulation (essai à sec):
_$ Sudo update-passwd --sanity-check --verbose --dry-run
Reading passwd from /usr/share/base-passwd/passwd.master
Reading group from /usr/share/base-passwd/group.master
Reading passwd from /etc/passwd
Reading shadow from /etc/shadow
Reading group from /etc/group
_
Si vous exécutez sans arguments, vous mettrez à jour _/etc/passwd
_, _/etc/shadow
_ et _/etc/group
_ (__ SOMECODE) __ ou vous arrêterez tranquillement:
_$ Sudo update-passwd
$ Sudo update-passwd --verbose
No changes needed
_
L'utilitaire couvre 39 groupes standard - adm , audio , backup , bin , cdrom , démon , dialout , dip , disque , fax , disquette , jeux , gnats , irc , kmem , liste , lp , mail , man , nouvelles , nogroup , opérateur , plugdev , proxy , racine , sasl , ombre , src , personnel , Sudo , sys , bande , tty , utilisateurs , utmp , uucp , vidéo , voix , www-data .
On peut lire la documentation locale sur les groupes standard dans _/usr/share/doc/base-passwd/users-and-groups.html
_ (ou en ligne ).
Attention: ne continuez pas si vous n'êtes pas sûr de ce que vous faites ou si vous êtes débutant.
Commencer avec
_Sudo update-passwd --verbose
_
et ensuite, si vous avez installé un autre logiciel à partir de référentiels puis mis à la corbeille votre _/etc/passwd
_ et/ou _/etc/group
_, vous pouvez essayer de réinstaller tous ces packages avec avec la commande basé sur suggestion de @ mur :
_Sudo apt-get install --reinstall \
$(grep -RlE '(getent|useradd|adduser|groupadd|addgroup|chrgp|chmod|gpasswd|usermod)' \
/var/lib/dpkg/info --include='*inst' | sed -r 's:.*/(.*)\.[-a-z]+inst:\1:')
_
/etc/group
_Si vous avez supprimé des entrées de _/etc/group
_, vous serez confronté à des messages d'erreur
_dpkg: unrecoverable fatal error, aborting:
unknown group 'crontab' in statoverride file
E: Sub-process /usr/bin/dpkg returned an error code (2)
_
Vous devez supprimer les lignes correspondantes de _/var/lib/dpkg/statoverride
_ et _/etc/passwd
_ puis réessayer avec la commande ci-dessus.
Un autre message d'erreur possible est
_E: Internal Error, No file name for dbus:AMD64
_
Vous pouvez résoudre ce problème en téléchargeant le package manuellement:
_apt-get download dbus
Sudo dpkg -i dbus*.deb
_
et essayez à nouveau avec la commande ci-dessus.
Si vous avez supprimé des groupes liés à systemd systemd-journal , systemd-timesync , systemd-network , systemd-resol , procd-bus-proxy à partir de /etc/groupez puis supprimez-les de _/etc/passwd
_ et réinstallez le paquet systemd
avec
_Sudo apt-get install --reinstall systemd
_
puis réessayez avec la commande ci-dessus
/etc/passwd
_Si vous avez supprimé des entrées de _/etc/passwd
_, vous serez confronté à des messages d'erreur
_dpkg: unrecoverable fatal error, aborting:
unknown user 'hplip' in statoverride file
_
Vous devez supprimer la ligne correspondante de _/var/lib/dpkg/statoverride
_, puis réessayer avec la commande ci-dessus.