SIP que evita la eliminación de / opt / local


5

Encontré el mismo problema esta noche que esta pregunta de SO que no fue respondida completamente.

Estoy tratando de desinstalar una instalación anterior de MacPorts y ejecutar SIP:

mybox:~ me$ sudo rm -rf /opt/local
rm: /opt/local/var/macports/home/Library/Preferences: Operation not permitted
rm: /opt/local/var/macports/home/Library: Operation not permitted
rm: /opt/local/var/macports/home: Operation not permitted
rm: /opt/local/var/macports: Directory not empty
rm: /opt/local/var: Directory not empty
rm: /opt/local: Directory not empty

Según la pregunta original, la respuesta parece involucrar a SIP ... pero ¿por qué SIP decidió proteger este directorio (vacío)?

EDITAR: Aquí están los resultados ls -aen el directorio:

./ ../

Y aquí están los resultados de ls -leOd /opt/local/var/macports/home/Library/Preferences:

drwxrwxrwx  2 root  wheel  - 64 Nov  8 19:45 /opt/local/var/macports/home/Library/Preferences/

.

EDITAR 2018-11-12:

Aquí están los resultados de ls -laeO@ /opt/local/var/macports/home

drwxr-xr-x  3 root  wheel  - 96 Nov  8 19:42 ./
drwxr-xr-x@ 3 root  wheel  - 96 Nov  8 19:45 ../
    com.apple.FinderInfo    32 
drwxr-xr-x  3 root  wheel  - 96 Nov  8 19:42 Library/

EDITAR 2018-11-13:

Aquí están los resultados de xattr -l /opt/local/var/macports

com.apple.FinderInfo:
00000000  00 00 00 00 00 00 00 00 40 00 00 00 00 00 00 00  |........@.......|
00000010  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
00000020

¿estás seguro de que está vacío o tiene archivos ocultos?
Ruskes

Hay varias causas posibles para este error. Compruebe la lista de los directorios de control de acceso (ACL) y banderas con, por ejemplo ls -leOd /opt/local/var/macports/home/Library/Preferences. Si eso enumera una bandera "restringida", el directorio de protegido por SIP. Hay una serie de otras banderas que pueden prohibir la eliminación; ver man chflagspara una lista parcial de ellos. No creo que un ACL pueda tener este efecto, pero tampoco está de más comprobarlo. Puede agregar los resultados a su pregunta editándola (nota: utilice el formato de código, como lo hizo para los errores originales).
Gordon Davisson el

1
@Wowfunhappy Estoy realmente más interesado en aprender lo que está sucediendo que en resolver el problema.
James Jensen

1
Otra cosa se me ocurre: ¿hay una cuenta de usuario real que ... / macports / home es el directorio de inicio? Si es así, podría ser un efecto extraño de la nueva función de protección de privacidad en Mojave. Intente otorgar acceso a la aplicación Terminal en las preferencias de Seguridad y privacidad -> pestaña Privacidad -> Datos de la aplicación (ver aquí ), y luego vea si puede eliminarlos.
Gordon Davisson el

1
@GordonDavisson Eso lo hizo. También busqué a los usuarios dscacheutil -q usery encontré un usuario llamado "macports" /opt/local/var/macports/homecomo su directorio de inicio. Extraño. ¡Gracias!
James Jensen el

Respuestas:


2

El directorio está protegido por SIP porque es el directorio de inicio de un macportsusuario, presumiblemente creado como parte del proceso de instalación de MacPorts.

La mejor solución es eliminar primero esa cuenta de usuario, siguiendo las instrucciones de esta respuesta aceptada a otra pregunta de AppleSE. También es posible que desee eliminar el macportsgrupo correspondiente que también existe (vea los comentarios sobre esa respuesta aceptada).

Una vez que haya hecho eso, debería poder hacerlo con sudo rm -rf /opt/localéxito.

Se agradece significativamente esta respuesta a @GordonDavisson por proporcionar el 90% de la solución en los comentarios, hace algunos meses.


-1

Pruebe uno de los siguientes

o No eres el propietario del directorio

ls -ld / ruta / al directorio /

o No tiene permisos para eliminar el nombre del directorio del directorio principal

o El directorio o su padre tiene una ACL que le impide eliminar el directorio

ls -ldeO @ / ruta / al directorio /

ls -ldeO @ / ruta / al / directorio / ..

chmod para meterse con ACL

o El directorio o su padre tiene la bandera 'uchg' o 'schg'

ls -ldeO @ / ruta / al directorio /

ls -ldeO @ / ruta / al / directorio / ..

chflags para meterse con banderas.

y finalmente esto sudo chflags -R nouchg <parent>


Op ejecutó el comando bajo sudo, por lo que no importa quién sea el propietario.
Mark
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.