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.