每天听简报,了解最新科技、AI、软件资讯
做软件沙箱,业内至今没有一套公认可靠的做法。Emilua 这门语言的作者写长文复盘自己踩过的弯路。他最早想靠 Linux 命名空间隔离权限,用了几年发现走不通:容器技术让普通进程也能在命名空间里拿到超级用户权限,大量原本只对超级用户开放的内核代码因此暴露给了所有人,一位内核安全工程师把这称作巨大的风险。他后来改用另一套思路,把程序拆成多个进程,用文件描述符当权限凭证,谁拿到这个句柄谁才能碰对应的资源。评论区有人提到,OpenBSD 自带的 pledge 和 unveil 两个接口做同样的事要简单得多,只是这套办法离不开 OpenBSD 对系统的完全掌控,搬到 Linux 上就没了着落。
进度保存在本设备 · 登录同步