После обновления OSX до Mojave, похоже, я больше не могу редактировать crontab. Любая попытка сделать это приводит к сообщению об ошибке в заголовке этого вопроса.
Я отслеживал crontab в / private / var / в
, и разрешения такие же, как у другого компьютера, на котором запущен 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/
В отличие от этого компьютера, любое изменение sudo, которое я пытаюсь сделать ниже / private / var / at
(например, sudo touch test
), получает сообщение «Операция запрещена». На / private / var
и выше я могу sudo изменить что угодно (как в ограниченном и очевидном типе изменений, которые я тестировал внутри / private / var / at
, а не ] ничего ).
Что-то мешает мне изменить содержимое / private / var / at
, и я думаю, что именно это вызывает сообщение об ошибке crontab, потому что crontab
не может писать в / private / var / at / tmp
и создайте файл tmp crontab, о котором сообщается в сообщении об ошибке.
Я знаю, что crontab не является предпочтительным методом в OSX, но вопрос не в этом.
Перейдите в Системные настройки> Безопасность и конфиденциальность и предоставьте Терминалу полный доступ к диску.
длинный ответ:
Другой подход, не требующий изменения разрешений, который основан на том, что sshd
уже включен для «Полный доступ к диску», заключается в выполнении обновлений crontab через ssh для localhost (при условии, что удаленный вход / ssh включен в настройках системы общего доступа), например:
ssh localhost
crontab -e
Песочница мешает вам от написания файла crontab. Если вы запустите команду crontab…
screen
, команда : либо выйдите из экрана
, либо используйте ответ @Pierz. Мне пришлось добавить cron
в Системные настройки> Безопасность и конфиденциальность> Полный доступ к диску
/ usr / sbin / cron
.
(Вы можете проверить расположение исполняемого файла cron
, запустив $ which cron
в терминале) ]