Les gens, quelle solution vous auriez pour permettre à un utilisateur non root de lancer un script avec un autre utilisateur ? 🤔
Ou se battre avec la configuration de sudo pour que cet utilisateur en particulier puisse lancer cet exécutable en particulier en tant que cet autre utilisateur en particulier sans mot de passe, sans doute.
- replies
- 1
- announces
- 0
- likes
- 0
@elzen setuid sur un processus, en l'occurence un script compilé, donne des privilèges élevés a ce script, qui potentiellement peut faire tout ce que root peut faire… C'est contraire a ce qui est souhaité…
sudoer_file permet de restreindre les commandes autorisées pour un utilisateur donné. Au lieu d'être complètement sudoer, on peut juste lancer des commandes (et arguments) bien définis. Y compris sans MdP si on veut vraiment mais selon ce que fait la commande autorisée…
@elzen Y a rien à se battre. De mémoire c'est une ligne de conf et ça juste marche… c'est bien plus simple que réécrire un quelconque script 🤔
Mais il reste le problème de mot de passe de l'user de destination a fournir vs non-interactivité… Et là ça se complique. Si le pass user est dans un password-store, par exemple, il faut toujours fournir la passphrase de la clé à la connxion ou à un agent/cache. Ou une clé passwordless (évidemment surtout pas 🤮). Jvois pas de solution…
Par ailleurs, ce serait dangereux pour un programme extérieur auquel tu donnes le droit sans savoir ce qu'il fait au juste ; si c'est un script que tu as toi-même écrit et compilé, tu sais ce que le programme fait et donc si ça présente un danger ou pas. Niveau sécurité, c'est très exactement la même chose que pour les droits de sudoer : ça dépend de ce que fait le script.
À un moment, quand il y a des trucs intégrés spécialisés et que la personne qui pose la question est susceptible de savoir ce qu'elle fait, c'est quand même mieux de les mentionner que de ne parler que des usines à gaz comme sudo.
Tu prépares l'exécutable, tu lui donnes le bon propriétaire (l'utilisateur cible) et tu lui mets le bit suid, et quand un utilisateur qui a le droit de l'exécuter le fait, il l'exécute comme s'il était le propriétaire du fichier. Ça fait donc très exactement ce qui nous a été demandé, ça n'est ni plus, ni moins risqué que n'importe quelle autre opération de changement d'utilisateur, et comme ça n'utilise que le système de gestion de droits de base, ça marche quelle que soit la configuration précise de la machine.
À un moment, c'est bien d'arrêter les réflexes pavloviens et d'ouvrir une page de man, quoi -_-
@elzen@fadrienn.irlnc.org @devnull@mamot.fr @mmu_man@m.g3l.org setuid ne peut malheureusement être posé que sur des binaires. Les scripts ne le supportent pas. Et du coup trop souvent, c’est pas utilisable sans un wrapper binaire 😭
Pour ce genre de cas, je passe généralement par du Python, ça reste un langage de script relativement souple, mais dès qu'il y a besoin d'un suid il suffit d'un coup de cython pour avoir un binaire.