Permissão negada para ler o arquivo de propriedade de www-data from script

0

Estou tentando copiar um arquivo de um local e salvá-lo com outro nome usando um script Python, mas estou recebendo este erro:

    with open(src, 'rb') as fsrc:
IOError: [Errno 13] Permission denied: '/tmp/nginx-files/0000000007'

que é bastante óbvio que o script que executa a operação não tem permissões para fazer isso.

Aqui estão o usuário & grupo do script:

-rw-rw-r-- 1 www-data www-data 1504 Jun  3 16:27 main.py

Utilizador e & grupo do arquivo:

-rw-------  1 www-data www-data 40448 Jun  3 16:19 0000000007

Utilizador e & grupo do diretório no qual o arquivo reside:

drwxrwxrwx  2 www-data www-data  4096 Jun  3 16:56 nginx-files

Esses arquivos são gerados diretamente por nginx

Eu corro meu script da minha própria conta de usuário usando

python main.py

Como posso permitir que meu script leia esse arquivo e evite o erro de permissão?

    
por anekix 03.06.2018 / 13:37

1 resposta

4

Não é o proprietário do script que importa ao decidir o que é permitido fazer, mas o usuário que executa o script.

Em sua pergunta / comentário, parece que você o executa com sua própria conta de usuário, não www-data , para que o script possa fazer exatamente o que você, como usuário, pode fazer.

-rw-------  1 www-data www-data 40448 Jun  3 16:19 0000000007

Este arquivo é legível e gravável pelo seu proprietário, www-data . Um script que está sendo executado em sua conta de usuário, obviamente, não pode acessá-lo, daí a permissão Erro no seu script Python.

Então, vejo duas maneiras de resolver isso:

  • Execute o script como www-data . Isso pode ser feito usando sudo , se sua conta tiver direitos de administrador. Caso contrário, será necessária alguma configuração especial para permitir que você execute o material como www-data . Se você tem sudo direitos, torna-se tão simples como:

    sudo -u www-data python main.py
    
  • Abra as permissões do arquivo 0000000007 para que ele seja legível e gravável por seu grupo, não apenas o proprietário, mas também nem todos:

    sudo chmod g+rw 0000000007
    

    Agora, certifique-se de que seu próprio usuário também seja membro do grupo www-data , para que possa lucrar com essas permissões de grupo:

    sudo adduser YOUR_USERNAME www-data
    

    Você terá que sair e voltar depois disso para permitir que as alterações de grupo de sua conta de usuário entrem em vigor.

    Agora você deve poder acessar o arquivo e qualquer script que você executar na sua conta.

por Byte Commander 03.06.2018 / 14:06