多用户 Mac 上 Watchman 的 Homebrew 权限

问题描述 投票:0回答:1

我的 Macbook Pro 上有两名用户运行 macOS Mojave 10.14.2 - 一名用于工作,另一名用于个人。

我在安装 React Native cli 和 watchman 的两个用户上设置了 React Native:

brew install watchman

sudo npm install -g react-native-cli

这有效,我能够使用

npm start
运行本地服务器。

我尝试对其他用户执行相同的操作,但由于权限问题无法使用自制软件安装 watchman。

我运行了以下命令:

sudo chown -R $(whoami):admin $(brew --prefix)/*

问题就解决了。我再次能够运行本地开发服务器。


除了现在当我回到其他用户时,我无法再次运行服务器。

运行时出现以下错误

npm start

Loading dependency graph...libc++abi.dylib: terminating with uncaught exception of type std::__1::system_error: open: /usr/local/var/run/watchman/yev-state: Permission denied

Watchman:  watchman --no-pretty get-sockname returned with exit code=null, signal=SIGABRT, stderr= libc++abi.dylib: terminating with uncaught exception of type std::__1::system_error: open: /usr/local/var/run/watchman/yev-state: Permission denied

我尝试再次运行

sudo chown -R $(whoami):admin $(brew --prefix)/*
,但这次没有修复它。

我还查找了如何为多用户 Mac 配置 Homebrew,并找到了这篇短文

我创建了一个名为“brew”的用户组,向其中添加了我的工作用户和个人用户,并运行了以下命令:

sudo chgrp -R brew $(brew --prefix)/*

sudo chmod -R g+w $(brew --prefix)/*

仍然没有骰子。

我无法在两个用户上自由使用自制程序或运行开发服务器(由于监视权限错误)。每次更改用户时,我都必须“修复”权限问题。

macos react-native permissions homebrew watchman
1个回答
60
投票

/usr/local/var/run/watchman
目录需要拥有权限
2777
,以便任何用户都可以在其中创建自己的状态目录:

sudo chmod 2777 /usr/local/var/run/watchman

此外,watchman 还会执行一些健全性检查,以查看状态目录是否看起来可能具有妥协的权限;我怀疑你非常广泛的递归

chmod
chown
调用正在触发这一点,所以我建议这是一个非常安全但具有破坏性的事情,假设其他用户有一个正在工作的看守人:

sudo rm -rf /usr/local/var/run/watchman/*

编辑:(请参阅下面艾伦的回答评论)

在 M* Mac 上,自制程序不会将内容放入

/usr/local
中,而是将它们放入
/opt/homebrew
中。因此 M1/2/3 Mac 的正确命令是:

sudo chmod 2777 /opt/homebrew/var/run/watchman

sudo rm -rf /opt/homebrew/var/run/watchman/*
© www.soinside.com 2019 - 2024. All rights reserved.