3 votes

Comment supprimer un fichier système en tant qu'administrateur

Je suis un utilisateur "admin" sur un Mac exécutant Big Sur. J'essaie de supprimer un lien symbolique :

$ ls -al /usr/bin/python
lrwxr-xr-x  1 root  wheel  75 Jan  1  2020 /usr/bin/python -> ../../System/Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7

Maintenant, j'ai essayé de le supprimer avec sudo mais j'obtiens la permission refusée :

$ sudo rm /usr/bin/python
rm: /usr/bin/python: Operation not permitted

Comment puis-je assumer réellement les pouvoirs d'administrateur sur mon mac ? Dois-je être ajouté au groupe "wheel" ?

Veuillez noter que je suis bien conscient des solutions de contournement avec des alias de shell comme décrits ici :

Unable to upgrade to python 3.6 from python 2.7

Mais cela ne serait qu'une solution temporaire. Je veux savoir quelle est la cause racine, et ce que je peux faire à ce sujet.

2 votes

Vous ne pouvez pas sur Big Sur. Tous les fichiers système sont sur un disque en lecture seule. De plus, supprimer python va casser certains programmes système nécessaires comme xattr.

0 votes

Wow. Avez-vous une bonne ressource sur la manière dont Big Sur gère les mises à jour du système et autres ?

2 votes

Vous ne devriez rien faire à ce sujet. Sur macOS, il est normal d'exécuter Python V3.x avec la commande python3. La commande python doit rester la version intégrée V2.x.

6voto

Jose Chavez Points 645

La cause principale ici est que le répertoire /usr/bin est protégé par SIP (System Integrity Protection). Par conséquent, personne, même les utilisateurs administrateurs, ne peut modifier le contenu du répertoire tant que SIP est actif.

Les dossiers système sur Big Sur sont en réalité contenus dans un système de fichiers séparé, cryptographiquement signé (volume système) qui est monté en lecture seule au démarrage. Son contenu est mélangé à votre système de fichiers monté en lecture-écriture normal grâce à l'utilisation de liens fermes. Cela signifie qu'il ressemble et semble fonctionner comme sur les anciennes versions de macOS - tout est à sa place pour ainsi dire - mais en réalité, les fichiers système ne peuvent pas être modifiés pendant le fonctionnement normal du système.

En théorie, vous pourriez désactiver SIP, monter le volume système en écriture, modifier le lien python et resigner le tout. Cependant, je déconseille fortement cette méthode car vous risqueriez de casser les outils fournis par Apple qui dépendent de la version spécifique de python - et vous seriez probablement confronté à une bataille sans fin où le lien est restauré lors des mises à jour de macOS.

Je vous conseillerais plutôt d'utiliser un nom différent pour le programme (par exemple python3 au lieu de python) - ou d'utiliser un alias dans votre shell pour que "python" exécute réellement un programme portant un nom différent.

1 votes

Je préfère la liberté dangereuse, mais chacun ses goûts

5 votes

Je ne sais pas si je qualifierais cela de liberté exactement - mais bien sûr, vous êtes libre de faire ce que vous voulez avec votre propre ordinateur (dans les limites de la loi). Si cela signifie désactiver les fonctionnalités de sécurité principales ou créer des tâches supplémentaires à effectuer lors des mises à jour - c'est tout à fait acceptable. Prenez juste une minute pour comprendre les risques et le travail impliqué avant de commencer - et n'oubliez pas de faire des sauvegardes! :-)

4 votes

@Lucky Remplacer la version système de Python pourrait casser les scripts système qui sont écrits pour Python 2 plutôt que Python 3. Il est beaucoup plus sûr d'installer votre version préférée de Python ailleurs (par exemple /usr/local/bin/), et de vous assurer que c'est avant /usr/bin dans votre PATH (ce qui est le cas par défaut).

0voto

MvanGeest Points 6421

Vous pouvez exécuter la commande :

csrutil disable

pour désactiver le Mode d'intégrité du système (SIM).

ensuite, toujours en mode de récupération :

sudo rm -rf /cible

Désactiver le SIM est généralement déconseillé et je recommande de se renseigner à ce sujet avant de poursuivre avec cette stratégie. J'ai décidé de le faire quand même et je suis satisfait du résultat.

0voto

Oskar Points 1242

En lisant les commentaires, la réponse à la question implicite plus large de “Qu'a fait Apple pour sécuriser le système d'exploitation et permettre aux développeurs de superposer des versions d'outils en ligne de commande pour faire leur travail ?”

Si vous vous posez cette question : le meilleur article sur l'évolution des changements pertinents de la ligne de commande de Mojave à Catalina à Big Sur se trouve ici :

Les six premiers paragraphes exposent clairement ce qui se passe et aideront grandement quiconque cherche à personnaliser un système macOS moderne.

Le volume système signé et en lecture seule va rendre obsolètes de nombreux anciens guides et réponses étant donné que certaines hypothèses unix traditionnelles ne sont plus valables (comme le besoin d'être root ou ce qu'un administrateur pourrait faire pour modifier les fichiers système en général).

2 votes

Je ne dirais pas que les "hypothèses Unix traditionnelles ne sont plus valables" en tant que telles. Le fait que /usr soit en lecture seule est en fait comment cela se passait sur la plupart des systèmes Unix. Le FHS le permet toujours aujourd'hui, et certains le font également sur des systèmes Unix typiquement "pas si semblables à Unix" comme Linux.

0 votes

Tu ne serais pas d'accord pour dire que certaines hypothèses ne sont plus valables ? @jksoegaard

1 votes

C'était spécifiquement à propos de ne pas pouvoir modifier /usr car il est en lecture seule. Si vous avez l'habitude des anciennes versions de macOS, alors oui, cela briserait vos hypothèses. Cependant, si vous avez seulement des "hypothèses unix traditionnelles" - vous ne seriez pas du tout surpris de trouver que /usr est en lecture seule.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X