A configuração da capacidade no script não será eficaz. É a situação semelhante como não funcionando setuid
bit no script. Semelhante, como no último caso, é a implementação de como execve
manipula o shebang e o raciocínio de segurança por trás dele (para obter detalhes, consulte: Permitir setuid em scripts de shell ).
Eu acho que você tem essas opções
-
define os recursos do próprio interpretador (na verdade, uma cópia dele)
- você tem um problema aqui que qualquer um que seja capaz de executá-lo será executado com esses recursos elevados (será capaz de executar algum script arbitrário ou iniciá-lo de forma interativa)
-
escreva um executável de wrapper que terá uma lógica codificada para executar seu script e definir os recursos desejados neste executável
- certifique-se de que ninguém possa modificar nem remover / substituir o script
- ainda fazendo
chroot
, pode-se usar esse wrapper
Em ambos os casos, você deve garantir que as capacidades configuradas sobrevivam a execve
definindo inheritable
flag. Você também pode usar pam_cap
distribuído com libcap
normalmente para ativar os recursos desejados por configuração apenas para usuários selecionados.
E, em geral, você quer ter certeza de que ninguém é capaz de modificar o comportamento do seu intérprete alterando o ambiente, por exemplo. PYTHON_PATH
ou algo semelhante.