成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

關于Linux和Unix動態鏈接庫的安全

安全 網站安全
實際上所有程序執行都依賴于庫。在包括Linux的大多數現代類Unix系統中,程序缺省使用動態連接庫(DLL)進行編譯。這樣就可以更新某個庫,所有使用該庫的程序如果可能的話,都將使用新的(希望有所改進的)版本。

實際上所有程序執行都依賴于庫。在包括Linux的大多數現代類Unix系統中,程序缺省使用動態連接庫(DLL)進行編譯。這樣就可以更新某個庫,所有使用該庫的程序如果可能的話,都將使用新的(希望有所改進的)版本。

動態連接庫通常被放在若干特殊目錄下。通常這些目錄包括/lib、/usr/lib、有關PAM模塊的/lib/security、有關X-windows的/usr/X11R6/lib和/usr/local/lib。

對于庫的命名和進行庫的符號連接有些特殊約定,這樣就可以更新庫,同時繼續支持需要使用不具有反向兼容的老版本庫的程序。在執行特定程序時可以覆蓋某個指定庫,甚至只覆蓋某個庫里的指定函數。這是類Unix系統相對于類Windows系統的一個實際優點;我相信類Unix系統有一個更好的系統來處理庫的更新,這也是Unix和Linux系統被認為比基于Windows的系統更穩定的原因。

在包括所有Linux系統的基于GNU glibc的系統中,程序啟動時自動尋找的目錄列表存儲在文件/etc/ld.so.conf中。很多源于Red Hat的發行版一般在文件/etc/ld.so.conf中不包含/usr/local/lib。我認為這是個Bug,要在源于Red Hat的系統里運行很多程序都需要進行一個通用的“修復”,把/usr/local/lib加入/etc/ld.so.conf。

如果只是想覆蓋某個庫里的若干函數,而想保留該庫的其它部分,可以在/etc/ld.so.preload中輸入要覆蓋的庫名(.o文件);這些“預載入”的庫會優先于標準庫使用。通常這種預載入文件是用于緊急補丁的;發行版在發行時一般不會包含這樣的文件。

在程序啟動時尋找所有這些目錄太花時間,所以實際上使用了一個cache管理方法。程序ldconfig(8)缺省讀入文件/etc/ld.so.conf,在動態連接目錄里建立相應的符號連接(這樣就遵循了標準約定),然后把cache寫入/etc/ld.so.cache,這樣就可以被其它程序使用了。所以一旦增加一個DLL,或刪除一個DLL,或者DLL目錄集發生改變,ldconfig就要運行一次;在安裝庫時,運行ldconfig通常是軟件包管理程序需要執行的一個步驟。在啟動時,程序使用動態加載程序來讀入文件/etc/ld.so.cache,然后載入其所需的庫。

各種環境變量可以控制這一過程,而且事實上也有允許覆蓋此過程的環境變量(所以可以在某次特別的執行過程中臨時替換某個不同的庫)。在Linux下,環境變量LD_LIBRARY_PATH是一組用逗號隔開的目錄,在查找標準目錄集之前先查找這些庫;這在調試新庫或為特殊目的使用非標準庫時很有用。變量LD_PRELOAD列出了覆蓋標準集的函數所在的目標文件,就像/etc/ld.so.preload一樣。

如果不采取特別的措施,允許用戶控制動態連接庫會對setuid/setgid程序造成災難性的后果。因此在實現GNU glibc時,如果是setuid或setgid程序,將忽略這些變量(和其它類似的變量),或者嚴格限制這些變量所起的作用。GNU的glibc庫通過檢查程序的證明來確定其是否為setuid或setgid程序;如果uid和euid不同,或者gid和egid不同,則庫就假設該程序為setuid/setgid程序(或者為其子程序),然后嚴格限制它控制連接的能力。如果載入GNU的glibc庫,就可以看到這種情況;

請特別閱讀一下文件elf/rtld.c和sysdeps/generic/dl-sysdep.c。這就意味著如果使uid和gid等于euid和egid,再調用程序,這些變量就具有完全的效力。其它類Unix系統處理這些情況有所不同,但原因相同:一個setuid/setgid程序不應受到環境變量集的過分影響。

責任編輯:Oo小孩兒 來源: linuxeden.com
相關推薦

2012-05-04 08:24:14

LinuxUnix

2012-05-08 14:48:23

LinuxUnix動態鏈接庫

2024-06-06 08:53:13

動態鏈接庫共享庫

2011-06-21 18:02:14

Qt 動態 鏈接庫

2009-08-28 16:19:30

C#實現修改動態鏈接庫

2022-06-09 09:54:45

編譯軟件開發

2022-07-12 13:23:59

靜態鏈接庫可執行文件C 目標文件

2022-05-03 23:44:21

Python動態鏈接庫Ctypes

2024-03-01 20:59:11

C#DLL開發

2011-05-18 17:15:45

2022-10-24 00:03:21

動態鏈接庫DLL

2023-11-29 08:31:20

PythonRust

2009-08-05 16:29:18

C#調用C++動態鏈接

2023-05-09 08:24:11

JNA鏈接庫代碼

2009-10-29 16:36:49

VB.NET .DLL

2010-04-20 16:58:30

Unix操作系統

2022-08-09 07:57:25

Linux操作系統Windows

2023-03-05 16:36:14

Linux鏈接目標文件

2009-08-13 10:29:29

UnixLinux開放源碼

2011-08-02 14:15:05

XCode 靜態 鏈接庫
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日本成人二区 | 91视频免费观看 | 91资源在线观看 | 精品国产不卡一区二区三区 | 91在线区| 欧美久久久久久久久 | 性做久久久久久免费观看欧美 | 伊人精品在线 | 久久国产综合 | 亚洲精品第一页 | 亚洲欧美视频 | 精品久久一区 | 国产福利视频在线观看 | 涩涩导航 | 永久精品| 亚洲精品乱码久久久久久9色 | 日本在线黄色 | 亚洲97| 精品久久久久久亚洲精品 | www.888www看片 | 狠狠草视频 | 一级国产精品一级国产精品片 | 国产综合第一页 | 国产精品久久久久一区二区三区 | 久久大陆| 黄色在线免费观看 | 免费在线黄 | 亚洲欧美中文日韩在线 | 国产在线aa| 日本久久黄色 | 色视频www在线播放国产人成 | 国产精品综合 | 国产精品综合色区在线观看 | 成人亚洲在线 | 成人高清在线 | 久久国产一区 | 欧美一区二区三区精品免费 | 国产黄色大片在线观看 | 91玖玖| www.一区二区三区 | 久热国产在线 |