Como identifico o usuário que está tentando criar um arquivo?

1

Eu tenho um script PHP que está tentando criar um arquivo, mas ele não pode por causa de permissões. Gostaria de identificar qual usuário o sistema vê como aquele que está solicitando a criação do arquivo. Eu gostaria de saber isso de uma maneira geral, não apenas uma solução específica sobre como permitir que arquivos sejam criados pelo PHP.

    
por Gn13l 05.02.2014 / 18:06

1 resposta

1

A menos que o script esteja mudando, é o UID, que requer que o script tenha o bit SUID definido em suas permissões, ele está sendo executado como o usuário que o invocou. Se este for um script executado por um servidor da Web que geralmente seria o ID do usuário do servidor da web.

Existem várias maneiras de um script determinar o que é uid. Se a linguagem de script tiver funções getuid e geteuid disponíveis, elas poderão ser usadas para obter o UID real e o UID efetivo. Caso contrário, executar o comando id do script (diretamente ou como um comando shell retornará o UID em uso.

As permissões de criação de arquivos são controladas pelo diretório. O UID precisa executar o acesso a todos os diretórios no caminho. Para criar o arquivo, o UID precisa gravar e executar o acesso ao diretório contido. Para listar o arquivo criado, o UID precisa ler e executar o acesso ao diretório. Permissões podem ser obtidas por usuário, grupo ou outras permissões.

A última abordagem seria alterar as permissões no diretório para 777 ou 773 e executar o script. Se o script não estiver bloqueado pelas permissões de um diretório no caminho, o arquivo terá o UID do script como o proprietário. Certifique-se de restaurar as permissões originais após o teste.

Eu geralmente uso o acesso de grupo para permitir que o servidor da web escreva diretórios. Isso é feito configurando o grupo nos diretórios para o ID do grupo no qual o servidor da Web (script) é executado.

    
por 05.02.2014 / 18:25