c / c ++ отключить доступ к файлам - PullRequest
0 голосов
/ 28 сентября 2010

Можно ли полностью отключить доступ какой-либо программы к файлам? Поскольку я не хочу, чтобы у него был какой-либо доступ к файлам в системе, можно ли скомпилировать его, чтобы у него не было доступа к файловому потоку или каким-либо образом запустить его, он не может получить доступ к файлам?

Ответы [ 5 ]

6 голосов
/ 28 сентября 2010

Самое близкое, к чему вы сможете прийти - это запустить вашу программу в chroot тюрьме.

1 голос
/ 28 сентября 2010

В Linux вы можете изменить владельца процесса на никто.Это не слишком большое повышение безопасности, так как никто до сих пор не может получить доступ к файлам и т. Д., Но это лучше, чем запуск от имени локального пользователя или пользователя 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);
      }
1 голос
/ 28 сентября 2010

В неуправляемой среде код не может сказать себе, что он не должен делать то, что не должен. CAS является частью только управляемых сред, где среда выполнения обеспечивает дополнительный уровень контроля доступа. Это зависит от ОС, чтобы приложения не могли делать то, от чего не может работать пользователь, от имени которого они работают. Вы должны иметь возможность запускать приложение, как если бы вы были другим, более ограниченным пользователем; затем вы можете ограничить права доступа пользователя к ресурсу, и ОС будет препятствовать доступу кода к нему.

0 голосов
/ 28 сентября 2010

В Windows вы можете запустить процесс под ограниченным токеном

Это требует не только базовых знаний о Windows API, но это возможно.

0 голосов
/ 28 сентября 2010

Теоретически вы можете указать компоновщику не связывать fopen и так далее. Вам, вероятно, придется использовать статическую связь.


Но часто, когда вы приходите к такому требованию, вы подходите к проблеме с неправильной стороны. Что вы пытаетесь достичь с помощью этого хака? Почему ты этого хочешь?

...