2010-11-24 13 views
1

J'ai un exécutable qui fonctionne bien normalement. Il charge une bibliothèque partagée. et j'ai mis LIBPATH avant de lancer cet exe. Maintenant, si je change la permission de l'exe à la racine et que je mets un bit collant, alors il ne chargera pas la bibliothèque partagée. Si je crée un lien dans/usr/lib vers la bibliothèque partagée, tout fonctionne correctement.AIX LIBPATH et STICKY BIT Set

Toute raison et solution à ce problème.

Répondre

5

C'est une fonctionnalité de sécurité - LIBPATH de votre environnement utilisateur n'est pas utilisé lors de l'exécution de quelque chose avec le jeu de bits collant. Si cela vous permettait d'utiliser un LIBPATH défini par l'utilisateur sur un exécutable avec le réglage suid, quelqu'un pourrait charger une bibliothèque malveillante pour compromettre le système. Notez également que cette fonctionnalité de sécurité existe également dans les systèmes Linux - LD_LIBRARY_PATH de l'environnement d'un utilisateur sera ignorée lors de l'exécution d'un exécutable stick-bit.

Solutions possibles

1 - Une solution consiste à accorder à un utilisateur sudo droit d'exécuter cette commande, dans ce cas, vous pourriez faire quelque chose comme ...

sudo LIBPATH="..." executable

2 - Une autre solution consiste à créer un script shell qui définit LIBPATH puis exécute l'exécutable et définit le bit collant sur votre script shell, comme ceci ...

#/bin/sh 

LIBPATH="/whatever/path" /path/to/executable 
+0

Y a-t-il une solution de rechange ou une option qui peut me permettre d'obtenir ce travail. – Avinash

+0

@Avinash - vérifier ma nouvelle édition. – birryree