tempfile.mkstemp 权限设置
tempfile.mkstemp permissions settings
我正在使用 tempfile.mkstemp
生成随机可用文件名并使用 os.fdopen
写入一些内容。然后我通过 celery
将文件名传递给任务。
此任务打开文件,处理内容,最后删除文件。
在测试中这工作正常,但是我意识到这会在我的实时环境中中断,在该环境中,用户 运行 执行任务与创建文件的用户不同。
这意味着用户无法打开该文件,因为 tempfile.mkstemp
将权限设置为 600
(-rw-------
)。
我不能让同一个用户同时进行两个进程运行,那么有什么方法可以修改tempfile.mkstemp
设置的文件权限吗?
我 运行宁 Python 3.6 Ubuntu 14.04.
不,除了使用chmod
命令手动修改权限外,没有办法修改tempfile.mkstemp
创建的文件的权限。此功能旨在以最安全的方式创建临时文件,因此该文件只能由创建用户 ID 读写。参见 mkstemp documentation。
改为使用 tempfile.TemporaryFile
or tempfile.NamedTemporaryFile
创建临时文件。
鉴于您在调用 mkstemp() 后使用 os.fdopen,您最好使用 tempfile.NamedTemporaryFile(delete=False)。它 returns 一个 Python 文件对象而不是 fd
.
无论哪种方式,返回的文件都会有 mode=0600,因此您需要更改它。使用 os.fchmod(temp_file.fileno(), 0640)
或类似的(根据需要更改模式)。
我正在使用 tempfile.mkstemp
生成随机可用文件名并使用 os.fdopen
写入一些内容。然后我通过 celery
将文件名传递给任务。
此任务打开文件,处理内容,最后删除文件。 在测试中这工作正常,但是我意识到这会在我的实时环境中中断,在该环境中,用户 运行 执行任务与创建文件的用户不同。
这意味着用户无法打开该文件,因为 tempfile.mkstemp
将权限设置为 600
(-rw-------
)。
我不能让同一个用户同时进行两个进程运行,那么有什么方法可以修改tempfile.mkstemp
设置的文件权限吗?
我 运行宁 Python 3.6 Ubuntu 14.04.
不,除了使用chmod
命令手动修改权限外,没有办法修改tempfile.mkstemp
创建的文件的权限。此功能旨在以最安全的方式创建临时文件,因此该文件只能由创建用户 ID 读写。参见 mkstemp documentation。
改为使用 tempfile.TemporaryFile
or tempfile.NamedTemporaryFile
创建临时文件。
鉴于您在调用 mkstemp() 后使用 os.fdopen,您最好使用 tempfile.NamedTemporaryFile(delete=False)。它 returns 一个 Python 文件对象而不是 fd
.
无论哪种方式,返回的文件都会有 mode=0600,因此您需要更改它。使用 os.fchmod(temp_file.fileno(), 0640)
或类似的(根据需要更改模式)。