Как настроить sudo для юзеров-программистов?
Мне кажется у вас противоречие: "дать им возможность устанавливать софт" и "ограничить их в установке вредоносного ПО". 
Настройка ВПС и базового окружения делаете вы сами. Для этого есть много инструментов - Ansible, Puppet и др.
А в sudoers пользователю даёте право только на управление определёнными сервисами (nginx,mysql,php-fpm). Все остальные действия пусть делают под локальным пользователем. Для nginx, например, определяете инклуд файлы которые размещаются в папках пользователей. Ну и со многими сервисами так тоже можно. 
Ну и добавление неосновного ПО пусть по запросу будет.
Выдавать права я думаю только по: требованию. Думаю надо просто права настроить правильно. Создать группу и сменить группу у нужных каталогов и файлов. Читать логи - доступ на чтение.  С установкой программам не знаю - по идее можно локально ставить из исходников или выдать группе права записи на /var/lib/dpkg/  :): В lunux все есть файл!