1
我有正常運行正常的可執行文件。它加載一個共享庫。並且在啓動該exe之前設置LIBPATH。 現在,如果我將exe的權限更改爲root所擁有,並設置sticky位,則無法加載共享庫。 如果我在/ usr/lib中創建鏈接到共享庫,一切正常。AIX LIBPATH和STICKY BIT集合
這個問題的任何原因和解決方案。
我有正常運行正常的可執行文件。它加載一個共享庫。並且在啓動該exe之前設置LIBPATH。 現在,如果我將exe的權限更改爲root所擁有,並設置sticky位,則無法加載共享庫。 如果我在/ usr/lib中創建鏈接到共享庫,一切正常。AIX LIBPATH和STICKY BIT集合
這個問題的任何原因和解決方案。
這是一個安全功能 - LIBPATH
在您運行粘滯位設置時不會使用您的用戶環境。如果它允許您在其上設置了suid的可執行文件上使用用戶設置LIBPATH
,則某人可能會加載惡意程序庫來危害系統。
另請注意,此安全功能也存在於Linux系統中 - 當運行粘滯位可執行文件時,用戶環境中的LD_LIBRARY_PATH
將被忽略。
可能的解決方案
1 - 一個解決方案是向用戶授予sudo
權限才能執行該命令,在這種情況下,你可以做這樣的事情......
sudo LIBPATH="..." executable
2 - 另一個解決方案是創建一個shell腳本,它設置LIBPATH
,然後執行可執行文件,並在shell腳本上設置粘性位,如下所示...
#/bin/sh
LIBPATH="/whatever/path" /path/to/executable
是否有任何解決方法或選項可以使我能夠完成這項工作。 – Avinash 2010-11-24 18:03:01