gpt4 book ai didi

Python os.access() 读取文件无论如何

转载 作者:太空宇宙 更新时间:2023-11-04 01:10:49 25 4
gpt4 key购买 nike

我有一个脚本可以检查文件是否存在漏洞。如果文件路径存在,则脚本会检查是否可以读取该文件。但是,当我设置文件的权限时,无论如何 os.access() 都能够读取文件。在 Windows 中,我拒绝了所有权限,在 Linux 中,我在文件上尝试了 chmod 000,并在两台机器上得到了相同的输出。代码如下:

import sys
import os

if len(sys.argv) == 2:
filename = sys.argv[1]
if not os.path.isfile(filename):
print '[-] ' + filename + ' does not exist.'
exit(0)
if not os.access(filename, os.R_OK):
print '[-] ' + filename + ': access denied.'
exit(0)

print '[+] Reading Vulnerabilities From: ' + filename

每当我传递不正确的文件名或路径时,os.path.isFile() 都能正常工作,但 os.access() 却不行。我也是 python 的新手,所有帮助将不胜感激

更新:

当我运行脚本时,我使用命令:

python scriptName.py vuln_banners.txt

在我已经跑完之后

chmod 000 vuln_banners.txt

我得到的唯一输出是:

'[+] Reading Vulnerabilities From: vuln_banners.txt

我跑了

ls -la vuln_banners.txt

得到输出:

---------- 1 root root 397 Dec 31 22:32 vuln_banners.txt

最佳答案

从您上一条评论看来,您正在以 root 身份运行脚本,这在 Linux 中是一个不行不行,除非您真的知道什么你在做什么。

os.access() 将返回 True 如果您在 root 中运行,因为您将有权读取该文件,即使它的权限为 000 .

当我尝试在 root 权限下运行您的脚本时,我能够重现您的问题。尝试在普通用户下运行它,它应该会按预期运行。

此外,如果脚本失败,您不希望它返回 0,您希望返回另一个值。值 0 表示退出且没有错误。您的脚本应该类似于此,其中退出的返回值对您有意义。

import sys
import os

if len(sys.argv) == 2:
filename = sys.argv[1]
if not os.path.isfile(filename):
print '[-] ' + filename + ' does not exist.'
rvalue = 1
elif not os.access(filename, os.R_OK):
print '[-] ' + filename + ': access denied.'
rvalue = 2
else:
print '[+] Reading Vulnerabilities From: ' + filenam
rvalue = 0

exit(rvalue)

关于Python os.access() 读取文件无论如何,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27747116/

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