59 votos

Crontab Operación no permitida

Tengo el siguiente crontab en mi mac OS Catalina 10.15.1 :

* * * * * /Users/username/Desktop/cronjob.sh > /Users/username/Desktop/cronjob.log 2>&1

Dentro del archivo de comandos es:

#!/bin/bash

touch /tmp/foo

Sin embargo, me quedé con la siguiente línea en el interior cronjob.log

/bin/bash: /Users/username/Desktop/cronjob.sh: Operation not permitted

¿Por qué no se permite la operación evento aunque los permisos para cronjob.sh se establece en +x ?

0 votos

¿Qué versión de MacOS utilizas? ¿El error también se produce si su bash script sólo contiene touch /tmp/foo ?

0 votos

Sí, el problema persiste.

0 votos

Por favor, edita la pregunta para mostrar el script mínimo entonces, para evitar que la gente sospeche de problemas con Python. Además, ¿qué versión de MacOS?

95voto

klanomath Puntos 19587

En tu caso tienes que añadir cron como aplicación "padre" de las aplicaciones/ejecutivos del usuario Seguridad y privacidad > Privacidad > Acceso total al disco.

Dependiendo de dónde leer el script y dónde escribir el archivo de registro, tienes que añadir cron a las aplicaciones de Acceso Completo al Disco. Casi todas las carpetas por defecto en el home del usuario están protegidas (Documentos/Descargas/Desktop - no he comprobado Imágenes/Películas/Música pero creo que también están protegidas y obviamente son las carpetas equivocadas para añadir shell scripts o ficheros log) por la política de sistema de Catalina.

Si el script y el registro residen en carpetas creadas por el usuario y, por tanto, desprotegidas (por ejemplo, el script en ~/bin y el archivo de registro en ~/log) funciona sin necesidad de añadir cron al grupo Acceso total al disco.

Para añadir la excepción:

  1. pulse el botón + botón
  2. hit G
  3. entre en /usr/sbin
  4. haga doble clic en el botón cron archivo.

Puedes comprobar este tipo de errores abriendo Console.app y buscando el shebanged exec en el script (aquí bash ):

error   15:19:00.369105+0100    kernel  Sandbox: bash(4556) System Policy: deny(1) file-write-data /Users/user/Desktop/test/cronjob2.log
error   15:19:00.379093+0100    kernel  Sandbox: bash(4555) System Policy: deny(1) file-read-data /Users/user/Desktop/cronjob.sh

En los ejemplos anteriores cron no se añadió al grupo Acceso total al disco.

cronjob2 se ejecutó desde una carpeta desprotegida ~/bin pero intenta escribir el archivo de registro en la carpeta protegida ~/Desktop/test/. Así que no hay error de lectura, pero un error de escritura.

cronjob se ejecutó desde una carpeta protegida ~/Desktop e intenta escribir el archivo de registro en la carpeta protegida ~/Desktop/. Por lo tanto, un error de lectura.

Curiosamente, ambos archivos de registro se crean, aunque el primero (cronjob2.log) está vacío.

5 votos

¿Añado cron o crontab a Seguridad y privacidad > Privacidad > ¿Aplicaciones/ejecutivos de acceso total al disco?

7 votos

@Tian Tienes que añadir cron a este grupo

6 votos

No pude acceder a /usr/sbin cuando se utiliza la GUI para añadir cron . Además, el problema persistía cuando mi script y log residían en el Escritorio

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