2017-03-28 1 views
0

Comme vous pouvez le voir par l'image ci-dessous, j'ai changé la propriété de mon script emerald_setup à root: root et également définir le SUID.Ruby gem exécutable avec SUID ne fonctionne pas comme il se doit

enter image description here

Il arrive que quand j'installer la pierre précieuse et vérifier ce script, il appartient à Edvaldo: Edvaldo (mon nom d'utilisateur) et n'a pas SUID du tout!

enter image description here

Je ne sais pas exactement ce qui se passe, mais ce script modifie /etc/hosts et crée également des règles de pare-feu. Cela nécessite des privilèges root.

Alors, mes questions sont les suivantes:

  • Qu'est-ce que je manque dans ce cas du SUID?

  • Comment dois-je procéder pour m'assurer que l'exécutable gem aura le SUID défini?

Bien sûr, je sais que je pourrais demander à l'utilisateur d'exécuter ce script en utilisant

$ sudo emerald_setup 

mais cela me conduirait à un autre problème, car l'exécutable gemme est installé dans l'espace utilisateur et son emplacement est PAS dans le chemin du super-utilisateur et le réglage de ceci (devinez quoi ?!) nécessite des privilèges de super-utilisateur.

Des suggestions?

Répondre

1

Vous ne pouvez pas compresser un programme/script avec des privilèges suid dans une gemme (ou même une archive tar) et ces privilèges doivent être restaurés lors du déballage en tant qu'utilisateur normal. À un moment donné, la personne qui installe votre gemme devra fournir le mot de passe pour l'accès root. Vous pouvez faire en sorte que cela se produise lorsque la gem est installée en ayant la cible: install du gem Rakefile qui exécute un script qui invite l'utilisateur à saisir le mot de passe su (do), puis utilise sudo pour exécuter les commandes qui doivent être exécutées root, cependant.