2010-11-24 63 views
1

我有正常運行正常的可執行文件。它加載一個共享庫。並且在啓動該exe之前設置LIBPATH。 現在,如果我將exe的權限更改爲root所擁有,並設置sticky位,則無法加載共享庫。 如果我在/ usr/lib中創建鏈接到共享庫,一切正常。AIX LIBPATH和STICKY BIT集合

這個問題的任何原因和解決方案。

回答

5

這是一個安全功能 - LIBPATH在您運行粘滯位設置時不會使用您的用戶環境。如果它允許您在其上設置了suid的可執行文件上使用用戶設置LIBPATH,則某人可能會加載惡意程序庫來危害系統。

另請注意,此安全功能也存在於Linux系統中 - 當運行粘滯位可執行文件時,用戶環境中的LD_LIBRARY_PATH將被忽略。

可能的解決方案

1 - 一個解決方案是向用戶授予sudo權限才能執行該命令,在這種情況下,你可以做這樣的事情......

sudo LIBPATH="..." executable

2 - 另一個解決方案是創建一個shell腳本,它設置LIBPATH,然後執行可執行文件,並在shell腳本上設置粘性位,如下所示...

#/bin/sh 

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

是否有任何解決方法或選項可以使我能夠完成這項工作。 – Avinash 2010-11-24 18:03:01