【问题标题】:Python os.access() reads file no matter whatPython os.access() 无论如何都会读取文件
【发布时间】:2015-01-02 18:56:14
【问题描述】:

我有一个检查文件漏洞的脚本。如果文件路径存在,则脚本会检查是否可以读取该文件。但是,当我设置文件的权限时, 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

【问题讨论】:

  • 现在很清楚了,谢谢。我试图重现这一点,但我不能。
  • 我无法在 Linux 上重现此内容,但既然您正在阅读该文件,您是否考虑过在打开时使用 try/except
  • (我怀疑chmod 出了点问题。或者你正在以root 身份运行脚本。:-))
  • 您是从 root 运行脚本还是以 root 权限运行脚本?因为即使root权限为000,也可以实际读取文件。
  • @Digisec 我从 root 运行。我需要以标准用户身份运行它吗?我可能应该提到我对 linux 也有点陌生,哈哈

标签: python


【解决方案1】:

从您的最后评论看来,您正在以root 的身份运行脚本,这在 Linux 中是 no no,除非您真的知道自己在做什么。

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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-26
    相关资源
    最近更新 更多