将我的 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
答案2
我不得不cron
补充系统偏好设置 > 安全和隐私 > 完全磁盘访问
- 查找隐私偏好:CMD + 空格, “私人”
- 解锁偏好设置完全磁盘访问并打开选择菜单
- 在选择菜单按CMD + Shift + 。取消隐藏文件并导航到
/usr/sbin/cron
。(您可以cron
通过$ which cron
在终端中运行来检查可执行文件的位置)
]
答案3
另一种不需要任何权限更改的方法是通过 ssh 对 localhost 执行 crontab 更新(前提是在共享系统首选项中启用了远程登录/ssh),这取决于sshd
已经启用了“完全磁盘访问”(或者可以按照 @Soid 所述启用)的事实,例如:
ssh localhost
crontab -e
答案4
沙盒阻止您编写 crontab。如果您运行 crontab 命令…
- 使用本地机器上的终端:系统偏好设置>安全和隐私,并授予终端完全磁盘访问权限
- 使用第三方终端应用程序:系统偏好设置>安全和隐私,并授予第三方终端应用程序完全磁盘访问权限
- 通过另一台机器的 ssh:它应该可以工作(参见@Pierz 的回答)
- 从
screen
命令:要么退出screen
,要么使用@Pierz 的答案。