web-dev-qa-db-fra.com

Après avoir renommé / usr accidentellement, comment le renommer?

J'ai renommé accidentellement le répertoire /usr en /usr_bak.

Je veux le changer à nouveau, donc j'ajoute le chemin /usr_bak/bin à $PATH pour permettre au système de trouver la commande Sudo.

Mais maintenant Sudo mv /usr_bak /usr me donne l'erreur:

Sudo: error while loading shared libraries: libsudo_util.so.0: cannot open shared object file: No such file or directory

Existe-t-il un moyen de renommer le /usr_bak comme /usr en plus de réinstaller le système?

63
Yves

Puisque vous avez défini un mot de passe pour root, utilisez su et busybox, installés par défaut dans Ubuntu. Toutes les bibliothèques requises de su sont dans /lib. Busybox est une collection d'utilitaires liés statiquement, donc les bibliothèques manquantes ne devraient pas être un problème. Faire:

su -c '/bin/busybox mv /usr_bak /usr'

(Alors que Busybox lui-même a également une applet su, le /bin/busybox le binaire n'est pas setuid et ne fonctionne donc que s'il est exécuté en tant que root.)

Si vous n'avez pas de mot de passe root, vous pourriez probablement tilisez la solution de Gilles ici en utilisant LD_LIBRARY_PATH , ou(Gilles dit que cela ne fonctionnera pas avec les binaires setuid comme Sudo) redémarrez et éditez le menu GRUB pour démarrer avec init=/bin/busybox comme paramètre du noyau et replacer le dossier.

110
muru

En plus de réponse de mur :

  • vous auriez pu utiliser une clé USB de démarrage de secours pour réparer votre système; par exemple. si votre système est un Debian ou Ubuntu, démarrez la clé USB d'installation en mode de secours, et faites les mount et mv et umount appropriés.

  • pour pouvoir réparer plus facilement de telles erreurs, j'installe généralement aussi un shell statique avec plusieurs commandes intégrées (notamment avec certaines cp, rm, mv - comme les commandes intégrées) telles as sash (c'est empaqueté dans Debian et Ubuntu, et aussi disponible sous sash-3.8.tar.gz dans la source formulaire) et démarrer avec init=/bin/sash passé à Grub.

PS: sash est légèrement bogué, et pas entièrement compatible Posix, mais toujours très utile.

34

Je pense que le meilleur moyen le plus sûr est de redémarrer à l'aide d'un système d'exploitation démarré par USB, CD ou DVD (Debian, Ubuntu, Suse, etc.). Montez ensuite le lecteur contenant les problèmes et effectuez le changement de nom.

Plus sûr que de démarrer dans un champ de mines avec/usr ou/lib effectivement manquant.

3
Larry

J'ai rencontré un problème similaire où j'ai renommé /usr/bin à /usr/bin_bkp pour un test et je n'ai pas pu renommer (car la commande n'a pas trouvé le Sudo dans le répertoire standard qui est /usr/bin) puis je suis allé au /usr/bin_bkp répertoire manuellement (à l'aide du Gestionnaire de fichiers) et la plupart des fonctions (y compris le renommage) sur le clic droit sont désactivées.

Ensuite, j'ai essayé la commande suivante et elle a résolu le problème

$/usr/bin_bkp/Sudo mv /usr/bin_bkp/ /usr/bin/

J'ai invoqué le Sudo du chemin actuel et cela a fonctionné, maintenant tout est revenu à la normale.

Système d'exploitation: Xubuntu 14.04

0
geek