3 votos

Cómo eliminar un archivo del sistema como administrador

Soy un usuario "admin" en un Mac con Big Sur. Estoy tratando de eliminar un enlace simbólico:

$ 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

Ahora, he probado a eliminarlo con sudo pero se me deniega el permiso:

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

¿Cómo puedo asumir el poder real de administrador en mi mac? ¿Necesito ser añadido al grupo "wheel"?

Por favor, soy consciente de las soluciones con los alias de shell como se indica aquí:

No se puede actualizar a Python 3.6 desde Python 2.7

Pero eso sólo sería una solución. Quiero saber cuál es la causa principal y qué puedo hacer al respecto.

6voto

Jose Chavez Puntos 645

La causa principal es que el directorio /usr/bin está protegido por SIP (Protección de la integridad del sistema). Por lo tanto, nadie, ni siquiera los usuarios administradores, puede cambiar el contenido del directorio mientras el SIP esté activo.

Las carpetas del sistema en Big Sur están en realidad contenidas en un sistema de archivos separado, firmado criptográficamente (volumen del sistema) que se monta de sólo lectura en el arranque. Su contenido se mezcla con el sistema de archivos normal de lectura y escritura mediante el uso de los llamados firmlinks. Esto significa que se ve y se siente como en las versiones anteriores de MacOS - todo está en el lugar correcto, por así decirlo - pero en realidad los archivos del sistema no se pueden cambiar durante el funcionamiento normal del sistema.

En teoría, podrías desactivar el SIP, montar el volumen del sistema como escribible, cambiar el enlace de Python y volver a firmar todo. Sin embargo, yo desaconsejaría fuertemente eso ya que te arriesgarías a romper las herramientas suministradas por Apple que dependen de la versión específica de Python - y probablemente tendrías que luchar una batalla interminable donde el enlace se restaura durante las actualizaciones de MacOS.

En su lugar, te aconsejo que utilices un nombre diferente para el programa (por ejemplo, python3 en lugar de Python) - o que utilices un alias en tu shell para que "Python" realmente ejecute un programa con un nombre diferente.

0voto

Oskar Puntos 1242

Leyendo los comentarios, la respuesta a la pregunta más amplia y no explícita de "¿Qué ha hecho Apple para asegurar el sistema operativo y además permitir a los desarrolladores superponer versiones de herramientas de línea de comandos para hacer su trabajo?"

Si tienes esa pregunta: el mejor escrito sobre la evolución de los cambios relevantes en la línea de comandos desde Mojave hasta Catalina y Big Sur está aquí:

La primera media docena de párrafos exponen claramente lo que ocurre y ayudarán en gran medida a cualquiera que quiera personalizar un sistema MacOS moderno.

El volumen del sistema firmado y de sólo lectura romperá muchas guías y respuestas antiguas, ya que algunas suposiciones tradicionales de unix ya no son válidas (como la necesidad de ser Root o lo que podría hacer un administrador para modificar los archivos del sistema en general).

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X