Ограничение доступа к заголовочному файлу не помешает вам получить доступ к libc
функциям: они все еще доступны, если вы ссылаетесь на libc
- у вас просто не будет прототипов (и макросов) под рукой; но вы можете скопировать их сами.
И не связывание с libc
тоже не поможет: системные вызовы могут быть сделаны напрямую через встроенный ассемблер (или даже хитрости, связанные с переходом в данные).
Я не думаю, что это хороший подход в целом. Выполнение загруженного кода в полностью автономной виртуальной песочнице (возможно, через QEMU или что-то в этом роде), вероятно, будет лучшим способом.