web-dev-qa-db-fra.com

OSX mojave: "crontab: tmp / tmp.X: opération non autorisée"

Après la mise à jour de mon OSX vers Mojave, il semble que je ne puisse plus modifier ma crontab. Toute tentative de le faire entraîne le message d'erreur sur le titre de cette question.

J'ai suivi crontab pour /private/var/at et les autorisations sont les mêmes qu'un autre ordinateur exécutant El Capitan:

/private/var/at$ ls -laO
total 0
drwxr-xr-x   8 daemon  wheel  -           256B Feb 18 16:47 ./
drwxr-xr-x  26 root    wheel  sunlnk      832B Feb 18 16:51 ../
-rw-r--r--   1 root    wheel  -             0B Aug 22 22:11 at.deny
-rw-r--r--   1 root    wheel  compressed    6B Aug 17  2018 cron.deny
drwxr-xr-x   2 daemon  wheel  -            64B Aug 17  2018 jobs/
drwxr-xr-x   2 daemon  wheel  -            64B Aug 22 22:11 spool/
drwx------   4 root    wheel  -           128B Nov 22 12:46 tabs/
drwx------   2 root    wheel  -            64B Feb 18 15:04 tmp/

/private/var$ ls -laOd at
drwxr-xr-x  8 daemon  wheel  -  256B Feb 18 16:47 at/

/private$ ls -laOd var
drwxr-xr-x  26 root  wheel  sunlnk  832B Feb 18 16:51 var/

Contrairement à cet ordinateur, tout changement de Sudo que j'essaie de faire ci-dessous /private/var/at (par exemple. Sudo touch test) obtient "Opération non autorisée". Sur /private/var et au-dessus, je suis capable de changer n'importe quoi Sudo (comme dans le type limité et évident de changements que j'ai testé à l'intérieur /private/var/at, pas n'importe quoi).

Quelque chose m'empêche de modifier le contenu de /private/var/at et je pense que c'est ce qui provoque le message d'erreur crontab car crontab n'est pas en mesure d'écrire dans /private/var/at/tmp et créez le fichier crontab tmp qui est signalé dans le message d'erreur.

Je sais que crontab n'est pas la méthode préférée dans OSX mais ce n'est pas le but de cette question.

11
Joao Encarnacao

La réponse courte :

Accédez à Préférences Système> Sécurité et confidentialité et accordez un accès disque complet au terminal.

La réponse longue :

  1. Déroulez le menu Apple et choisissez "Préférences Système"
  2. Choisissez le panneau de configuration "Sécurité et confidentialité"
  3. Sélectionnez maintenant l'onglet "Confidentialité", puis dans le menu de gauche, sélectionnez "Accès complet au disque"
  4. Cliquez sur l'icône de verrouillage dans le coin inférieur gauche du panneau de préférences et authentifiez-vous avec une connexion de niveau administrateur
  5. Maintenant, cliquez sur le bouton [+] plus pour ajouter une application avec un accès complet au disque
  6. Accédez au dossier/Applications/Utilitaires/et choisissez "Terminal" pour accorder à Terminal des privilèges d'accès au disque complet
  7. Relancez le terminal, les messages d'erreur "Opération non autorisée" disparaîtront
11
Freddy

Une autre approche sans nécessiter aucune modification d'autorisation, qui repose sur le fait que sshd est déjà activé pour "Full Disk Access", consiste à effectuer les mises à jour crontab via ssh vers localhost (à condition que la connexion à distance/ssh soit activée dans le partage Préférences système), par exemple:

ssh localhost
crontab -e
6
Pierz

Le bac à sable vous empêche d'écrire la crontab. Si vous exécutez la commande crontab…

  • en utilisant Terminal sur la machine locale: Préférences Système> Sécurité et confidentialité et donner un accès complet au disque au Terminal
  • en utilisant une application de terminal tierce: Préférences Système> Sécurité et confidentialité et donner un accès complet au disque à une application de terminal tierce
  • via ssh depuis une autre machine: cela devrait fonctionner (voir la réponse de @Pierz)
  • à partir de la commande screen: déconnectez-vous de screen ou utilisez la réponse de @Pierz.
2
Ortwin Gentz

J'ai dû ajouter cron à Préférences Système> Sécurité et confidentialité> Accès complet au disque

  1. Trouver les préférences de confidentialité: CMD + Space, "priv"

  1. Déverrouillez les préférences pour Accès complet au disque et ouvrez le menu de sélection

  1. Dans le menu de sélection , appuyez sur CMD + Maj +. pour afficher les fichiers cachés et accédez à /usr/sbin/cron. (Vous pouvez vérifier votre cron emplacement exécutable en exécutant $ which cron dans le terminal)

]

0
Petr Javorik