Ну, я бы решил задачу путём запуска шелла. Т.е. юзер попадает не в командную строку, а в оболочку, где есть только такие команды. Оболочка бывает менюшная, с выбором из предложенного.
Вроде, есть шеллы, в которых можно тупо задать набор команд, доступных пациенту. И ничего больше он запустить не может.
Ещё хороший способ упаковать пациента - это chroot. Но там ему надо обеспечить окружение - набор нужных ему программ и библиотек. Сложно, муторно и защищает так себе.