Eu não conheço nenhuma ferramenta que crie um descritor de arquivo de leitura / gravação com permissões de somente leitura, então usei python3.4
. Eu acho que isso deve replicar o comportamento que você referenciou no código-fonte do git.
#!/usr/bin/env python3.4
import os
if __name__ == '__main__':
fd = os.open('file.txt', os.O_CREAT | os.O_EXCL | os.O_RDWR, 0o444)
os.write(fd, 'this is a test\n'.encode())
os.close(fd)
Depois de executar o script:
$ ls -al file.txt
-r--r--r-- 1 karl karl 15 Dec 3 12:00 file.txt
$ cat file.txt
this is a test