Я хочу установить файлы в /Library/Python/2.7/site-packages на OS-X 10.8. Я вошел в систему как администратор, но все равно получаю сообщение об ошибке «Отказано в доступе». Та же ошибка, когда я пытаюсь создать каталог там из терминала. У меня явно нет разрешения на запись в корневую область. Как это исправить?
1 ответ
Вход в MacOSX с правами администратора позволяет вам выполнять определенные привилегированные команды, но не делает вас суперпользователем (ID пользователя 0 - суперпользователь). Каталог Python и большинство всего, что находится в /Library, принадлежит и доступно для записи только пользователю 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, вероятно, в порядке. Или добавьте символическую ссылку на пакеты сайтов в другое место, доступное для записи пользователем, чтобы ваши обновления были четко отделены от файлов, поддерживаемых системой.
Вы можете использовать "sudo bash" для запуска сеанса оболочки от имени пользователя root. Это действительно очень опасная вещь, потому что root может делать практически все, и даже не требует проверки работоспособности перед удалением всей вашей системы, например, «rm -rf. /*» (Опечатка для каждого старого администратора unix). сделал хотя бы один раз).