Bem, isso depende do que você entende por "arquivo" e de como exatamente a biblioteca o acessa. Aqui estão algumas abordagens (ambas kluges) que vêm à mente:
- Use um arquivo temporário, no significado normal de
mkstemp.mkstempretorna um número de descritor de arquivo para um arquivo desvinculado. Você pode então criar$FOO/mypasswdcomo um link simbólico para/proc/self/fd/returned_number. Há uma pequena janela onde o arquivo existe (entre abrir e desassociar), e outra coisa em execução como o mesmo usuário poderia abri-lo, e segure o descritor de arquivo para depois ler a senha. Você pode ter certeza de que não será gravado no disco se o seu diretório temporário estiver em um tmpfs. - Se não precisar de
seekdo arquivo de senhas, usepipe/pipe2para criar seus descritores de arquivos e, em seguida, proceda como acima com o symlink. Você precisará forçar um processo filho para manipular a senha para o pipe. - Você provavelmente pode abusar do FUSE para fazer isso.
- Você pode usar
LD_PRELOAD(ou outros truques de vinculador dinâmico) para "corrigir" a biblioteca interceptandoopen/read/closee fornecer a senha a ela em algum lugar.
Nenhum desses é realmente seguro de outros processos. Outros processos em execução como o mesmo usuário poderiam, por exemplo, ptrace do seu processo e ler a senha diretamente da memória.