3 votes

cron n'a pas les autorisations nécessaires pour exécuter un script.

J'ai un script (qui sauvegarde, à l'aide de rclone ) que je peux exécuter depuis le Terminal ou Automator après chmod a+x sans aucun problème de permissions.

Cependant, lorsque ce script est exécuté dans cron (ou launchd ), stderr montre "/bin/bash: /Users/joshua/script.sh: Operation not permitted."

Je suis plus familier avec Ubuntu, où cette approche fonctionne bien.

Que dois-je faire ici ?

Edit : La question ci-dessus reste pertinente, mais notez que launchd est le substitut privilégié de cron pour Mac, tandis que Automator est disponible pour la planification au niveau des applications.

3voto

Oskar Points 1242

Il semble que les deux programmes auxquels il faut donner un accès complet sont :

cron
terminal.app

Voir rsync dans cron sur Catalina ne fonctionne plus

0 votes

Merci. Mais (1) j'utilise rclone, pas rsync. Est-ce que la même chose s'applique à rclone ? (2) Ne semble-t-il pas, d'après l'erreur, que le programme qui échoue sur les erreurs d'autorisation est bash plutôt que rclone ? (3) Pourquoi le terminal.app ? C'est un processus d'arrière-plan.

1 votes

Ajoutez cron, ça devrait être tout puisque votre terminal fonctionne. @JoshuaFox

0voto

Joshua Fox Points 545

La solution qui a fonctionné pour moi est d'utiliser Automator, et non cron, comme dans cet exemple .

-2voto

Udhy Points 5964

Il y a deux solutions que vous pouvez essayer. Je recommande la première, mais la seconde peut également vous aider, sans être une solution idéale.

Première solution : En supposant que vous êtes sous MacOS supérieur à 10.12.

  1. Choisir ' Préférences du système '
  2. Choisir " Sécurité et confidentialité "Panneau de contrôle
  3. Sélectionnez maintenant l'option " Vie privée "puis dans le menu de gauche, sélectionnez " Accès au disque complet "
  4. Cliquez sur l'icône de verrouillage dans le coin inférieur gauche du panneau de préférences et authentifiez-vous avec un login de niveau administrateur.
  5. Cliquez maintenant sur le bouton [+] plus pour ajouter une application avec accès complet au disque.

enter image description here

  1. Naviguez vers le dossier /Applications/Utilitaires/ et choisissez "Terminal" pour accorder les privilèges de Terminal avec accès complet au disque.

enter image description here

  1. Relancez le terminal, les messages d'erreur "Opération non autorisée" auront disparu.

Deuxième solution (je ne la recommande pas personnellement)

  1. Redémarrez votre Mac en mode de récupération en redémarrant votre ordinateur et en maintenant enfoncée la touche Command+R jusqu'à ce que le logo Apple apparaisse sur votre écran.

  2. Cliquez sur Utilitaires > Terminal .

  3. Dans la fenêtre du Terminal, tapez :

      csrutil disable
  4. Redémarrez votre Mac.

0 votes

Merci, mais le programme qui a besoin de permissions semble être cron, pas Terminal. En fait, Terminal avait déjà ces permissions et le script s'exécutait à partir de Terminal. J'ai essayé vos instructions, et j'ai obtenu la même erreur de la part de cron. De plus, je pense que la permission nécessaire est d'exécuter un script, et non un accès complet au disque. Comment puis-je donner les permissions nécessaires ici ?

0 votes

Vous devez ajouter cron dans "Préférences système > Sécurité et confidentialité > Accès complet au disque". Je l'ai fait en exécutant open /usr/bin/ ce qui a ouvert une fenêtre du Finder qui m'a permis de glisser/déposer facilement l'image de l'ordinateur. cron dans la liste "Accès complet au disque".

0 votes

Il n'y a pas cron dans /usr/bin. ls /usr/bin/cron* montre ` /usr/bin/crontab seulement -- donc c'est celui qui devrait obtenir des autorisations ?

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