我正在尝试在我的终端中运行一个进程,但我不太信任该应用程序。
有没有一种方法可以只从选定的目录中读取权限来运行该应用程序?
我正在使用 macOS。
最佳答案
正如 knittl 所说,您可以使用 chroot
来制作 jail
。
对于更复杂的事情,MAC 有 MAC,(意味着 OS X 有强制访问控制),what allow 指定进程可以做什么,不能做什么。这是通过沙箱
机制实现的,非常强大和细粒度。
你需要设置沙箱,所以:
- 人沙盒
- man sandbox-exec
但不幸的是这些都不是很有用;(
基本上,您需要为沙箱设置配置文件。示例配置文件位于/usr/share/sandbox/*。
尽你所能,谷歌搜索“os x sandbox”。
正如我上面所说的 - 这里没有好的文档,可能是因为它目前还没有进入最后阶段。 :( 您可以试验一下(尤其是在 Debug模式下)。无论如何,这些链接应该有点帮助:
您的情况很简单(恕我直言),因此足以为您的程序启用执行进程,启用对正则表达式“/*”(所有位置)的读取和拒绝写入。也许,拒绝网络。
我不是 sanbox 专家,所以您必须尝试 - 但尝试从类似的东西开始:
(version 1)
(debug deny)
(allow default)
(allow process*)
(deny network*)
(allow file-read-data file-read-metadata (regex "^/.*"))
(deny file-write* (regex "^/.*"))
(import "bsd.sb")
所以,允许执行程序,拒绝联网,允许读取和拒绝写入...先测试!
关于linux - 如何在给定目录的只读权限下在终端中运行进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6231508/