como o mktemp cria arquivos temporários em um diretório sem permissões de gravação no Ubuntu?

1

Eu notei que no Ubuntu, o mktemp permite que um usuário crie arquivos temporários em um diretório, mesmo que as permissões de gravação não sejam permitidas para esse usuário. Assim, esperei que as permissões no mktemp lessem algo assim, dando ao usuário privilégios de root temporários durante a execução:

-rwsr-xr-x 1 root root   35392 Nov 19  2012 mktemp

mas eles lêem algo assim:

-rwxr-xr-x 1 root root   35392 Nov 19  2012 mktemp

Onde eu pensei que havia um 's', existe um 'x', o que significa que o mktemp não roda com privilégios de root. Como o mktemp pode criar arquivos temporários em um diretório sem ter permissão para isso?

    
por MYV 24.05.2013 / 21:44

1 resposta

7

mktemp , por padrão, cria um diretório temporário em /tmp , que por padrão é gravável por qualquer pessoa; se você passar a opção --tmpdir para mktemp (ou definir a variável de ambiente TMPDIR ), ela tentará criar um diretório temporário no diretório fornecido pelo argumento da opção, e será falhará a menos que você tenha permissão de gravação no diretório fornecido. Por exemplo:

[me@box] $ mktemp
/tmp/tmp.sL1g7rRGQv
[me@box] $ mktemp --tmpdir=/root
mktemp: failed to create file via template '/tmp.XXXXXXXXXXX': Permission denied

Se você está fazendo, por exemplo, mktemp --tmpdir=/root como usuário não-root e não falha, então algo muito estranho está acontecendo. Tem certeza de que é isso que você está vendo?

    
por 24.05.2013 / 21:54