Impossible d'écrire dans le répertoire / tmp sous macOS, impossible de corriger les autorisations: «Opération non autorisée»

13

macOS El Capitan (10.11) ne peut installer aucune mise à jour logicielle ni installer de logiciel car /tmples /private/tmpdossiers et ne semblent pas être accessibles en écriture.

Exécuter ceci:

sudo /usr/libexec/repair_packages --repair --standard-pkgs --volume /

Me donne cette erreur:

unable to set owner and group on "tmp" Error 1 Operation not permitted
unable to set permissions on "tmp" Error 1 Operation not permitted

Existe-t-il un moyen de supprimer manuellement les dossiers tmp et de les recréer? Lorsque j'ai essayé de renommer ou de supprimer /tmpou /private/tmpj'ai continué à obtenir des opérations non autorisées. sudo chmod 1777a également échoué de la même manière sur les deux dossiers /tmpet/private/tmp

L'Utilitaire de disque indique que le disque est sain et qu'aucun problème n'a été détecté lors de l'exécution des premiers soins.

Existe-t-il un moyen de rediriger l' tmpemplacement vers un autre dossier accessible en écriture?

Ali
la source
1
Avez-vous d'abord désactivé SIP? De récupération; Terminalcsrutil disable
Tetsujin
2
J'ai le même problème. J'ai suivi les conseils de Tetsujin, redémarré en mode de récupération et couru csrutil disable. Après cela, j'ai pu exécuter repair_packagesavec succès et j'ai pu accéder à / tmp comme d'habitude. Cependant, après être revenu en mode de récupération et exécuté csrutil enable, mon système rencontre le même problème. Il semble que la seule façon d'accéder à / tmp est de désactiver la protection de l'intégrité du système.
Andrew Ferk
4
J'ai fini par revenir au mode de récupération et à exécuter csrutil disable. Après un redémarrage, j'ai supprimé le dossier tmp:, sudo rm /tmp; sudo rm /private/tmpcréé le dossier tmp sudo mkdir /private/tmp; sudo chown root:wheel /private/tmp; sudo chmod 1777 /private/tmp, créé le lien symbolique: sudo ln -s /private/tmp /tmpet exécuté à repair_pacakgesnouveau. Après être revenu en mode de récupération et exécuté csrutil enable, tout fonctionne à nouveau! Cependant, les autorisations de / private / tmp étaient drwxrwxrwt@et sont maintenant drwxrwxrwt. Je ne sais pas ce que @c'est et si cela me causera des problèmes.
Andrew Ferk
1
@AndrewFerk: consultez ces articles apple.stackexchange.com/questions/42177/… unix.stackexchange.com/questions/10/what-does-the-mean-in-ls-l pour une explication du marqueur d' @ autorisations étendues
Adam Michalik

Réponses:

22
  1. Redémarrez votre Mac en mode de récupération
  2. Ouvrez le menu Utilitaires dans la barre supérieure> ouvrez Terminal

    csrutil disable
    
  3. Redémarrer

  4. Supprimer le dossier tmp

    sudo rm -i /tmp
    sudo rm -i /private/tmp
    
  5. Créer un dossier tmp

    sudo mkdir /private/tmp
    sudo chown root:wheel /private/tmp
    sudo chmod 1777 /private/tmp
    
  6. Créer le lien symbolique

    sudo ln -s /private/tmp /tmp
    
  7. Courez repair_packages(vous n'aurez peut-être pas besoin de le faire)

    sudo /usr/libexec/repair_packages --repair --standard-pkgs --volume /
    
  8. Redémarrez en mode de récupération et exécutez

    csrutil enable
    
  9. Redémarrer


Je remercie Andrew Ferk d'avoir trouvé une solution; extraire votre commentaire comme une réponse wiki communautaire afin qu'il soit plus lisible.

ento
la source
2
Je vous remercie!!! J'avais passé 3 jours à arracher mes cheveux. Aucune idée de la façon dont les autorisations ont été si vissées en premier lieu, mais un jour, j'ai allumé le mac pour une sélection d'avertissements, de programmes ne fonctionnant pas et d'une incapacité à installer quoi que ce soit. Cela a résolu ce problème.
johngeorgewright
Pourquoi avez-vous fait cette CW?
Revetahw dit Réintégrer Monica
1
Parce que je ne voulais pas obtenir de crédit pour une réponse que j'ai simplement convertie à partir du commentaire de quelqu'un d'autre
ento
Très bien cool. BTW, je n'ai pas vu votre commentaire jusqu'à présent car il n'y avait pas de @Fiksdal.
Revetahw dit Réintégrer Monica
10.13: sudo: / usr / libexec / repair_packages: commande non trouvée
Даниил Пронин
1
sudo chmod 1777 /private/tmp

Je l'ai fait pour moi.

Renetik
la source
0

J'ai résolu ce problème en restaurant mon système à partir d'une sauvegarde Time Machine. Mais les autres suggestions dans les commentaires valent également la peine d'être essayées.

Ali
la source
0

Si vous avez reçu ce message dans le terminal (ou iTerm) en utilisant maxOS Mojave

Opération non autorisée

Il s'est avéré que je devais ajouter mon application de terminal à Settings.app "Sécurité et confidentialité"> "Accès complet au disque"
(j'ai ajouté les deux terminal.appet iTerm.app)

Aiden Moon
la source
-1

Essayez de créer et de modifier les autorisations sur le /private/tmpdossier sans exécuter csrutil disable. Cela a fonctionné pour moi, après avoir tenté de supprimer sans succès et le message d'erreur au démarrage a disparu.

user69083
la source
Bienvenue dans Super User. Veuillez ne pas poster de réponse pour confirmer qu'une autre réponse a fonctionné. Le format Q&A du site réserve des réponses pour les solutions à la question, et chaque réponse devrait apporter une autre solution. La façon d'indiquer qu'une réponse a été utile est d'investir un peu de temps dans le site et vous obtiendrez des privilèges suffisants pour voter en amont les réponses que vous aimez.
fixer1234