我能把乌玛斯克设为tempfile.NamedTemporaryFile在python中?

2024-10-03 19:33:23 发布

您现在位置:Python中文网/ 问答频道 /正文

在Python中(在2.7及以下版本中尝试过),使用tempfile.NamedTemporaryFile创建的文件似乎不符合umask指令:

import os, tempfile
os.umask(022)
f1 = open ("goodfile", "w")
f2 = tempfile.NamedTemporaryFile(dir='.')
f2.name

Out[33]: '/Users/foo/tmp4zK9Fe'

ls -l
-rw-------  1 foo  foo  0 May 10 13:29 /Users/foo/tmp4zK9Fe
-rw-r--r--  1 foo  foo  0 May 10 13:28 /Users/foo/goodfile

你知道为什么NamedTemporaryFile不接umask吗?在文件创建期间有什么方法可以做到这一点吗?在

我总是可以解决这个问题os.chmod公司(),但我希望在文件创建过程中能做正确的事情。在


Tags: 文件import版本fooos指令tempfileusers
2条回答

在 如果它可能会对某人有所帮助,我想或多或少地做同样的事情,下面是我使用的代码:

import os
from tempfile import NamedTemporaryFile

def UmaskNamedTemporaryFile(*args, **kargs):
    fdesc = NamedTemporaryFile(*args, **kargs)
    umask = os.umask(0)
    os.umask(umask)
    os.chmod(fdesc.name, 0o666 & ~umask)
    return fdesc

这是一个安全功能。NamedTemporaryFile总是用模式0600创建的,硬编码在^{}, line 235,因为在使用chmod打开它之前,它对您的进程是私有的。没有构造函数参数来更改此行为。在

相关问题 更多 >