sudo make install: доступ запрещен

sudo make install: доступ запрещен

У меня есть очень раздражающий вопрос о сборке из исходников. Я долго искал ответ, но нигде не могу найти... Я уже компилировал ПО из исходников, и это меня просто озадачило.

Итак, я пытаюсь установить python 2.7.2 из исходников. Я могу сделать это успешно ./configure, также, makeкажется, работает нормально. Но когда я это делаю sudo make install, я получаю множество ошибок...

Во-первых, sudo make installэто дает мне следующее:

make: stat: GNUmakefile: Permission denied
make: stat: makefile: Permission denied
make: stat: Makefile: Permission denied
make: stat: install: Permission denied
make: *** No rule to make target `install'. Stop.

Я так и сделал chmod +rx Makefile*. Но безрезультатно.

Затем, sudo ls .говорит

ls: cannot access .: Permission denied

Затем ls -d .говорит, что разрешения естьdrwxr-x---

Тогда, как отчаянная мера, chmod +rx .. Это дало мне:

make: stat: Modules/config.c.in: Permission denied
make: *** No rule to make target `Modules/config.c.in', needed by `Makefile'. Stop.

Ну, какой-то прогресс... Что здесь происходит? Похоже на какую-то проблему с правами доступа. Я предполагал, что sudo будет решением, но, очевидно, здесь что-то еще... Я пробовал, sudo -sно у меня снова возникают эти проблемы с правами доступа...

Я использую Ubuntu 10.04LTS.

решение1

Я полагаю, что вы на самом деле сталкиваетесь с политикой NFS, которая называется "root squash". Пользователям нередко требуется root на определенном хосте, но вы не хотите, чтобы у них были такие же привилегии на общих томах NFS. Таким образом, предоставление локального доступа root не позволяет пользователю грубо обращаться с любыми смонтированными томами NFS и получать доступ/изменять файлы других пользователей — сервер NFS сопоставит uid root с 0 до 65534 ( nobody), поэтому вы даже не можете перечислить каталог в своем примере.

Итак, у вас остается несколько вариантов:

  1. Вы можете попытаться сделать все файлы доступными nobodyв вашей сборке, создав chmod -R o+rw .каталог верхнего уровня, предоставив «другим» права на чтение/запись ваших файлов (этого может быть достаточно, а может и недостаточно — например, вам могут понадобиться o+xкаталоги, если нужно будет выполнять в них поиск).
  2. Если у вас есть доступ к файлу сервера NFS /etc/exports, то вы можете отключить root squash (возможно, это не самая лучшая идея).
  3. Просто создайте локальный каталог, например /usr/local/src, /usr/src, /tmpи т. д., или просто создайте свой собственный локальный каталог (вы даже можете сделать его владельцем вашего пользователя), например /scratch/myuser. Это, вероятно, вариант, который вызывает меньше всего головной боли.

решение2

Если вы используете sshfs, смонтируйте с помощью -o allow_otherопции

$ sudo sshfs -o allow_other hostfolder localfolder

до этого вам нужно user_allow_otherустановить/etc/fuse.conf

решение3

Попробуйте chown-ить его на своего пользователя. То есть, используйте "sudo chown user ./*" (заменив user на свое имя пользователя), находясь в каталоге, и это изменит владельца всех файлов в каталоге на вас.

Связанный контент