如何在终端中运行进程,只读取给定目录的权限

时间:2011-06-03 19:03:49

标签: linux macos shell permissions terminal

我正在尝试在终端中运行一个进程,但我不相信应用程序那么多 那么有一种方法可以使用所选目录的读取权限来运行该应用程序吗?

我正在使用Mac OS ...

先谢谢...

1 个答案:

答案 0 :(得分:2)

正如knittl所说,你可以使用chroot制作jail

对于更复杂的事情,MAC具有MAC,(意味着OS X具有强制访问控制),允许指定哪些进程可以执行哪些操作以及哪些不可执行。这是通过sandbox机制实现的,这是非常强大和细粒度的。

您需要设置沙箱,所以:

  • man sandbox
  • man sandbox-exec

但遗憾的是,这些并不是很有帮助;(

基本上,您需要为沙箱设置配置文件。示例配置文件位于/ usr / share / sandbox /*.

你能做的最好的事情,google for“os x sandbox”。

正如我上面所说 - 这里没有好的文档,可能是因为它目前尚未进入最后阶段。 :(你可以试验它(特别是在调试模式下)。无论如何,这些链接应该有所帮助:

你的情况很简单(恕我直言),因此足以为你的程序启用exec-process,启用读取和拒绝写入正则表达式“/ *”(无处不在)。也许,拒绝网络。

我不是沙盒专家,所以必须进行实验 - 但尝试开始使用以下内容:

(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")

所以,允许执行程序,拒绝联网,允许读取和拒绝写入......先测试!