web-dev-qa-db-fra.com

J'ai supprimé le fichier "/ etc / passwd" et je ne parviens pas à me connecter.

J'essayais de changer mon nom d'utilisateur et aussi mon répertoire personnel (/home/username) et mon système a commencé à tomber en panne. J'ai supprimé le fichier passwd mais j'avais une sauvegarde nommée passwd_bkp. J'ai essayé de renommer ce passwd_bkp en passwd et cela n'a pas fonctionné. Aucune commande n'était en cours d'exécution ... J'étais dans une fenêtre de terminal.

J'ai redémarré mon système et je ne peux plus me connecter. GRUB donne deux options: Linux et le mode de récupération.

J'ai essayé d'ouvrir une session en tant que root, mais il est indiqué que le système de fichiers est corrompu. Je ne peux pas accéder à mes fichiers.

Ai-je perdu tous mes fichiers?

22

Non, compte tenu de votre description, vous n'avez perdu aucun de vos fichiers (à l'exception de /etc/passwd, que vous avez supprimé, mais que vous aviez sauvegardé).

Démarrez un CD/DVD live Ubuntu ou un lecteur flash USB live. Sélectionnez Try Ubuntu (not Install Ubuntu). Lorsque le bureau se charge, ouvrez une fenêtre Nautilus (navigateur de fichiers). Vous pouvez trouver la partition de votre système Ubuntu sous Devices. Cliquez dessus pour le monter.

Maintenant, vous pouvez restaurer la sauvegarde. Vous devez le faire en tant que root, cependant. Voici un moyen assez facile de le faire.

  1. Ouvrez une fenêtre de terminal (Ctrl+Alt+T). Dans le terminal, tapez cd et tapez le Space touche, mais n'appuie pas Enter encore.

  2. Dans Nautilus, recherchez le répertoire etc dans le système Ubuntu installé. (Ce n'est pas la même chose que le répertoire etc du live CD. Le répertoire etc du système Ubuntu installé se trouve dans la partition que vous venez de monter.)

  3. Faites glisser ce répertoire etc dans le terminal, ce qui permettra de coller son chemin complet dans le terminal, en exécutant la commande cd ....

  4. Presse Enter pour exécuter la commande. Vous êtes maintenant dans le répertoire qui contient votre fichier passwd. Je suppose que votre fichier de sauvegarde, passwd_bkp, se trouve également ici.

  5. Exécutez cette commande:

    Sudo cp passwd_bkp passwd
    

Cela restaure le fichier passwd à partir de votre sauvegarde. Vous devez donc maintenant pouvoir redémarrer, retirer le CD/DVD ou le lecteur flash USB et redémarrer sur votre système Ubuntu installé. Votre système Ubuntu installé devrait fonctionner à nouveau.


Pour l’avenir, sachez qu’il n’est pas recommandé d’éditer manuellement les codes /etc/passwd, /etc/group, /etc/shadow ou /etc/gshadow. À la place, vous devez utiliser les utilitaires fournis avec Ubuntu pour apporter les modifications nécessaires aux utilisateurs et aux groupes de votre système. Vous savez probablement que vous pouvez modifier ceci dans les paramètres système ou avec users-admin. Mais il existe également de très puissants utilitaires de ligne de commande, qui sont toujours beaucoup plus sûrs et plus faciles que de modifier manuellement les fichiers de configuration. Voici la documentation sur les utilitaires les plus pertinents dans Ubuntu:

Vous pouvez changer votre nom d'utilisateur avec certains de ces utilitaires. Cette réponse explique en détail un moyen. Cependant, vous devez savoir (comme cela est actuellement mentionné dans un commentaire) que certaines applications supposent que votre nom d'utilisateur reste le même. Donc, changer votre nom d'utilisateur peut causer des problèmes.

32
Eliah Kagan

Au lieu de démarrer un livecd, vous pouvez appuyer sur e dans le menu grub pour modifier l'entrée en mode de secours et ajouter init=/bin/sh aux arguments du noyau. Cela vous mènera directement à un shell racine où vous pourrez copier le fichier de sauvegarde sur l'original après avoir remonté le système de fichiers en lecture-écriture avec mount -o remount,rw /.

4
psusi

Lisez d'abord la réponse d'Eliah Kagan avant de continuer à la lire. Il explique comment gérer la situation et pourquoi il n’est généralement pas nécessaire de modifier manuellement/etc/passwd.

Quoi qu'il en soit, si vous savez vraiment ce que vous faites et vous devez éditer /etc/passwd manuellement, vous pouvez le faire, mais vous ne devez toujours pas simplement modifier les fichiers avec votre éditeur favori. Au lieu de cela il y a l'outil

vipw

À partir des pages de manuel:

The vipw and vigr commands edits the files /etc/passwd and /etc/group,
respectively. With the -s flag, they will edit the shadow versions of those
files, /etc/shadow and /etc/gshadow, respectively. The programs will set
the appropriate locks to prevent file corruption.

Par exemple si vous voulez changer un UID d'utilisateur, autant que je sache, éditer les fichiers manuellement, est le seul moyen. De même, si vous souhaitez modifier le mot de passe d'un utilisateur, puis le ramener au précédent, sans le savoir, rien ne se fait avec usermod ou à peu près. Mais si vous enregistrez le mot de passe haché du fichier ombre, puis modifiez le mot de passe de l'utilisateur, vous pouvez ensuite ajouter le mot de passe haché en modifiant à nouveau le fichier ombre avec vipw -s.

2
lumbric

Après avoir suivi la réponse de @ EliahKagan, je n'ai pas pu me connecter à partir de lightdm et mon compte ne figurait pas dans la liste. J'ai découvert que l'autorisation du fichier passwd n'était pas configurée correctement. l'utilisateur lightdm n'y avait pas accès. Voici comment je l'ai corrigé:.

Connectez-vous sur un tty Ctrl+Alt+F1

accédez au répertoire /etc

cd /etc

Puis changez les permissions en 644

Sudo chmod 644 passwd

Ensuite, faites ls -la

la chaîne de permission devrait ressembler à ceci

-rw-r--r--
1
danidee