sudo make install: permissão negada

3

Eu tenho uma pergunta muito chata sobre construir a partir de fontes. Eu procurei por uma resposta por um longo tempo e em nenhum lugar eu posso encontrar uma ... Eu compilei software de fontes antes e isso me deixou perplexo.

Portanto, estou tentando instalar o python 2.7.2 a partir de fontes. Eu posso fazer um ./configure , também make parece correr bem. Mas quando eu faço sudo make install , eu recebo uma variedade de erros ...

Primeiro, sudo make install me 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* . Sem sucesso.

Então, sudo ls . diz

ls: cannot access .: Permission denied

Em seguida, ls -d . diz que as permissões são drwxr-x---

Então, como uma 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. Eu presumi que sudo seria a solução, mas claramente há algo mais acontecendo aqui ... Eu tentei sudo -s , mas eu tenho esses problemas de permissão mais uma vez ...

Estou usando o Ubuntu 10.04LTS.

    
por Wojtek Rzepala 07.02.2012 / 18:01

3 respostas

5

Eu acredito que o que você está acertando é na verdade uma política NFS chamada "root squash". Não é incomum que os usuários precisem de raiz em um determinado host, mas você não deseja que eles tenham o mesmo tipo de privilégios nos volumes NFS compartilhados. Assim, dar acesso root local não permite que um usuário rode por cima de qualquer volume NFS montado e acesse / modifique os arquivos de outros usuários - o servidor NFS mapeará o fluxo de root de 0 a 65534 ( nobody ), que é porque você não pode nem mesmo listar 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 para nobody em sua compilação, fazendo um chmod -R o+rw . no diretório de nível superior, concedendo permissões de leitura / gravação "outros" aos seus arquivos (pode ou não ser suficiente - - por exemplo, você pode precisar de o+x diretórios se precisar pesquisá-los).
  2. Se você tiver acesso ao arquivo /etc/exports do servidor NFS, poderá desativar a raiz da raiz (talvez não seja uma ótima ideia).
  3. Basta criar um diretório local como /usr/local/src , /usr/src , /tmp etc ou apenas criar seu próprio diretório local (você pode até torná-lo de propriedade do usuário) como /scratch/myuser . Esta é provavelmente a opção que causa menos dores de cabeça.
por 08.02.2012 / 13:42
0

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

    
por 07.02.2012 / 18:22
0

Se você estiver usando sshfs, monte usando -o allow_other option

$ sudo sshfs -o allow_other hostfolder localfolder

antes disso, você precisa definir user_allow_other em /etc/fuse.conf

    
por 03.11.2014 / 12:44