从命令行禁用对python程序的文件访问

时间:2016-04-07 13:37:59

标签: python file shell command-line command

是否有命令行命令禁止从python程序访问系统中的所有文件和文件夹?如果程序试图访问任何文件,它应该给出错误。例如,在命令行中:

$ python filename.py <some_command>

或类似的东西。

它不应该允许程序中的open('filename.txt')等函数。

编辑:sudo允许运行具有管理员权限的程序。我们可以创建像sudo这样的命令来限制对其他文件和文件夹的访问吗?

谢谢。

1 个答案:

答案 0 :(得分:1)

从python的命令行选项列表中,似乎没有这个选项(并且防止IO似乎不是too effective的沙箱)。您可以创建自己的命令参数来获得此功能,例如

import argparse

class blockIOError(Exception):
    pass

parser = argparse.ArgumentParser(description='Block IO operations')
parser.add_argument('-bIO','-blockIO', 
                   action='store_true',
                   help='Flag to prevent input/output (default: False)')

args = parser.parse_args()

blockIO = args.bIO

if not blockIO:
    with open('filename.txt') as f:
        print(f.read())
else:
    raise blockIOError("Error -- input/output not allowed")

缺点是你需要在if语句中包含每个open,read等。优点是您可以准确指定要允许的内容。然后输出看起来像:

$ python 36477901.py -bIO
Traceback (most recent call last):
  File "36477901.py", line 19, in <module>
    raise blockIOError("Error -- input/output not allowed")
__main__.blockIOError: Error -- input/output not allowed