在 os-x 10.8 上的 /Library 中创建目录和文件

在 os-x 10.8 上的 /Library 中创建目录和文件

我想在 OS-X 10.8 上将文件安装到 /Library/Python/2.7/site-packages。我以管理员身份登录,但仍然收到错误“权限被拒绝”。当我尝试从终端在那里创建目录时也出现同样的错误。我显然没有权限写入根区域。我该如何解决这个问题?

答案1

以“管理员”身份登录 MacOSX 可授予您执行某些特权命令的权限,但这并不意味着您是 root(用户 ID 0 - 超级用户)。Python 目录以及 /Library 下的大多数内容都归 root 所有且仅可由 root 写入:例如

mymac:Python kentalt$ ls -l
total 0
drwxr-xr-x  3 root  wheel  102 Jun 20  2012 2.3
drwxr-xr-x  3 root  wheel  102 Jun 20  2012 2.5
drwxr-xr-x  3 root  wheel  102 Jun 20  2012 2.6
drwxr-xr-x  3 root  wheel  102 Jun 20  2012 2.7
mymac:Python kentalt$ touch foo
touch: foo: Permission denied

管理员可以使用 sudo (以 root 用户身份执行命令)并输入以下管理员密码:

mymac:Python kentalt$ sudo touch foo
Password:
mymac: Python kentalt$ ls -l
total 0
drwxr-xr-x  3 root  wheel  102 Jun 20  2012 2.3
drwxr-xr-x  3 root  wheel  102 Jun 20  2012 2.5
drwxr-xr-x  3 root  wheel  102 Jun 20  2012 2.6
drwxr-xr-x  3 root  wheel  102 Jun 20  2012 2.7
-rw-r--r--  1 root  wheel    0 Jan 10 08:57 foo

请注意,您必须对每个这样的命令使用 sudo(如果您在短时间内运行几个这样的命令,它不会每次都要求您输入密码):

mymac:Python kentalt$ rm foo
override rw-r--r--  root/wheel for foo? y
rm: foo: Permission denied
mymac:Python kentalt$ sudo rm foo
mymac:Python kentalt$ ls
2.3 2.5 2.6 2.7

您还可以更改目录权限,以允许组或所有人写入它,而不是以 root 身份进行所有维护 - 请注意,权限更改可能会破坏某些程序,或者可能会在系统更新时恢复,尽管 Python 可能没问题。或者将 site-packages 的符号链接添加到用户可写空间中的其他位置,这样您就可以将更新与系统支持的文件明确分开。

您可以使用“sudo bash”以 root 身份启动 shell 会话。这是一件非常非常危险的事情,因为 root 几乎可以做任何事情,甚至可能不需要在删除整个系统之前进行健全性检查,例如“rm -rf . /*”(每个老 unix 管理员都至少犯过一次这样的错误)。

相关内容