linux - 如何在给定目录的只读权限下在终端中运行进程

标签 linux macos shell permissions terminal

我正在尝试在我的终端中运行一个进程,但我不太信任该应用程序。

有没有一种方法可以只从选定的目录中读取权限来运行该应用程序?

我正在使用 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/

相关文章:

linux - Tar命令备份错误

swift - 我如何让 Alamofire 对此网址进行编码 - 它不断丢弃参数

macos - 使用 swift 为 NSTextView 设置默认字体

arrays - 为什么空数组在 bash 中被视为未设置?

shell - shell 脚本中的 boolean 变量

java - 如何确定哪个网络。接口(interface)与java一起使用

c - 格式 '%lld' 需要类型 'long long int' ,但参数 4 的类型为 'int64_t'

linux - 得到选择。 -help 参数不起作用。

linux - 将 .tex 文件转换为 PNG

macos - Chromium : GN/Ninja - linking to OS X Framework via Build. gn 失败