Skip to content Skip to sidebar Skip to footer

Can I Set The Umask For Tempfile.namedtemporaryfile In Python?

In Python (tried this in 2.7 and below) it looks like a file created using tempfile.NamedTemporaryFile doesn't seem to obey the umask directive: import os, tempfile os.umask(022) f

Solution 1:

This is a security feature. The NamedTemporaryFile is always created with mode 0600, hardcoded at tempfile.py, line 235, because it is private to your process until you open it up with chmod. There is no constructor argument to change this behavior.

Solution 2:

In case it might help someone, I wanted to do more or less the same thing, here is the code I have used:

import os
from tempfile import NamedTemporaryFile

defUmaskNamedTemporaryFile(*args, **kargs):
    fdesc = NamedTemporaryFile(*args, **kargs)
    # we need to set umask to get its current value. As noted# by Florian Brucker (comment), this is a potential security# issue, as it affects all the threads. Considering that it is# less a problem to create a file with permissions 000 than 666,# we use 666 as the umask temporary value.
    umask = os.umask(0o666)
    os.umask(umask)
    os.chmod(fdesc.name, 0o666 & ~umask)
    return fdesc

Post a Comment for "Can I Set The Umask For Tempfile.namedtemporaryfile In Python?"