如何找出导致/ usr / local所有权从my-username更改为root的原因


13

homebrew用作某些Web开发应用程序的程序包管理器。为了保持brew最新状态,我update brew每两天都会跑一次,并且还会跑brew doctor。通常,这很好,brew告诉我我可以冲泡了。

但是,不时出现以下错误:

警告:/ usr / local / etc不可写。

如果您使用的不是由Homebrew管理的“ sudo make install”软件,则可能会发生这种情况。如果公式尝试将文件写入此目录,则在链接步骤期间安装将失败。

您可能应该chown/ usr / local / etc

警告:/ usr / local目录不可写。即使安装Homebrew时该目录是可写的,其他软件也可能会更改此目录的权限。已知某些版本的“机翼”“ InstantOn”组件可以执行此操作。

您可能应该将/ usr / local的所有权和权限更改回您的用户帐户。

将权限重置回我的用户名很容易。事后brew似乎还好。

但是,是什么导致这种情况发生呢?

是否有日志显示导致权限更改的原因?


3
没有日志,但是请注意,/ od / rood拥有rood是Unix标准,因此任何内置版本都可以使用。解决方案是不要将目录与软件包管理器(Homebrew)和标准Unix编译一起使用-为其中之一使用另一个目录
user151019 2015年

3
将软件添加到软件包管理器使用的相同位置是一个坏主意,更改的所有权和权限也是如此/usr/local。但是,如果您坚持要求,那么您可以make install不用sudo安装自己安装的软件包。
fd0

1
升级OS X通常会重置/ usr / local所有权和权限。
mspasov

1
@Others ah我读的是Homebrew的引文,而不是问题的内容
user151019 2015年

1
您在Mac(默认配置为安装在Mac上)上还安装了什么(手动或通过其他软件包管理器)/usr/local
2015年

Answers:


13

我遇到了同样的问题,事实证明,Sophos的自动更新应该受到指责。我通过运行找出了答案:sudo fs_usage | grep "usr/local"

花费了一段时间,但最终我看到了Sophos有用的名为“ Installation”的守护程序与/ usr / local的权限发生了混乱。

我仍在尝试解决此问题的适当方法。

编辑:我相信Sophos已经解决了这个问题,请参阅此答案的注释中的链接。看来至少对我来说是固定的!



@JoeZuntz很高兴找到!很棒,他们实际上正在推动修复。
其他

@others感谢您提供此信息。升级到10.11.1后,我能够修复所有问题,并使自制软件再次正常工作,但通常,每次去进行Brew升级时,权限都会再次更改。困扰我的是什么软件不断更改/ usr / local上的权限。
Tim X

@TimX是的,有点烂...幸运的是,看起来Sophos正在下周末(11月20日)对其进行修补。
其他


2

我只是大致了解如何获得许可小偷。这不是解决问题的方法,而是更多解决方法。

用Automator或用Hazel(文件夹操作)编写看门狗来监视此特定文件夹的方式又如何,而不是添加像Scale图像之类的功能,只需使用执行几个shell命令的shellscript:

  • 如果以任何方式更改了文件夹,只需使用快照快照权限和当前正在访问的进程ID fuser <foldername>
  • 然后您在进程表中查找进程ID(ps auxwwwwww | grep <process id>),最后
  • 用这些收集的信息给自己写一封电子邮件。

不幸的是我不是Automator sadhu,但是我发现Google有很多解决此类问题的解决方案。


0

如果使用Time Machine,则可以通过Backups.backupdb在终端中浏览来找到更改权限时的大概时间。使用ls -ld在带时间戳的文件夹,如

ls -ld /Volumes/Backup/Backups.backupdb/Mac/2015-12-25-120000/Macintosh\ HD/usr/local 

它将显示所有者和组信息。

确定更改发生的日期后,您可以找出系统上可能发生的其他更改。一种简单的技术是使用Finder的文件›查找并添加Last modified date条件。其他好的工具在findand mdfindTerminal中。


-1

这是更新系统的副作用。OS X可能会在更新过程中进行一些全面的权限“修复”,因为/ usr / local嵌套在根拥有的文件夹中。


AFAICT,升级到El Capitan是造成我问题的原因
朱塞佩

-3

您是否使用过Disk Utilityselect Macintosh HD然后运行Verify Disk Permission,然后Repair Disk Permission在需要时使用它,而不是手动进行?

现在,这不能解决您的问题,但是,这是了解自制软件何时更改权限的一个很好的“已知”起点。如果运气好的话,它可能会显示出潜在的问题。

同样new update -v对于更详细的输出,加上旧日志在此处~/Library/Logs/Homebrew如自制日志在哪里?


2
Disk Utility不会验证或修复的权限,/usr/local因为新安装的Yosemite上没有此目录。
2015年

我通过创建一个新的/usr/local属于我的东西并运行,在优胜美地上完全检验了该假设DU。没有任何/usr/local的内部DU记录。而且/usr/local仍然属于我。
2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.