J'ai supprimé le fichier «/ etc / passwd» et je ne peux pas me connecter

22

J'essayais de changer mon nom d'utilisateur et aussi mon répertoire personnel ( /home/username) et mon système a commencé à planter. J'ai supprimé le passwdfichier mais j'avais une sauvegarde nommée passwd_bkp. J'ai essayé de renommer cela en passwd_bkptant que passwdet 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 maintenant je ne peux plus me connecter. GRUB propose deux options: Linux et le mode de récupération.

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

Ai-je perdu tous mes fichiers?

joao rodrigo leao
la source
1
À votre question de suivi: remplacez votre mot de passe en utilisant la technique de récupération. Voir: askubuntu.com/questions/24006/…
david6
1
@ david6 Lorsqu'un utilisateur ne peut pas se connecter car il n'y a pas de /etc/passwdfichier , il n'est également pas possible de réinitialiser le mot de passe. Vous devez restaurer (ou recréer) le passwdfichier. Et une fois cela fait, il n'est généralement pas nécessaire de réinitialiser le mot de passe.
Eliah Kagan
@Eliah Kagan: D'accord, mais je répondais à la question de suivi, après que / etc / passwd a été (soi-disant) restauré à partir de la copie de sauvegarde.
david6
Vous devrez être plus précis sur l'erreur.
psusi

Réponses:

32

Non, compte tenu de votre description, vous n'avez perdu aucun de vos fichiers (sauf ceux /etc/passwdque vous avez supprimés mais que vous avez sauvegardés).

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

Vous pouvez maintenant restaurer la sauvegarde. Vous devez cependant le faire en tant que root. Voici un moyen assez simple de le faire.

  1. Ouvrez une fenêtre de terminal ( Ctrl+ Alt+ T). Dans le terminal, saisissez cdet saisissez la Spaceclé, mais n'appuyez pas Enterencore.

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

  3. Faites glisser ce etcrépertoire dans le terminal, qui collera son chemin complet dans le terminal, en exécutant la cd ...commande.

  4. Appuyez sur Enterpour exécuter la commande. Vous vous trouvez maintenant dans le répertoire contenant votre passwdfichier. Je suppose que votre fichier de sauvegarde,, se passwd_bkptrouve également ici.

  5. Exécutez cette commande:

    sudo cp passwd_bkp passwd
    

Cela restaure le passwdfichier à partir de votre sauvegarde, alors maintenant vous devriez pouvoir redémarrer, retirer le CD / DVD ou le lecteur flash USB et redémarrer dans votre système Ubuntu installé. Votre système Ubuntu installé devrait fonctionner à nouveau.


Pour l'avenir, vous devez être conscient qu'il est recommandé de ne pas modifier manuellement /etc/passwd, /etc/group, /etc/shadowou /etc/gshadow. Au lieu de cela, vous devez utiliser les utilitaires fournis dans le cadre d'Ubuntu pour apporter les modifications dont vous avez besoin aux utilisateurs et aux groupes de votre système. Vous savez probablement que vous pouvez modifier cela dans les paramètres système ou avec users-admin. Mais il existe également des utilitaires de ligne de commande très puissants pour cela, qui sont toujours beaucoup plus sûrs et plus faciles que de modifier manuellement les fichiers de configuration vous-même. Voici la documentation sur les utilitaires de ce type les plus pertinents dans Ubuntu:

Vous pouvez changer votre nom d' utilisateur avec certains de ces utilitaires. Cette réponse explique une manière en détail. Cependant, vous devez être conscient (comme cela est actuellement évoqué par un commentaire) que certaines applications supposent que votre nom d'utilisateur reste le même. La modification de votre nom d'utilisateur peut donc entraîner des problèmes.

Eliah Kagan
la source
Merci beaucoup. Il est quatre heures du matin ici au sud du Brésil ... J'étais tellement inquiète que je ne pouvais pas dormir. Je vais essayer ça ...
joao rodrigo leao
2
Si vous n'avez pas effectué de sauvegarde, essayez d'utiliser /etc/passwd-ou /var/backups/passwd.bak. Assurez-vous de définir les autorisations correctes. Exemple:sudo install -m644 /etc/passwd- /etc/passwd
Lekensteyn
4

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

psusi
la source
1
Êtes-vous sûr que cela fonctionnera? Sans /etc/passwd, il n'y a aucun utilisateur appelé root et aucun utilisateur avec uid = 0 . Les utilitaires nécessaires fonctionneront-ils nécessairement dans ces conditions inhabituelles?
Eliah Kagan
1
@EliahKagan, il y a toujours un utilisateur avec uid = 0 puisque c'est l'uid avec lequel le noyau démarre le premier processus. cpou mvn'avez pas besoin de / etc / passwd.
psusi
cela a sauvé mon cul stupide! i édition manuelle sur / etc / shadow concernant les trucs crontab. Je ne savais pas qu'on ne plaisante pas avec 'shadow' .... Je pensais que j'étais f ** ckd mais merci mon dieu pour @psusi .... J'ai édité le menu grub pour la récupération ajouté / bin / sh comme il le disait , a suivi sa monture et a juste copié l'ombre de / var / backups sur celle corrompue dans / etc ... Bon comme neuf .. merci
rowntreerob
2

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

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

vipw

Depuis les 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 souhaitez modifier l'UID d'un utilisateur, pour autant que je sache, pour modifier les fichiers manuellement, c'est le seul moyen. De plus, si vous souhaitez modifier le mot de passe d'un utilisateur, puis revenir à son précédent sans le savoir, il n'y a aucun moyen avec usermodou ainsi. Mais si vous enregistrez le mot de passe haché dans le fichier caché, puis changez le mot de passe de l'utilisateur, vous pouvez ensuite ajouter à nouveau le mot de passe haché en modifiant le fichier caché avec vipw -s.

lumbric
la source
1

Après avoir suivi la réponse de @ EliahKagan, je ne pouvais pas me connecter lightdmet mon compte n'était pas répertorié. J'ai découvert que l'autorisation du passwdfichier 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

changer dans le /etcrépertoire

cd /etc

Modifiez ensuite les autorisations en 644

sudo chmod 644 passwd

Alors fais ls -la

la chaîne d'autorisation doit ressembler à ceci

-rw-r--r--
danidee
la source
-1

Si vous pouvez vous connecter, ouvrez simplement le terminal et essayez ceci:

sudo cp /etc/passwd- /etc/passwd
sudo chmod 644 /etc/passwd

Autre

Démarrez en mode de récupération ou à partir d'Ubuntu live Cd. Ensuite, montez votre ancien lecteur:

mkdir /olddrive
mount /dev/hda5 /olddrive
assuming that your old drive is on /dev/hda5.
then, cd to /olddrive/etc
type:
echo "root::0:0:Superuser:/:/bin/bash" > passwd

puis redémarrez. Cela ne définira aucun mot de passe pour root.

Ensuite, vous pouvez vous connecter, recréer tous vos comptes, etc.

Vous pouvez également utiliser la sauvegarde qui s'appelle (je pense) /etc/passwd-

Edit : (une autre méthode que je n'ai pas essayée auparavant mais je pense qu'elle devrait aussi fonctionner)

  • Démarrez GRUB au démarrage (appuyez sur Escpendant le démarrage)
  • Appuyez esur (mode de récupération)
  • Appuyez esur la ligne commençant par le noyau
  • Appuyez Spaceet entrezinit=/bin/bash
  • presse Enter
  • presse b
  • À l'invite de commande, tapez: cp /etc/passwd- /etc/passwd
  • Redémarrez à nouveau sur GRUB
  • Appuyez esur (mode de récupération)
  • Appuyez esur la ligne commençant par le noyau
  • Appuyez Spaceet entrezinit=/bin/bash
  • presse Enter
  • presse b
  • À l'invite de commande, tapez mount -o remount,rw /
  • Type passwd YOURUSERNAMEHERE(Si vous ne connaissez pas votre type de nom d'utilisateur ls /home(c'est-à-dire un L minuscule et un S minuscule) pour une liste d'utilisateurs)
  • Entrez un nouveau mot de passe à l'invite
  • Redémarrez au démarrage normal.

La source

Maythux
la source