我正在尝试限制对Python文件的写和读访问。假设我有以下代码:
with open('test.py', 'w+') as file:
file.write('''
open("document.txt", "w+").write("Hello, World!")
open("document.txt", "r+").read()
''')通过执行此代码,将创建一个新文件,在新文件中有两行代码用于写入和读取另一个文件。我希望通过执行这段代码(test.py)创建的文件在运行时命中PermissionError,并且不能创建新文件或读取它;而且,这个文件只是可执行的,正常的命令可以在其中工作,但它不能访问其他文件。
发布于 2021-09-27 14:20:24
如果我没看错的话,这不是python的问题,而是环境问题。我把这个问题理解为“如何防止python代码执行任意读写?”。可能会有一个简单的解决方案(修改生成的test.py以抛出错误),但想必这不是您想要的。
让python命中PermissionError的最简单方法是...就是确保它没有权限。因此,以权限极其有限的用户身份运行您的代码-特别是在任何地方都没有写权限-或者可能根本没有默认权限,并使用诸如facls之类的东西来授予从更有权限的前哨进程显式读取特定文件的权限。(这假设您运行的是Linux,但在不同的OS中可能还有其他方法来实现这一点)。
或者,研究各种沙箱技术,为您提供一个python解释器,将相关模块替换为抛出错误的模块,或者是一个不可能进行外部修改的环境。
如果你更清楚为什么这很重要,为什么你要用另一个python脚本编写python脚本(这只是一个恶意行为的例子吗?),这将会有所帮助。
发布于 2021-09-27 14:29:31
从技术上讲,您可以在您尝试访问的文件系统上更改文件本身的权限。
Check the previous thread about changing permissions
os.chmod(path, <permission value>)其中000表示禁止root用户以外的任何人在linux上进行编辑。
https://stackoverflow.com/questions/69348117
复制相似问题