No se puede escribir en el directorio / tmp en macOS, no se pueden corregir los permisos: "Operación no permitida"

13

macOS El Capitan (10.11) no puede instalar ninguna actualización de software ni instalar ningún software porque /tmplas /private/tmpcarpetas y no parecen ser grabables.

Ejecutando esto:

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

Me da este error:

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

¿Hay alguna forma de eliminar manualmente las carpetas tmp y volver a crearlas? Cuando intenté cambiar el nombre o eliminar /tmpo /private/tmpseguí obteniendo operaciones no permitidas. sudo chmod 1777también falló de la misma manera en ambos /tmpy /private/tmpcarpetas

Disk Utility dice que el disco está en buen estado y no se detectaron problemas al ejecutar primeros auxilios.

¿Hay alguna forma de redirigir la tmpubicación a otra carpeta de escritura?

Ali
fuente
1
¿Deshabilitó SIP primero? De la recuperación; Terminalcsrutil disable
Tetsujin
2
Tengo el mismo problema. Seguí el consejo de Tetsujin, reinicié en modo de recuperación y corrí csrutil disable. Después de eso, pude ejecutar repair_packagescon éxito y pude acceder a / tmp como de costumbre. Sin embargo, después de volver al modo de recuperación y ejecutar csrutil enable, mi sistema tiene el mismo problema. Parece que la única forma en que puedo obtener acceso a / tmp es deshabilitando la Protección de integridad del sistema.
Andrew Ferk
44
Terminé volviendo al modo de recuperación y ejecutándome csrutil disable. Después de reiniciar, eliminé la carpeta tmp:, sudo rm /tmp; sudo rm /private/tmpcreé la carpeta tmp sudo mkdir /private/tmp; sudo chown root:wheel /private/tmp; sudo chmod 1777 /private/tmp, creé el enlace simbólico: sudo ln -s /private/tmp /tmpy volví repair_pacakgesa ejecutar . Después de volver al modo de recuperación y ejecutar csrutil enable, ¡todo vuelve a funcionar! Sin embargo, los permisos de / private / tmp solían ser drwxrwxrwt@y ahora lo son drwxrwxrwt. No estoy seguro de qué @es y si esto me causará problemas.
Andrew Ferk
1
@ AndrewFerk: vea estas publicaciones apple.stackexchange.com/questions/42177/… unix.stackexchange.com/questions/10/what-does-the-mean-in-ls-l para obtener una explicación del marcador de @ permisos extendidos
Adam Michalik

Respuestas:

22
  1. Reinicia tu Mac en modo de recuperación
  2. Abra el menú Utilidades en la barra superior> abra Terminal

    csrutil disable
    
  3. Reiniciar

  4. Eliminar la carpeta tmp

    sudo rm -i /tmp
    sudo rm -i /private/tmp
    
  5. Crear carpeta tmp

    sudo mkdir /private/tmp
    sudo chown root:wheel /private/tmp
    sudo chmod 1777 /private/tmp
    
  6. Crea el enlace simbólico

    sudo ln -s /private/tmp /tmp
    
  7. Ejecutar repair_packages(puede que no necesite hacer esto)

    sudo /usr/libexec/repair_packages --repair --standard-pkgs --volume /
    
  8. Reiniciar de nuevo al modo de recuperación y ejecutar

    csrutil enable
    
  9. Reiniciar


Felicitaciones a Andrew Ferk por encontrar una solución; sacando su comentario como una respuesta wiki comunitaria para que sea más legible.

ento
fuente
2
¡¡¡Gracias!!! Había pasado 3 días arrancándome el pelo por esto. No tengo idea de cómo se arruinaron los permisos en primer lugar, pero un día encendí el mac para una selección de advertencias, programas que no funcionaban y la imposibilidad de instalar nada. Esto solucionó ese problema.
johngeorgewright
¿Por qué hiciste este CW?
Revetahw dice Reinstate Monica
1
Debido a que no quería obtener crédito para una respuesta que únicamente se transforma desde el comentario de otra persona
ento
OK, está bien. Por cierto, no vi tu comentario hasta ahora ya que no había @Fiksdal.
Revetahw dice Reinstate a Monica el
10.13: sudo: / usr / libexec / repair_packages: comando no encontrado
Actualizado
1
sudo chmod 1777 /private/tmp

Lo hizo por mi.

Renetik
fuente
0

Lo arreglé restaurando mi sistema desde una Copia de seguridad de Time Machine. Pero también vale la pena probar las otras sugerencias en los comentarios.

Ali
fuente
0

Si recibió este mensaje en la terminal (o iTerm) usando maxOS Mojave

operación no permitida

Resultó que necesitaba agregar mi aplicación de terminal a Settings.app "Seguridad y privacidad"> "Acceso total al disco"
(agregué ambos terminal.appy iTerm.app)

Aiden Moon
fuente
-1

Intente crear y modificar permisos en la /private/tmpcarpeta sin ejecutar csrutil disable. Esto funcionó para mí, después de intentar eliminar sin éxito y el mensaje de error en el arranque desapareció.

usuario69083
fuente
Bienvenido a Super User. No publique una respuesta para confirmar que otra respuesta funcionó. El formato de preguntas y respuestas del sitio reserva respuestas para soluciones a la pregunta, y cada respuesta debe aportar otra solución. La forma de indicar que una respuesta fue útil es invertir un poco de tiempo en el sitio y obtendrá los privilegios suficientes para votar las respuestas que desee.
fijador1234