Après avoir renommé accidentellement / etc, comment puis-je le renommer?

36

J'utilise Ubuntu 18.04.

J'ai renommé le /etcdossier en apache2. C'était ma plus grande erreur

Maintenant, je ne peux pas le renommer parce que je dois l’utiliser sudo, mais j’obtiens le message d'erreur.

sudo: unknown uid 1000

Comment puis-je résoudre ce problème? Je n'ai pas de système actif pour démarrer, et en mode de récupération, le terminal root s'ouvre, puis se ferme en disant cannot open password database.

Raton laveur
la source
17
Démarrez à partir d’un support d’installation, sélectionnez "Try Ubuntu", montez votre système de fichiers racine sur /mnt, renommez, renommez.
AlexP
Comment démarrer un support d'installation?
Racoon
@ Zanna, shift ne m'a montré aucun menu. Peut-être qu'un autre bouton peut l'ouvrir?
Racoon
@Zanna, menu de récupération -> root ouvre le terminal, mais il est impossible d'ouvrir la base de mots de passe et ferme
Racoon
@Zanna, non, n'ont pas :(
Racoon

Réponses:

62

Un moyen simple de résoudre des problèmes comme celui-ci consiste souvent à démarrer à partir d'un système en direct, à monter la partition racine /mnt , puis à renommer le fichier.

Si vous n'avez pas de système actif ou un moyen de le créer, ou si vous n'avez pas d'accès physique au système mais vous pouvez redémarrer et obtenir le menu GRUB, vous pouvez utiliser l'éditeur GRUB pour obtenir un shell racine et le renommer. le fichier.

Redémarrez ou éteignez, allumez et, si vous ne voyez pas normalement le menu GRUB au démarrage, appuyez sur Shiftou Escpour accéder au menu GRUB.

Déplacez le curseur vers le bas sur Options avancées pour Ubuntu et appuyez sur enter, puis appuyez sur epour modifier les options de démarrage (une seule fois - les modifications apportées ici ne seront pas permanentes, nous ne devrons donc pas nettoyer plus tard).

Vous verrez un écran qui ressemble à ceci 1 :

capture d'écran de l'éditeur de menu GRUB

Déplacez le curseur vers le bas sur la ligne commençant par linux, puis déplacez le curseur jusqu'à la fin de cette ligne ou n'importe où parmi les paramètres de démarrage du noyau. Assurez-vous que vous êtes sur la bonne ligne et tapez soigneusement ici, car le système peut ne pas démarrer sans être /etcen place.

Ajoutez le texte init=/bin/bashet appuyez sur F10pour démarrer.

Cela démarrera le système avec un shell Bash comme init. Vous obtiendrez un shell root et le système de fichiers sera monté en lecture seule. 2 Pour rendre le système de fichiers accessible en écriture, entrez la commande

mount -o remount,rw /

Maintenant, vous pouvez renommer /etc(vous voudrez peut-être d' lsabord)

mv /apache2 /etc

Maintenant, vous pouvez redémarrer ou terminer le démarrage normalement à partir d’ici en demandant au shell root de se remplacer par le système init 3 normal :

exec systemd 

J'ai testé cette procédure sur Ubuntu MATE 18.04.


1 Merci beaucoup à Kulfy d'avoir obtenu une capture d'écran de bonne qualité de l'éditeur GRUB de VirtualBox!
2 Bien que PATH ne puisse pas être défini à partir des fichiers de configuration /etcde ce scénario, Bash en définira automatiquement un .
3 Si exec systemdcela ne fonctionne pas pour vous, exec /sbin/initdevrait faire l'affaire. Si ce n'est pas le cas, readlink -e /sbin/initdevrait donner le chemin d'accès au programme init en cours d'exécution, que vous pouvez ensuite utiliser execavec son chemin d'accès complet. Si vous ne pouvez pas procéder de cette façon, entrez simplement reboot.

Zanna
la source
4
Très complet, y compris capture d'écran +1 :)
WinEunuuchs2Unix
3
@ Kulfy merci beaucoup! C'est merveilleux: je ne peux pas utiliser VB car je n'ai pas assez de RAM. Très gentil de votre part pour aider à améliorer ma réponse
Zanna
3
Je pense que j'ai pris une capture d'écran bien trop grosse: P ;-) et merci pour le générique de capture d'écran :)
Kulfy
1
@Racoon Vous êtes les bienvenus, content de l'avoir réparé :)
Zanna
Essayer de le tester mais ne fonctionne pas dans Ubuntu 18.04.Desktop. Suivi les instructions à la lettre . Ne fonctionne pas Après F10seulement quelques lignes apparaissent et s'arrête à l'écran vide. Pouvez-vous suggérer quelque chose?
Vijay
8

Si vous possédez une clé USB, vous devriez pouvoir l’amorcer et monter votre système de fichiers existant, puis renommer votre système à /etcpartir de là. Voici un tutoriel sur la création d’une clé USB en direct si vous en avez besoin.

Une fois démarré sur la clé USB en direct (si vous utilisez un lecteur Ubuntu 18.04), sélectionnez "Essayer Ubuntu sans installer" et vous obtiendrez essentiellement une instance complète d’une installation Ubuntu qui ne persistera pas après l’arrêt. Une fois démarré, vous avez quelques options:

Manière en ligne de commande

Ouvrez un terminal et courez lsblk. Recherchez le volume qui correspond au lecteur de votre installation d'origine et notez le numéro (/ dev / sd #).

Ensuite, créez un point de montage pour le lecteur avec mkdir -p /mnt/directory, puis montez le lecteur avec sudo mount /dev/sd# /mnt/directory. Accédez au répertoire avec cd /mnt/directoryet vous devriez maintenant être dans le répertoire racine de votre installation, mais maintenant avec une sudocommande de travail . exécutez sudo mv apache2 etcet redémarrez dans votre système d'exploitation hypothétiquement actif.

Manière graphique

Ouvrez l'utilitaire de disques en recherchant des disques. Sélectionnez le volume qui ressemble à votre lecteur d'installation et montez-le. Ouvrez le gestionnaire de fichiers et sélectionnez le volume monté, cliquez avec le bouton droit sur votre /apache2dossier et renommez-le /etc, puis redémarrez.

Menthe
la source
"Voie graphique" ne fonctionne pas car il n'y a pas d'option "Renommer" sur la RT. Cliquez sur.
Vijay
1
@Vijay C'est probablement à cause des autorisations sur les fichiers, vous devrez ouvrir le gestionnaire de fichiers en tant que root pour le faire graphiquement. Pour ce faire, exécutez la commande à sudo nautiluspartir du terminal. (Ubuntu utilise "nautilus" comme gestionnaire de fichiers de la même manière que Windows utilise "explorer".)
AJMansfield
2
@AJMansfield bien sûr, cela n'a pas d'importance sur un système actif, mais en général, nous devrions sudo -H nautiluséviter d'éviter que root ne devienne le propriétaire des fichiers de configuration $HOME, ce qui les rendrait potentiellement inaccessibles aux programmes exécutés en tant qu'utilisateur ordinaire. Vous êtes probablement au courant de cela, mais je le mentionne pour les autres lecteurs.
Zanna
6
  1. Créez une clé USB amorçable comme indiqué ici.

  2. Démarrez depuis une clé USB en appuyant sur la touche comme indiqué ici.

  3. Découvrez votre partition de système de fichiers en cours d'exécution gparted. Supposons que ce soit sdxy.

  4. Courir sur le terminal sudo mount /dev/sdxy /mnt

  5. Courir sur le terminal sudo mv /mnt/apache2 /mnt/etc

  6. Vérifiez votre système de fichiers dans / mnt pour le changement de nom.

  7. Courir sur le terminal sudo reboot

  8. Lorsque vous y êtes invité, retirez la clé USB et appuyez sur Entrée.

Vijay
la source
@ Kulfy j'ai essayé mais ça ne marche pas sans sudo. Voir ici .
Vijay
C'est parce que sda2 a été monté avec sudo, donc seul sudo peut effectuer des actions. Mais si vous montez lecteur par nautilus (sans autorisation spéciale), vous pouvez effectuer des tâches sans sudo.
Kulfy
Checked it `ubuntu @ ubuntu: ~ $ mount / dev / sda2 / mnt mount: seule la racine peut le faire ubuntu @ ubuntu: ~ $
Vijay
1
Autant que je sache, le mountprogramme est très strict et doit toujours être exécuté en tant que root; la seule exception à cette règle est lorsque le système de fichiers est dans fstabet a l' useroption. Le programme udisksctlpermet aux utilisateurs normaux de monter des périphériques, en utilisant par exemple udisksctl mount -b /dev/sda1(il crée un point de montage approprié /media/$USER/). Je n'ai pas essayé d'utiliser udisksctlun système en direct, mais sur un système en direct, il s'agit toujours d'un utilisateur privilégié capable de s'exécuter sudosans mot de passe, de sorte qu'il n'est pas nécessaire d'utiliser des utilitaires tels udisksctlque ceux qui sont si utiles
Zanna