OSX mojave:“crontab:tmp/tmp.X:不允许操作”

Joa*_*cao 21 mac-osx update cron file-permissions

将我的 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/
Run Code Online (Sandbox Code Playgroud)

与那台计算机不同,我在下面尝试进行的任何 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 中的首选方法,但这不是这个问题的重点。

Fre*_*ddy 19

简短的回答:

转到系统偏好设置 > 安全性和隐私,并为终端提供全磁盘访问权限。

漫长的答案:

  1. 拉下 Apple 菜单并选择“系统偏好设置”
  2. 选择“安全和隐私”控制面板
  3. 现在选择“隐私”选项卡,然后从左侧菜单中选择“完整磁盘访问”
  4. 单击首选项面板左下角的锁图标并使用管理员级别登录进行身份验证
  5. 现在单击 [+] 加号按钮添加具有完整磁盘访问权限的应用程序
  6. 导航到 /Applications/Utilities/ 文件夹并选择“终端”以授予具有完整磁盘访问权限的终端
  7. 重新启动终端,“不允许操作”错误消息将消失


Pie*_*erz 7

另一种不需要任何权限更改的方法,它依赖于sshd已经为“完整磁盘访问”启用的事实,是通过 ssh 执行 crontab 更新到本地主机(前提是在共享系统首选项中启用了远程登录/ssh),例如:

ssh localhost
crontab -e
Run Code Online (Sandbox Code Playgroud)


小智 7

我不得不添加cron系统偏好设置 > 安全和隐私 > 全盘访问

  1. 查找隐私首选项:CMD + Space,“priv”

  1. 解锁全盘访问的首选项并打开选择菜单

  1. 选择菜单中CMD + Shift + 。取消隐藏隐藏文件并导航到/usr/sbin/cron. (您可以cron通过$ which cron在终端中运行来检查您的可执行位置)

]