PDA

Afficher la version complète : Développement d'un processus appartenant à root



Heero_Yuy
30/10/2007, 17h43
Salux,

Pour ceux qui ont déjà regardé le résultat de la commande :


ps aux

vous avez pu remarquer que certains processus appartenaient à root.

Et me voilà dans ce problème. Je souhaite développer une appli sous la forme d'un client/serveur où le serveur sera un démon avec les droits root. Le client sera juste une interface graphique qui permettra à l'utilisateur de faire certaines actions (en fait, il demandera, de manière transparente, au serveur de réaliser ces actions).

Mais voilà, je me pose la question de la sécurité du système si un serveur est à l'écoute permanente sur un port (TCP) avec les droits root. Qu'en est-il ? La sécurité du système va être compromise, non ?

J'aurais bien une autre solution en tête. Ne dire au serveur de prendre temporairement les droits root que lorsqu'il en a vraiment besoin, mais là, j'ai peur que cela devienne assez lourd - non pas à développer, ni à gérer - mais au niveau exécution.

Au cas où vous me le demanderiez, la partie serveur sera développée en C. La partie cliente sera développée avec Qt (pour que l'appli s'intègre bien à KDE) et en GTK (pour Gnome).

J'aimerais avoir votre avis concernant ce point de sécurité du développement d'un processus appartenant à root.

Merci de votre aide ;)

Pumpkin
30/10/2007, 17h51
Et pourquoi pas un nouvel utilisateur avec juste les droits nécessaires ?

Heero_Yuy
30/10/2007, 18h02
Disons que les droits nécessaires sont ceux de root (installation de packages, configuration, et accès à certains fichiers accessibles uniquement par ROOT...).

En gros cette appli a nécessairement besoin des droits du superutilisateur.

tyrtamos
30/10/2007, 19h18
Bonjour,

A ma connaissance, une application "roule" pour le compte de celui qui l'a lancée. Si c'est root, c'est pour le compte de root.

Mais si je regarde apache, par exemple, il démarre sous root, ce qui est normal puisqu'il démarre au boot, mais passe tout de suite la main à un utilisateur système (wwwrun:www) qui fait la partie réellement fonctionnelle.

Je suppose qu'il y a une raison de sécurité. Mon interprétation est que s'il y a un trou de sécurité dans cette dernière partie non-root, le pirate ne récupère que des droits limités. En tout cas, il est recommandé que chaque service ait les droits justes nécessaires pour remplir sa fonction.

Cela veut dire aussi que le serveur que tu veux créer n'a peut-être pas besoin des droits root pour faire son boulot.

Tyrtamos

Heero_Yuy
05/11/2007, 10h29
Salux,

Merci de ta réponse Tyrtamos. J'y ai repensé ce week end (4 jours ça permet de bien voir la situation), et je crois bien qu'en fait, que je vais faire autrement - 2 processus communicants avec les IPC (Inter Processus Communication). Mais faut encore que j'approfondisse la chose.

Reste que l'idée du client/serveur me plaisait bien, mais j'ai un doute que le serveur puisse, par exemple, installer des packages sans les droits root ;)

Enfin, je vais continuer mes investigations :)

Encore merci.

tyrtamos
05/11/2007, 11h54
mais j'ai un doute que le serveur puisse, par exemple, installer des packages sans les droits root ;)[/b]
Mais si, avec la modif du fichier /etc/sudoers, tu peux donner juste ce qu'il faut comme droits "sudo" (avec la liste des programmes autorisés accompagnés éventuellement des paramètres et avec ou sans mot de passe root) pour que des actions "root" puissent être menées par l'utilisateur système "non-root".

Tyrtamos

Heero_Yuy
05/11/2007, 12h12
Ok, c'est une solution.

Maintenant, pour un programme distribué à la communauté, je me vois mal demander à chaque utilisateur de modifier ce fichier. J'aimerais que ce soit le plus transparent possible pour l'utilisateur.