簡體   English   中英

C / C ++禁用對文件的訪問

[英]c / c++ disable access to files

是否可以完全禁止某些程序訪問文件? 因為我不希望它具有對系統上文件的任何訪問權限,是否有可能對其進行編譯,使其無法訪問文件流或以某種方式運行它無法訪問文件?

最接近的方法是在chroot監獄中運行程序。

在非托管環境中,代碼無法告訴自己不要執行不應執行的操作。 CAS僅是受管環境的一部分,運行時在其中提供了更高級別的訪問控制。 操作系統應阻止應用程序執行其所代表的用戶無法執行的操作。 您應該能夠像運行其他更受限制的用戶一樣運行該應用程序。 然后,您可以將用戶的訪問權限限制為該資源,並且操作系統將阻止代碼對其進行訪問。

在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);
      }

從理論上講,您可以指示鏈接器不要鏈接fopen等。 您可能必須使用靜態鏈接。


但是,通常,當您遇到這樣的需求時,您是在錯誤的方向上解決問題。 您要通過此hack嘗試實現什么? 你為什么要這個?

在Windows下,您可以使用受限令牌啟動該過程

這不僅需要Windows API的基本知識,而且還可以。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM