警告:路径/usr/local/bin中的权限模式为040777,可被所有用户写入,存在安全风险。

187

每次我运行这个命令 rails server

警告:路径变量中的 /usr/local/bin 目录权限是不安全的,模式为 040777

我在这里查找了解决方案,他们建议输入:chmod go-w /usr/local/bin

但是我得到了这个错误:

chmod: 无法更改 /usr/local/bin 文件的权限:Operation not permitted

顺便说一下,我正在使用 OS X。


7
我在安装T-Mobile宽带USB dongle的软件后也遇到了同样的问题,不知道这是否与它有关。你是不是也在使用dongle? - Peter Nixey
5
安装了维珍(澳大利亚)手机 USB 接收器后,我明白了。 - nocache
3
哇,真的吗?谢谢你提供这个信息!我也注意到,在尝试运行 T-Mobile dongle 软件后,我的许可权限被破坏了。 - Oto Brglez
我正在使用AU(日本运营商)的LTE dongle,这也需要一些命令行技巧才能使其工作... - Nicolas Miari
13个回答

304

您需要具有root访问权限才能执行此操作。如果您不是管理员用户,请以管理员身份登录。然后使用“sudo”更改权限:

sudo chmod go-w /usr/local/bin

很明显,这意味着你不能再通过除'sudo'以外的方式在/usr/local/bin中安装软件包,但实际上你可能也不应该这么做。


1
我想我应该去上吊了。自从我从Windows切换到MAC以来,一直在折腾我的MAC。试图将其变成Windows笔记本电脑。我可能做了些愚蠢的事情。 - Xandman
1
谢谢你的评论,Jonathan。你给了我一个检查权限的想法。我使用磁盘工具修复了权限,当我运行命令:sudo chmod go-w /usr/local/bin时,它没有报错。 - Xandman
我尝试了这个,但是当我执行 thin start 命令时,它仍然给我那个消息。我错过了什么吗?顺便说一下,chmod 命令似乎已经成功运行了。我甚至在提示时输入了我的管理员密码,它也通过了。我错过了什么吗?我需要重新启动电脑吗?我已经停止并重新启动了服务器。 - marcamillion
@marcamillion:很难说你的机器出了什么问题。当然,你应该查看/usr/local/bin上的权限,如果有的话,也许还要查看ACL值。 - Jonathan Leffler
我在安装一个带有无线宽带 dongle 的软件后开始收到相同的警告。感谢您的帖子/答案。 - Shyam Habarakada
显示剩余5条评论

65

我在MacOSX 10.6.8上遇到了同样的错误 - 看起来Ruby会检查路径中是否有任何目录(包括父目录)是全局可写的。在我的情况下,由于没有任何程序创建/usr/local/bin目录,因此需要手动创建它。

所以我执行了以下命令:

sudo chmod 775 /usr/local

为了消除警告。

这里的问题是,MacOS中是否有任何非root:wheel进程需要在/usr/local中创建任何内容?


11
是的,775 => 根用户(7) 组用户(7) 其他用户(5),7 => 读取(4) + 写入(2) + 执行(1),5 => 读取(4) + 执行(1) - crizCraig

11
尝试: sudo chmod go-w /usr/local/bin /usr/local/bin目录属于root(即管理员)帐户所有,因此即使您可以向其写入,也不能更改其权限。 sudo命令意味着“以root身份运行以下命令”,并且功能与在系统偏好设置对话框中单击锁定图标非常相似。

7

我在OSX中遇到了同样的问题。可以通过运行磁盘工具来修复权限来解决它。我同意Peter Nixey的观点:在我的情况下,当我的3G dongle安装或重新安装其驱动程序时会引起这个问题。之后修复权限可以解决这个问题。


7
我正在使用Mountain Lion操作系统。我所做的是查找/usr/local并获取信息。在其中有共享和权限设置。确保只有用户和管理员拥有读写权限,其他人只能有读取权限即可。这解决了我的问题。
通常运行磁盘工具并修复权限也会很有帮助。

4

我也遇到了同样的问题,显然我的/usr/local文件夹是全局可写的,所以我将其修改为755。

# chmod 755 /usr/local

同时,似乎我使用过的华为移动蛋(dongle)也在 /usr/local 中安装了可被全局写入的目录。


4
您需要运行。
sudo chmod o-w -R /usr/local 

6
对于我来说,-R 必须直接跟在 chmod 命令后面: sudo chmod -R o-w /usr/local/ - bormat

3
在 macOS 中,在终端中运行以下命令。
sudo chmod -R o-w /usr/local/bin

1
经过长时间的努力,最终这个命令对我起作用了。谢谢... 对于上述错误,对于 M1 芯片的 MacBook Pro 来说,这个命令已经足够了。 - Naresh

3

如果你正在运行OSX并经常遇到这种情况,考虑使用内置的OSX权限修复工具是个好主意。如果你没有改变目录的模式,那么其他东西可能会改变它们的权限,而且其他目录也可能有过于宽松的权限 - 这个工具将把它们全部重置为出厂默认值,这是一个很好的安全建议。在Apple stackextange上有一篇关于这个过程的指南


2

我也遇到了类似的问题。我在Ubuntu 12上使用KDE,在我的家目录中玩耍时,不小心通过右键单击我的家目录,然后选择属性,将组和其他用户的权限更改为“可以查看和修改内容”,然后就忘记了这件事。

我的警告是:

warning: Insecure world writable dir /home/my_home_folder in PATH, mode 040777

在我的情况下,是主目录出了问题。我撤销了权限修改并停止在运行Rails服务器或运行测试的rake任务时收到警告。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接