如何为ruby设置虚拟环境或沙盒,而不删除对外部API的访问';s
我运行的代码如下所示:如何为ruby设置虚拟环境或沙盒,而不删除对外部API的访问';s,ruby,permissions,metaprogramming,virtual,sandbox,Ruby,Permissions,Metaprogramming,Virtual,Sandbox,我运行的代码如下所示: result = system("ruby " + filename_random_ruby_script) if result save_to_disk(random_ruby_script) else # Do Nothing end 变量“random\u ruby\u script”表示任何.rb文件 这段代码是对system()的许多调用中的第一个,它运行一个ruby文件,该文件可能还包含对system()的调用、磁盘读/写、HTTP请求等 必须运行r
result = system("ruby " + filename_random_ruby_script)
if result
save_to_disk(random_ruby_script)
else
# Do Nothing
end
变量“random\u ruby\u script”表示任何.rb文件
这段代码是对system()的许多调用中的第一个,它运行一个ruby文件,该文件可能还包含对system()的调用、磁盘读/写、HTTP请求等
必须运行ruby文件才能了解它的功能,但它可能会尝试读取/写入/执行除自身之外的其他内容,我不希望它删除我的HDD或发布淫秽推文
我想创造一个空间,让这个程序可以运行,没有权限写入/执行它的父目录中的任何内容,但可以通过任何网络协议在本地读取任何内容
我还想知道它是否尝试在本地或网络上写入/执行任何内容
可能有一个gem或软件可以做类似的事情,但我对沙盒代码非常熟悉,所以任何建议都会很有帮助 使用安全级别,不要在系统中运行脚本
例如,这在旧的github gem builder中使用过(Gempecs是普通的可执行ruby代码)。我正在测试该文件以进行编译。我可以在不呼叫系统和安全级别的情况下执行此操作吗?可以。需要或加载一个文件将导致代码被加载并“编译”(如果您在MRI上,它实际上将被解释为一个抽象语法树,因为MRI不是编译器)。或者,您可以使用ruby-c运行代码,这将检查语法(但不检查功能)。