sudo make install: permissão negada

sudo make install: permissão negada

Tenho uma pergunta muito irritante sobre a construção a partir de fontes. Há muito tempo procuro uma resposta e não consigo encontrar em lugar nenhum... Já compilei software de fontes antes e isso me deixou perplexo.

Então, estou tentando instalar o python 2.7.2 a partir das fontes. Eu posso fazer um sucesso ./configure, também makeparece funcionar bem. Mas quando faço isso sudo make install, recebo vários erros ...

Primeiro, sudo make installme dá isso:

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.

Então eu fiz chmod +rx Makefile*. Para nenhum proveito.

Então, sudo ls .diz

ls: cannot access .: Permission denied

Então ls -d .diz que as permissões sãodrwxr-x---

Então, como medida desesperada, chmod +rx .. Isso me deu:

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

Então, algum progresso... O que está acontecendo aqui? Parece algum tipo de problema de permissão. Presumi que sudo seria a solução, mas claramente há algo mais acontecendo aqui... Eu tentei, sudo -smas recebo esses problemas de permissão novamente...

Estou usando o Ubuntu 10.04LTS.

Responder1

Acredito que o que você está atingindo é na verdade uma política NFS chamada "root squash". Não é incomum que os usuários precisem de root em um host específico, mas você não quer que eles tenham o mesmo tipo de privilégios nos volumes NFS compartilhados. Assim, conceder acesso root local não permite que um usuário execute qualquer volume NFS montado e acesse/modifique os arquivos de outros usuários - o servidor NFS mapeará o uid do root de 0 a 65534 ( nobody), e é por isso que você pode nem liste o diretório no seu exemplo.

Então, isso deixa você com algumas opções:

  1. Você pode tentar tornar todos os arquivos acessíveis nobodyem sua compilação fazendo um chmod -R o+rw .diretório de nível superior, dando a "outros" permissões de leitura/gravação em seus arquivos (pode ou não ser suficiente - por exemplo, você pode precisar de o+xdiretórios se é preciso procurá-los).
  2. Se você tiver acesso ao /etc/exportsarquivo do servidor NFS, poderá desabilitar o root squash (talvez não seja uma boa ideia).
  3. Basta criar um diretório local como /usr/local/src, /usr/src, /tmpetc, ou apenas criar seu próprio diretório local (você pode até torná-lo propriedade do seu usuário), como /scratch/myuser. Esta é provavelmente a opção que causa menos dores de cabeça.

Responder2

Se você estiver usando sshfs, monte usando -o allow_othera opção

$ sudo sshfs -o allow_other hostfolder localfolder

antes disso você tem que user_allow_otherdefinir/etc/fuse.conf

Responder3

Tente mostrar isso ao seu usuário. Ou seja, use "sudo chown user ./*" (substituindo user pelo seu nome de usuário) quando estiver no diretório e isso mudará o proprietário de todos os arquivos no diretório para você.

informação relacionada