Использование черного списка для sudo — бесполезная попытка. Если вы не хотите, чтобы пользователи могли выключать систему, вам нужно предоставить им белый список одобренных команд, а не пытаться заблокировать все возможные команды и последовательности команд, которые приведут к отключению, или которых намного больше, чем вы думаете.
Я подозреваю, что проблема в том, что вы нигде не устанавливаете orig_openat
; вам нужно
orig_openat = (orig_openat_t) _sys_call_table[__NR_openat];
_sys_call_table[__NR_openat] = (unsigned long)hooked_openat;
при перехвате вызова.