首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >tempfile.mkstemp权限设置

tempfile.mkstemp权限设置
EN

Stack Overflow用户
提问于 2018-06-27 12:56:12
回答 2查看 2.2K关注 0票数 3

我使用tempfile.mkstemp生成一个随机可用的文件名,并使用os.fdopen编写一些内容。然后通过celery将文件名传递给任务。

此任务打开文件,处理内容,最后删除文件。在测试中,这很好,但是我已经意识到,在我的实际环境中,运行任务的用户与创建文件的用户是不一样的。

这意味着用户无法打开文件,因为tempfile.mkstemp将权限设置为600(-rw-------)。

我不能使两个进程都由同一个用户运行,那么是否有办法修改tempfile.mkstemp设置的文件权限?

我正在Ubuntu14.04上运行Python3.6。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-06-27 13:17:45

考虑到在调用mkstemp()之后使用os.fdopen,使用tempfile.NamedTemporaryFile(delete=False)可能会更好。它返回一个Python文件对象,而不是一个fd

无论哪种方式,返回的文件都有mode=0600,所以您需要修改它。使用os.fchmod(temp_file.fileno(), 0640)或类似的(根据您的需要更改模式)。

票数 4
EN

Stack Overflow用户

发布于 2018-06-27 13:08:12

否,除了使用chmod命令手动修改权限之外,没有办法修改tempfile.mkstemp创建的文件的权限。此函数通过设计以最安全的方式创建临时文件,因此该文件只能通过创建的用户ID才能读取和写入。请参见mkstemp文档

使用tempfile.TemporaryFiletempfile.NamedTemporaryFile创建临时文件。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51063378

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档