J'ai développé une application qui utilise NTP pour changer l'heure du réseau, pour synchroniser deux de mes ordinateurs.
Elle s'exécute en tant que root
, puisque seul ce dernier est autorisé à changer l'heure et la date sous Linux (je suppose).
Maintenant, je veux l'exécuter en tant qu'utilisateur. Mais j'ai besoin d'accéder à l'heure.
- Est-il recommandé d'exécuter un démon sous un compte utilisateur non root ?
- Dois-je donner à mon application une capacité comme
CAP_SYS_TIME
? - Cela n'introduit-il pas une faille de sécurité ?
- Existe-t-il un meilleur moyen ?
Réponse acceptée :
Est-il recommandé d'exécuter un démon sous un compte utilisateur non root ?
Oui, et c'est courant. Par exemple, Apache démarre en tant que root, puis bifurque le nouveau processus en tant que www-data (par défaut).
Comme dit précédemment, si votre programme est piraté (ex :injection de code), l'attaquant n'obtiendra pas un accès root, mais sera limité aux privilèges que vous avez donnés à cet utilisateur spécifique.
Dois-je donner une "capacité" telle que "CAP_SYS_TIME" ?
C'est une bonne idée puisque vous évitez d'utiliser setuid , et limitez les autorisations à cette capacité très spécifique.
Dois-je utiliser une autre méthode qui serait considérée comme une "bonne pratique" ?
Vous pouvez augmenter la sécurité, par exemple :
- Exécuter le service en tant qu'utilisateur non privilégié, sans shell.
- Utilisez chroot pour verrouiller l'utilisateur dans son répertoire personnel.