Comment récupérer de «chown -R $ USER / usr /»?

2

J'ai exécuté un "chown" sur tout ce qui se trouve sous / usr à un utilisateur non root. Destiné à l'exécuter pour / usr / local / Je reçois maintenant l'erreur ci-dessous lors de l'ouverture du terminal

login(89809,0x7fff7bac5960) malloc: *** error for object 0x7fc7cb500b40: pointer being freed was not allocated
*** set a breakpoint in malloc_error_break to debug

[Process completed]
Pete_ch
la source
Double possible de how-can-i-reset-my-terminal ?
sameetandpotatoes
Aussi demandé à unix.stackexchange.com/q/91899/4667
glenn jackman

Réponses:

4

Si vous ne pouvez pas restaurer à /usr/partir d'une sauvegarde, vous pouvez d'abord démarrer en mode mono-utilisateur (en tenant commande-S au démarrage) et l'exécuter chown -R root /usr/.

Sur mon installation, tous les fichiers sous /usr/local/appartenaient à root ou à moi, quelques fichiers /usr/appartenaient à _uucpet tous les autres fichiers /usr/appartenaient à root:

$ sudo find /usr/local ! -user root ! -user $USER
$ sudo find /usr/!(local) ! -user root -print0|xargs -0 stat -f '%Su %N'
_uucp /usr/bin/cu
_uucp /usr/bin/uucp
_uucp /usr/bin/uuname
_uucp /usr/bin/uustat
_uucp /usr/bin/uux
_uucp /usr/sbin/uucico
_uucp /usr/sbin/uuxqt
_uucp /usr/share/uucp

Cela changerait le propriétaire des uucpfichiers:

sudo chown _uucp /usr/bin/{cu,uucp,uuname,uustat,uux} /usr/sbin/{uucico,uuxqt} /usr/share/uucp

/usr/local/n’existe pas sur une nouvelle installation d’OS X. Si vous n’utilisez /usr/local/que Homebrew, vous pouvez supprimer /usr/local/puis réinstaller Homebrew.

Vous pouvez également utiliser Pacifist pour copier les valeurs /usr/par défaut à partir d’un programme d’installation OS X téléchargé depuis l’App Store. Effectuer une installation de mise à niveau de OS X à partir de la partition de récupération ou une mise à niveau vers 10.9 peut également restaurer les propriétaires de certains fichiers.

Lri
la source
La solution en mode utilisateur unique a fonctionné. Mais avant d’exécuter chown, j’ai dû exécuter mount -uw / pour autoriser la modification du système de fichiers sinon en lecture seule
Pete_ch
2

Je pense que c'est un cas où Réparer les autorisations fait réellement quelque chose d'utile. Il restaurera les autorisations correctes sur tous les fichiers fournis par Apple, ce qui, à mon avis, ne concerne que ceux de / usr / local. Ce répertoire contient des éléments que vous avez ajoutés et vous devriez donc pouvoir les recréer.

Pour réparer les autorisations Utilisez Disk Utility.app et sélectionnez le disque d'amorçage dans la liste de gauche. Il y aura des boutons pour vérifier ou réparer les autorisations du disque.

marque
la source
De nombreux fichiers /usr/!(local)/n’ont pas été inclus dans OS X: par exemple, des fichiers ajoutés par le package Outils de ligne de commande, des fichiers ajoutés par les programmes d’installation pour MacTeX, Java et Haskell, ainsi que certains fichiers binaires /usr/binqui ont été ajoutés par sudo /usr/bin/gem install.
Lri
Il y a une raison pour laquelle il est souvent suggéré de ne pas ajouter de fichiers dans /usr/!(local)/Apple, mais de laisser la tâche de gérer cette zone
Mark
A) C'est pourquoi vous ne devriez pas installer d'éléments dans / usr / à l'exception de / usr / local / et B) Réparer les autorisations est toujours votre meilleur pari pour que votre système fonctionne à nouveau.
TJ Luoma