Question

Je souhaite qu'un processus privilégié par l'utilisateur (non root) lance de nouveaux processus en tant qu'utilisateur nobody . J'ai essayé un appel direct à setuid qui échoue avec -1 EPERM sur Ubuntu 8.04 :

#include <sys/types.h>
#include <unistd.h>

int main() { 
       setuid(65534);
       while (1);
       return 0;
}

Comment dois-je faire cela à la place?

Était-ce utile?

La solution

Vous aurez besoin d'aide et de beaucoup de confiance de la part de votre administrateur système. Les utilisateurs ordinaires ne peuvent pas exécuter l'exécutable de leur choix pour le compte d'autres utilisateurs, point.

Elle peut ajouter votre application à / etc / sudoers avec les paramètres appropriés et vous pourrez l'exécuter comme avec sudo -u nobody . Cela fonctionnera à la fois pour les scripts et les exécutables binaires.

Une autre option est qu'elle fera personne chown et chmod + s sur votre exécutable binaire et vous pourrez l'exécuter directement. Cette tâche doit être répétée chaque fois que votre exécutable change.

Cela pourrait également fonctionner pour les scripts si vous créez un exécutable auxiliaire qui ne fait que exec ("/ home / vous / bin / votre-application") . Cet exécutable peut être créé suid-nobody (voir ci-dessus) et vous pouvez modifier librement votre-application .

Autres conseils

Autant que je sache, vous ne pouvez pas le faire à moins d'être root ou d'avoir sudo configuré pour vous permettre de changer d'utilisateur. Ou bien, vous pouvez faire en sorte que votre exécutable dispose du bit suid et que personne ne le possède. Mais cela nécessite également un accès root.

L'utilisateur 'personne' est toujours un utilisateur. Je ne suis pas sûr de votre raisonnement en faisant en sorte que le programme ne fonctionne que comme personne; cela n'apportera aucune sécurité supplémentaire. Vous êtes plus susceptible de vous ouvrir à d'autres problèmes.

Je suivrais la recommandation de l'escouade d'utiliser une application d'aide.

calife est une alternative à sudo .

  

Calife est un petit programme qui permet à un administrateur système UNIX de devenir root (ou d’un autre utilisateur) sur ses machines sans donner le mot de passe root, mais le sien.

J'ai rencontré le projet setuid-sandbox aujourd'hui lors de la lecture de LWN, qui ce que je cherche le bon chemin.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top