gpt4 book ai didi

r - 我可以禁用 R 中的 System() 命令吗?

转载 作者:行者123 更新时间:2023-12-04 09:09:47 24 4
gpt4 key购买 nike

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

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

最佳答案

从安全的角度来看,我认为最好的做法是创建一个只拥有您想要的权限的用户帐户(即不是管理员,没有不适当的读/写等),然后以该用户身份运行 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

评论中有人询问了非特权命令,如 ls。如果您还想禁用像 ls 这样的非特权命令,我可能会采用基于安全/用户的方法,然后要么

  1. 限制文件夹访问 R 数据/代码的指定沙箱(有点像他们在 Kaggle 上所做的)和/或
  2. 询问 http://serverfault.com (姐妹 Stack Exchange 站点)如何限制非特权命令(更新 - 我已经问了这个问题,正在等待回复)

更新:

为了说明简单地屏蔽 rm 也不是解决方案:

system <- function(x) {print("I am masked!")}
system("cmd.exe")
rm(system); print("Take off the mask!")
system("cmd.exe")
rm <- function(x){print("Now I masked rm")}
remove(rm)
rm(system)
system("cmd.exe")

关于r - 我可以禁用 R 中的 System() 命令吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51266225/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com