是否可以在* nix中以不同的用户身份执行分支?

时间:2016-12-03 15:04:54

标签: process linux-kernel operating-system execution selinux

是否可以在Linux(或SELinux)中以不同的用户身份执行方法?我在各个沙箱中运行的程序,每个沙箱都有不同的用户和进程ID。我有一种情况,我必须以不同的用户和不同的进程ID执行代码分支,以防止访问产生它的代码的内存和磁盘空间。

如果不可能,你能否说明必须改变多少内核代码才能实现它? (我理解它的主观性。或者,如果你可以建议什么以及如何去做,那将会非常有帮助。)

1 个答案:

答案 0 :(得分:0)

保护某些资源不受在同一台机器上执行的其他代码的影响正是导致该过程和UID发明的原因。 如果你正在寻找一个看似简单的函数调用的机制,我会说这是不可能的,因为它需要在调用者和被调用者之间共享内存。但是,只要使用程序参数或管道等系统对象处理参数/结果,使用fork / exec(或 system()等包装器)就会给你一些隔离

尽管* nix用户旨在保护进程彼此之间的事实,但要求在两个用户之间建立明确的关系,让一个用户代表另一个用户。

实际上,您可能希望:

  • 定义一个sudoers策略,它赋予第一个用户运行命令(或特定命令)作为第二个用户的权利。
  • 在第一个程序中使用popen()(或system())来调用权限较低的代码。
  • 如果有的话,传递参数并解析stdout
  • 的结果

作为额外的,你可以对两个执行使用相同的二进制文件,这样,所有代码都可以在同一个位置。