Назад | Перейти на главную страницу

OSX mojave: «crontab: tmp / tmp.X: операция не разрешена»

После обновления OSX до Mojave кажется, что я больше не могу редактировать crontab. Любая попытка сделать это приведет к появлению сообщения об ошибке в заголовке этого вопроса.

Я отслеживал crontab до /private/var/at и разрешения такие же, как у другого компьютера, на котором запущен 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, но вопрос не в этом.

В короткая ответ:

Перейдите в Системные настройки> Безопасность и конфиденциальность и предоставьте Терминалу полный доступ к диску.

В длинный ответ:

  1. Откройте меню Apple и выберите «Системные настройки».
  2. Выберите панель управления «Безопасность и конфиденциальность».
  3. Теперь выберите вкладку «Конфиденциальность», затем в левом меню выберите «Полный доступ к диску».
  4. Щелкните значок замка в нижнем левом углу панели предпочтений и войдите в систему с учетной записью уровня администратора.
  5. Теперь нажмите кнопку [+] плюс, чтобы добавить приложение с полным доступом к диску.
  6. Перейдите в папку / Applications / Utilities / и выберите «Терминал», чтобы предоставить Терминалу права полного доступа к диску.
  7. Перезапустите терминал, сообщения об ошибках «Операция запрещена» исчезнут.

Другой подход, не требующий изменения разрешений, основанный на том факте, что sshd уже включен для `` Полный доступ к диску '', заключается в выполнении обновлений crontab через ssh на localhost (при условии, что удаленный вход / ssh включен в настройках системы общего доступа), например:

ssh localhost
crontab -e

Мне пришлось добавить cron к Системные настройки> Безопасность и конфиденциальность> Полный доступ к диску

  1. Найдите настройки конфиденциальности: CMD + пробел, "Priv"

  1. Разблокировать настройки для Полный доступ к диску и открыть меню выбора

  1. В меню выбора Нажмите CMD + Shift +. чтобы показать скрытые файлы и перейти к /usr/sbin/cron. (Вы можете проверить свой cron исполняемый файл, запустив $ which cron в терминале)

]

Песочница мешает вам написать crontab. Если вы запустите команду crontab…

  • используя Терминал на локальном компьютере: Системные настройки> Безопасность и конфиденциальность и предоставить терминалу полный доступ к диску.
  • с помощью стороннего терминального приложения: Системные настройки> Безопасность и конфиденциальность и предоставить полный доступ к диску стороннему терминальному приложению
  • через ssh с другой машины: он должен работать (см. ответ @Pierz)
  • из screen команда: либо выйти из screen или используйте ответ @Pierz.