Essa não é a abordagem que o mundo Linux adota, pois isso é muito difícil de ser mantido. Uma versão atualizada do appX com um hash diferente exigiria o ajuste das políticas, e se você tiver que oferecer suporte a várias versões para diferentes usuários, isso aumentará o número de proporções. Isso é particularmente complicado em qualquer sistema baseado em Unix, porque o sistema operacional depende muito de ser capaz de executar uma tonelada de pequenos utilitários, como os encontrados em / usr / bin - manter o controle de todos esses hashes simplesmente não vale a pena. A abordagem geral do Linux é proteger cada processo o suficiente para que ele não cause muito dano, mesmo que seja mal-intencionado - tanto por meio das proteções do kernel quanto por meio de ferramentas como o SELinux, AppArmour e gr_security.
No SELinux, a maioria dos softwares não genéricos instalados recebe seu próprio tipo de domínio, para que você possa escrever políticas de usuários para restringir quais domínios os usuários podem executar. Se você quiser um exemplo, aqui está uma política que permite que um usuário efetue login, execute as ferramentas de linha de comando mais genéricas (ls, find, etc) e execute um cliente de IRC. Mas, por exemplo, não é possível iniciar a interface gráfica, enviar e-mails nem fazer muitas outras coisas:
policy_module(ircuser, 1.0.0)
role ircuser_r;
irc_role(ircuser_r, ircuser_t)
userdom_restricted_user_template(ircuser)
gen_user(ircuser_u, user, ircuser_r, s0, s0)
Então você só precisa compilar, instalar e atribuir ao usuário que deseja restringir.