La définition de la capacité sur le script ne sera pas efficace. C'est la même situation que de ne pas travailler setuid
sur le script. Similaire comme dans ce dernier cas, c'est l'implémentation de la façon dont execve
gère shebang et le raisonnement de sécurité derrière (pour plus de détails, voir: Autoriser setuid sur les scripts shell ).
Je pense que vous avez ces options
définir les capacités sur l'interpréteur lui-même (en fait plutôt une copie de celui-ci)
- vous avez un problème ici que quiconque est capable de l'exécuter s'exécutera avec ces capacités élevées (être capable d'exécuter un script arbitraire ou de le démarrer de manière interactive)
écrire un exécutable wrapper qui aura une logique codée en dur pour exécuter votre script et définir les capacités souhaitées sur cet exécutable
- assurez-vous que personne ne peut modifier, ni supprimer / remplacer le script
- toujours en faisant
chroot
on pourrait mal utiliser un tel emballage
Dans les deux cas, vous devrez vous assurer que les capacités définies survivront execve
en définissant l' inheritable
indicateur. Vous pouvez également utiliser pam_cap
distribué avec libcap
habituellement, pour activer réellement les fonctionnalités souhaitées par configuration uniquement pour les utilisateurs sélectionnés.
Et en général, vous voulez vous assurer que personne ne peut modifier le comportement de votre interprète en changeant l'environnement, par exemple. PYTHON_PATH
ou quelque chose de similaire.
Miroslav Koškár
la source