sudo chown -R $USER:admin /usr/local - 恢复到 ROOT?

Mik*_*iLL 4 permissions directory-structure homebrew macos

这个问题被问/回答之前,我知道它是安全的,chown/usr/local我的管理员用户帐户,这是我对我所做的安装git使用homebrew(使用brew install git)。

sudo chown -R $USER:admin /usr/local
Run Code Online (Sandbox Code Playgroud)

现在我想知道是否应该将所有权改回root

谁拥有重要/usr/local吗?

注意:此问题面向 macOS,但也可能适用于 Unix 系统。

小智 5

让我们从一些“历史”开始。/usr/local通常用于存储未随基本操作系统安装的用户程序/数据。通常,当您使用 automake 从源代码制作程序时,它们将安装在/usr/local. 因为主操作系统本身不依赖这个目录,所以权限真的取决于管理员的偏好。

现在,我们也可以换个角度来考虑。当您拥有某个目录的用户+r+w+x权限时,这些权限仅适用于该目录的所有者。通常,用户权限高于组或所有权限,这意味着所有者/usr/local将拥有比其他帐户更高的权限。现在,如果组和/或所有权限等于或大于用户对该目录的权限,那么实际所有者是谁并不重要。

因此,您需要问自己的问题是哪些用户将使用位于 中的“东西” /usr/local,您是否关心其他用户是否可以访问相同的“东西”?您的回答可能不仅会影响拥有此目录的用户,还会影响该目录上的用户、组和所有权限。

使用 home-brew,让这个目录由管理 home-brew 软件包系统的用户拥有通常是个好主意。对于更多的共享系统,更常见的是这个目录由 root 拥有,因为即使这个目录是用户控制的,通常系统管理员也希望控制存放在这个目录中的内容。

作为参考,这里有一个库存 Linux (Ubuntu) 机器的示例,然后是库存的 Mac OS X 机器:

user@ubuntu:~$ ls -ld /usr/local
drwxr-xr-x 10 root root 4096 Sep 10  2013 /usr/local
Mac:~ user$ ls -ld /usr/local
drwxrwxr-x  12 root  admin  408 12 Apr 04:32 /usr/local/
Run Code Online (Sandbox Code Playgroud)