是否可以完全禁用某些程序对文件的访问? 因为我不希望它对系统上的文件有任何访问权限,是否可以编译它以便它无法访问文件流或运行它无法访问文件?
答案 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的基本知识,但它是可能的。