如何在Python中获取默认文件权限?

Rya*_*son 7 python file-permissions temporary-files

我正在编写一个Python脚本,在其中我将输出写入临时文件,然后在完成并关闭后将该文件移动到其最终目标.当脚本完成时,我希望输出文件具有与正常创建时相同的权限open(filename,"w").实际上,该文件将具有tempfile模块用于临时文件的限制性权限集.

有没有办法让我弄清楚如果我在适当的位置创建输出文件的"默认"文件权限,那么我可以在移动之前将它们应用到临时文件中?

Pie*_*rre 5

作为记录,我遇到了类似的问题,这是我使用的代码:

import os
from tempfile import NamedTemporaryFile

def UmaskNamedTemporaryFile(*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
Run Code Online (Sandbox Code Playgroud)


小智 3

umask模块中os有一个函数。您无法获取当前的 umask 本身,您必须设置它并且该函数返回之前的设置。

umask 是从父进程继承的。它描述了创建文件或目录时不应设置哪些位。

  • @hop 这是一个合法的任务。例如,在安全方面,可能需要检查 umask 是否过于宽松。任务本身可能不是修复弱 umask,而是报告它。静默修复它可能会掩盖用户在锁定系统上有意/无意共享文件的问题。 (2认同)