无法写入 macOS 中的 /tmp 目录,无法更正权限:“不允许操作”

Ali*_*Ali 15 permissions chmod osx-el-capitan macos

macOS El Capitan (10.11) 无法安装任何软件更新或安装任何软件,因为/tmp/private/tmp文件夹似乎不可写。

运行这个:

sudo /usr/libexec/repair_packages --repair --standard-pkgs --volume /
Run Code Online (Sandbox Code Playgroud)

给我这个错误:

unable to set owner and group on "tmp" Error 1 Operation not permitted
unable to set permissions on "tmp" Error 1 Operation not permitted
Run Code Online (Sandbox Code Playgroud)

有没有办法手动删除 tmp 文件夹并重新创建它们?当我尝试重命名或删除时,/tmp或者/private/tmp我一直不允许操作。sudo chmod 1777/tmp/private/tmp文件夹上也以同样的方式失败

磁盘工具表示磁盘运行状况良好,在运行急救时未检测到任何问题。

有没有办法将tmp位置重定向到另一个可写文件夹?

小智 26

  1. 将 Mac 重新启动到恢复模式
  2. 打开顶部栏中的实用程序菜单 > 打开终端

    csrutil disable
    
    Run Code Online (Sandbox Code Playgroud)
  3. 重启

  4. 删除tmp文件夹

    sudo rm -i /tmp
    sudo rm -i /private/tmp
    
    Run Code Online (Sandbox Code Playgroud)
  5. 创建 tmp 文件夹

    sudo mkdir /private/tmp
    sudo chown root:wheel /private/tmp
    sudo chmod 1777 /private/tmp
    
    Run Code Online (Sandbox Code Playgroud)
  6. 创建符号链接

    sudo ln -s /private/tmp /tmp
    
    Run Code Online (Sandbox Code Playgroud)
  7. 运行repair_packages(您可能不需要这样做)

    sudo /usr/libexec/repair_packages --repair --standard-pkgs --volume /
    
    Run Code Online (Sandbox Code Playgroud)
  8. 重新启动回恢复模式并运行

    csrutil enable
    
    Run Code Online (Sandbox Code Playgroud)
  9. 重启


支持 Andrew Ferk 找出修复方法;将您的评论作为社区 wiki 答案提取出来,使其更具可读性。

  • 谢谢!!!我花了3天的时间把头发拉出来。一开始我不知道权限是如何变得如此混乱,但有一天我打开 Mac 看到了一系列警告、程序无法运行和无法安装任何东西。这解决了这个问题。 (2认同)

小智 5

sudo chmod 1777 /private/tmp
Run Code Online (Sandbox Code Playgroud)

为我做的。

  • ^这^就是为什么接受的答案有效,而且这个解决方案更安全!无需破坏现有目录,然后使用不同的权限重新创建它们。 (2认同)