Bezpiecznie utwórz plik tylko wtedy, gdy nie istnieje z pythonem

Chcę napisać do pliku na podstawie tego, czy ten plik już istnieje, czy nie, pisząc tylko wtedy, gdy nie istnieje (w praktyce chcę nadal próbować plików, dopóki nie znajdę pliku, który nie istnieje).

Poniższy kod pokazuje sposób, w jaki potencjalny atakujący może wstawić dowiązanie symboliczne, jak sugerowano wten post pomiędzy testem pliku a zapisywanym plikiem. Jeśli kod jest uruchamiany z wystarczająco dużymi uprawnieniami, może to zastąpić dowolny plik.

Czy jest jakiś sposób na rozwiązanie tego problemu?

import os
import errno

file_to_be_attacked = 'important_file'

with open(file_to_be_attacked, 'w') as f:
    f.write('Some important content!\n')

test_file = 'testfile'

try:
    with open(test_file) as f: pass
except IOError, e:

    # symlink created here
    os.symlink(file_to_be_attacked, test_file)

    if e.errno != errno.ENOENT:
        raise
    else:
        with open(test_file, 'w') as f:
            f.write('Hello, kthxbye!\n')

questionAnswers(2)

yourAnswerToTheQuestion