谁可以在Linux中共享共享内存?

时间:2014-09-27 19:01:02

标签: linux ipc sandbox shared-memory

我正在努力强化学生代码执行的沙箱。我认为我很满意学生不能在文件系统或信号上共享数据,因为我发现明确的规则决定了这些数据并且它们作为不同的非特权用户执行。但是,我很难看到文档来确定,当创建共享内存(或更常见的IPC - 队列或信号量)时,谁可以看到它。如果您创建共享内存,同一台计算机上的任何人都可以打开它,或者有没有办法控制它?控件是否位于创建内存的程序中,还是系统管理员可以限制它?

1 个答案:

答案 0 :(得分:1)

同一ipc命名空间中的任何进程都可以查看和(可能)访问由同一ipc命名空间中的其他进程创建的ipc对象。每个ipc对象与文件系统对象对象具有相同的user / group / other-rwx权限 - 请参阅svipc(7)手册页。

您可以使用带有CLONE_NEWIPC标志的clone(2)系统调用来创建新的ipc命名空间。你可以使用unshare(1)程序用这个或某些其他CLONE标志做另一个程序的clone + exec。