É possível ter um usuário com acesso limitado ao sudo e eu recomendaria isso.
Para começar, crie um usuário sudoers
que só pode executar tool.php
e pode ser alternado para o seu usuário www-data
(ou seja qual for o nome do usuário do seu webserving). Isso limitará o escopo das ações do sudo que podem ser tomadas no servidor (no entanto, se o seu tool.php for explorável, isso não ajuda).
Você pode fazer isso editando sudoers para conter uma linha como:
online_tool_user ALL=(www-data) NOPASSWD: /var/danger/tool.php
Isso permitirá que "online_tool_user" execute o comando /var/danger/tool.php
sem digitar uma senha. Se este usuário tentar executar qualquer outro comando (iptables, adduser, et al), ele será negado.
Para tornar a exploração desse usuário menos divertida para um invasor, procure usar shells ou "jails" restritos.
Por fim, se você estiver apenas chamando exec
via PHP, ative o usuário na chamada, por exemplo: exec("sudo -u online_tool_user -c 'php /var/danger/tool.php'")
.