Arquivos criados por 'make' não estão recebendo permissões executáveis por padrão

2

Estou tentando criar um projeto e, quando uso o comando make , recebo os seguintes erros:

/bin/sh: line 4: .deps/ipset_bitmap_ipmac.Tpo: Permission denied
make[2]: *** [ipset_bitmap_ipmac.lo] Error 126

Este arquivo, .deps / ipset_bitmap_ipmac.Tpo, foi criado por make durante a construção com as seguintes permissões: -rw-r - r--, observe que não há x. Mas então make quer executar o arquivo imediatamente, o que falha.

Se eu for ao arquivo e adicionar permissões executáveis manualmente, a compilação continuará além desse ponto se eu executar novamente o make . Exceto que o comando make irá falhar novamente quando chegar ao próximo arquivo. A única opção que tenho é manter chmod ing cada novo arquivo.

A minha pergunta é: por que make está criando esses novos arquivos sem + x?

Notas laterais: Estou no CentOS5, umask -S retornos: u = rwx, g = rx, o = rx, sudo não ajuda em nada.

    
por Display Name 05.04.2013 / 11:10

2 respostas

3

Com um nome como .deps/ipset_bitmap_ipmac.Tpo , é bem provável que o arquivo não tenha sido executado.

O que está acontecendo aqui é que há uma linha no Makefile que parece

$(SOME_VARIABLE) .deps/ipset_bitmap_ipmac.Tpo

ou mais provável

$(SOME_VARIABLE) $(ANOTHER_VARIABLE)

em que o valor de ANOTHER_VARIABLE é .deps/ipset_bitmap_ipmac.Tpo ou alguma variante. Devido a um bug no makefile, ou no programa que o gerou, ou porque o seu computador possui uma configuração não suportada, a variável SOME_VARIABLE (que deveria ter sido o nome do programa) não foi definida.

Mais ajuda pode ser fornecida se você nos disser qual projeto você está tentando construir e exatamente onde você conseguiu, como você desempacotou, como você o configurou, qual comando de compilação você executou.

    
por 05.04.2013 / 23:49
1

No seu caso, acho que poderia ser outra camada de permissão.

Eu baixei ipset 6.17 e ./configure e make foram executados corretamente.

Como make está chamando / bin / sh, não há necessidade de permissão de execução, e você pode testar isso da seguinte maneira.

Crie um script sem a permissão x e chame-o através do seu shell

nicolas@~> cat script
#!/bin/bash

echo "teste"

nicolas@~> ls -l script
-rw-r--r-- 1 nicolas users 26 Abr  5 07:56 script

nicolas@~> sh script
teste

Algumas perguntas:

O selinux está ativado (verifique com getenforce )?

Quais são as permissões dentro do diretório de fontes ipset extraídas?

Qual é a propriedade dos arquivos dentro do diretório .deps?

Você executou config e make com sudo ou su -s ?

    
por 05.04.2013 / 13:18