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.
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 :
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
Le bac à sable vous empêche d'écrire la crontab. Si vous exécutez la commande crontab…
screen
: déconnectez-vous de screen
ou utilisez la réponse de @Pierz.J'ai dû ajouter cron
à Préférences Système> Sécurité et confidentialité> Accès complet au disque
/usr/sbin/cron
. (Vous pouvez vérifier votre cron
emplacement exécutable en exécutant $ which cron
dans le terminal)]