gpt4 book ai didi

python - os.open 不使用给定的权限模式创建文件

转载 作者:太空狗 更新时间:2023-10-29 12:22:52 26 4
gpt4 key购买 nike

当尝试使用 os.open 模式 777(意味着允许一切)打开文件时 -

os.open("/tmp/lol", flags=(os.O_CREAT), mode=0o777)

它会像这样创建没有写权限的文件 -

-rwxrwxr-x  1 cybellum cybellum       0 Nov 20 09:38 lol*

当尝试使用 chmod("/tmp/lol", 0o777) 时,文件获得了正确的权限:

-rwxrwxrwx  1 cybellum cybellum       0 Nov 20 09:38 lol*

为什么 os.open 没有按预期工作?
有没有办法用 777 模式创建文件(如果文件存在,它只会更改权限..(因为我试过 pathlib.Path.touch))?

最佳答案

当您使用 open 创建文件时,open 调用中指定的权限会被您的 umask 设置修改。 umask 定义被“屏蔽掉”的位。在我的系统上,我当前的 umask 似乎是 0002:

$ umask
0002

这意味着当我像你这样运行代码时:

import os
os.open('testfile', flags=(os.O_CREAT), mode=0o777)

我会得到以下行为:

$ python filetest
$ ls -l testfile
-rwxrwxr-x. 1 lars lars 0 Nov 20 07:47 testfile

我可以将umask设置为不同的值来控制权限默认应用:

$ umask 022
$ python filetest
$ ls -l testfile
-rwxr-xr-x. 1 lars lars 0 Nov 20 07:49 testfile

或者:

$ umask 077
$ python filetest.py
$ ls -l testfile
-rwx------. 1 lars lars 0 Nov 20 07:50 testfile

阅读更多 here .

关于python - os.open 不使用给定的权限模式创建文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53390466/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com