我可以在R中禁用System()命令吗?

jl6*_*jl6 2 security r

我有一台安装了Microsoft R Open的服务器.我是否可以限制System()命令的使用,以便用户无法从R中调用shell命令?

如果这是不可能的,那是因为Microsoft R Open特定的原因,还是我要求的任何R实现根本不可能的?

Hac*_*k-R 6

从安全角度来看,我认为最佳做法是创建一个只拥有所需权限的用户帐户(即不是管理员,没有不适当的读/写等),然后以该用户身份运行R.

评论中掩盖功能的聪明建议将是一个修补程序,但对于阻止任何知识渊博的人利用它几乎没有作用.OTOH也许你可以将两者结合起来.

这是一个关于"黑客"如何打败功能掩盖的简单例子:

system <- function(x) {print("I am masked!")}
system()
[1] "I am masked!"
rm(system); print("Take off the mask!")
[1] "Take off the mask!"
system() # not masked now
Error in system() : argument "command" is missing, with no default
Run Code Online (Sandbox Code Playgroud)

评论中的某个人询问了非特权命令ls.如果您还想禁用非特权命令,ls我可能会采用基于安全性/用户的方法然后

  1. 限制文件夹访问指定沙箱的R数据/代码(有点像他们在Kaggle上做的那样)和/或
  2. http://serverfault.com(姐妹堆栈交换网站)上询问如何限制非特权命令(更新 - 我已经开始问这个问题并且它正在等待回复)