c / c ++禁用对文件的访问

时间:2010-09-28 17:45:59

标签: c++ c linux sandbox

是否可以完全禁用某些程序对文件的访问? 因为我不希望它对系统上的文件有任何访问权限,是否可以编译它以便它无法访问文件流或运行它无法访问文件?

5 个答案:

答案 0 :(得分:6)

你最接近的就是在chroot监狱中运行你的程序。

答案 1 :(得分:1)

在非托管环境中,代码无法告诉自己不要做不应该做的事情。 CAS仅是托管环境的一部分,运行时提供额外级别的访问控制。操作系统可以阻止应用程序执行代表它们运行的​​用户无法做到的事情。您应该能够运行应用程序,就好像您是一个不同的,更有限的用户;然后,您可以限制用户对资源的访问权限,操作系统将阻止代码访问它。

答案 2 :(得分:1)

在Linux中,您可以将进程的所有者更改为nobody。这没有大的安全性增加,因为没有人仍然可以访问文件等,但它比作为本地用户或root运行更好:

      struct passwd *pw = getpwnam("nobody");
      if (!pw)
         printf("Error: Unable to look up info about user nobody");
      else{
         setuid(pw->pw_uid);
         setgid(pw->pw_gid);
      }

答案 3 :(得分:0)

理论上,您可以指示链接器不要链接fopen,依此类推。你可能不得不使用静态链接。


但是,通常情况下,当你达到这样的要求时,你就会从错误的方向接近问题。你用这个黑客试图实现的是什么? 为什么你想要这个吗?

答案 4 :(得分:0)

在Windows下,您可以在restricted token

下启动该过程

这需要的不仅仅是Windows API的基本知识,但它是可能的。