C語言編程之 UNIX常用庫函數(shù)

C語言編程之 UNIX常用庫函數(shù)

ID:41032626

大?。?1.00 KB

頁數(shù):7頁

時間:2019-08-14

C語言編程之 UNIX常用庫函數(shù)_第1頁
C語言編程之 UNIX常用庫函數(shù)_第2頁
C語言編程之 UNIX常用庫函數(shù)_第3頁
C語言編程之 UNIX常用庫函數(shù)_第4頁
C語言編程之 UNIX常用庫函數(shù)_第5頁
資源描述:

《C語言編程之 UNIX常用庫函數(shù)》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。

1、UNIX(Linux)系統(tǒng)編程常用庫函數(shù)說明(閱覽4167次)作者:169時間:2000-02-25.19:07:14※來源:綠色兵團(tuán)UNIX系統(tǒng)為程序員提供了許多子程序,這些子程序可存取各種安全屬性.有些是信息子程序,返回文件屬性,實(shí)際的和有效的UID,GID等信息.有些子程序可改變文件屬性.UID,GID等有些處理口令文件和小組文件,還有些完成加密和解密.本文主要討論有關(guān)系統(tǒng)子程序,標(biāo)準(zhǔn)C庫子程序的安全,如何寫安全的C程序并從root的角度介紹程序設(shè)計(jì)(僅能被root調(diào)用的子程序).1.系統(tǒng)子程序(1)I/O子程序*cr

2、eat():建立一個新文件或重寫一個暫存文件.需要兩個參數(shù):文件名和存取許可值(8進(jìn)制方式).如:creat("/usr/pat/read_write",0666)/*建立存取許可方式為0666的文件*/調(diào)用此子程序的進(jìn)程必須要有建立的文件的所在目錄的寫和執(zhí)行許可,置給creat()的許可方式變量將被umask()設(shè)置的文件建立屏蔽值所修改,新文件的所有者和小組由有效的UID和GID決定.返回值為新建文件的文件描述符.*fstat():見后面的stat().*open():在C程序內(nèi)部打開文件.需要兩個參數(shù):文件路徑名和打開

3、方式(I,O,I&O).如果調(diào)用此子程序的進(jìn)程沒有對于要打開的文件的正確存取許可(包括文件路徑上所有目錄分量的搜索許可),將會引起執(zhí)行失敗.如果此子程序被調(diào)用去打開不存在的文件,除非設(shè)置了O_CREAT標(biāo)志,調(diào)用將不成功.此時,新文件的存取許可作為第三個參數(shù)(可被用戶的umask修改).當(dāng)文件被進(jìn)程打開后再改變該文件或該文件所在目錄的存取許可,不影響對該文件的I/O操作.*read():從已由open()打開并用作輸入的文件中讀信息.它并不關(guān)心該文件的存取許可.一旦文件作為輸入打開,即可從該文件中讀取信息.*write():

4、輸出信息到已由open()打開并用作輸出的文件中.同read()一樣它也不關(guān)心該文件的存取許可.(2)進(jìn)程控制*exec()族:包括execl(),execv(),execle(),execve(),execlp()和execvp()可將一可執(zhí)行模快拷貝到調(diào)用進(jìn)程占有的存貯空間.正被調(diào)用進(jìn)程執(zhí)行的程序?qū)⒉粡?fù)存在,新程序取代其位置.這是UNIX系統(tǒng)中一個程序被執(zhí)行的唯一方式:用將執(zhí)行的程序復(fù)蓋原有的程序.安全注意事項(xiàng):.實(shí)際的和有效的UID和GID傳遞給由exec()調(diào)入的不具有SUID和SGID許可的程序..如果由exec(

5、)調(diào)入的程序有SUID和SGID許可,則有效的UID和GID將設(shè)置給該程序的所有者或小組..文件建立屏蔽值將傳遞給新程序..除設(shè)了對exec()關(guān)閉標(biāo)志的文件外,所有打開的文件都傳遞給新程序.用fcntl()子程序可設(shè)置對exec()的關(guān)閉標(biāo)志.*fork():用來建立新進(jìn)程.其建立的子進(jìn)程是與調(diào)用fork()的進(jìn)程(父進(jìn)程)完全相同的拷貝(除了進(jìn)程號外)安全注意事項(xiàng):.子進(jìn)程將繼承父進(jìn)程的實(shí)際和有效的UID和GID..子進(jìn)程繼承文件方式建立屏蔽值..所有打開的文件傳給子進(jìn)程.*signal():允許進(jìn)程處理可能發(fā)生的意外事

6、件和中斷,需要兩個參數(shù):信號編號和信號發(fā)生時要調(diào)用的子程序.信號編號定義在signal.h中.信號發(fā)生時要調(diào)用的子程序可由用戶編寫,也可用系統(tǒng)給的值,如:SIG_IGN則信號將被忽略,SIG_DFL則信號將按系統(tǒng)的缺省方式處理.如許多與安全有關(guān)的程序禁止終端發(fā)中斷信息(BREAK和DELETE),以免自己被用戶終端終止運(yùn)行.有些信號使UNIX系統(tǒng)的產(chǎn)生進(jìn)程的核心轉(zhuǎn)儲(進(jìn)程接收到信號時所占內(nèi)存的內(nèi)容,有時含有重要信息),此系統(tǒng)子程序可用于禁止核心轉(zhuǎn)儲.(3)文件屬性*access():檢測指定文件的存取能力是否符合指定的存取類

7、型.需要兩個參數(shù):文件名和要檢測的存取類型(整數(shù)).存取類型定義如下:0:檢查文件是否存在1:檢查是否可執(zhí)行(搜索)2:檢查是否可寫3:檢查是否可寫和執(zhí)行4:檢查是否可讀5:檢查是否可讀和執(zhí)行6:檢查是否可讀可寫可執(zhí)行這些數(shù)字的意義和chmod命令中規(guī)定許可方式的數(shù)字意義相同.此子程序使用實(shí)際的UID和GID檢測文件的存取能力(一般有效的UID和GID用于檢查文件存取能力).返回值:0:許可-1:不許可.*chmod():將指定文件或目錄的存取許可方式改成新的許可方式.需要兩個參數(shù):文件名和新的存取許可方式.*chown()

8、:同時改變指定文件的所有者和小組的UID和GID.(與chown命令不同).由于此子程序同時改變文件的所有者和小組,故必須取消所操作文件的SUID和SGID許可,以防止用戶建立SUID和SGID程序,然后運(yùn)行chown()去獲得別人的權(quán)限.*stat():返回文件的狀態(tài)(屬性).需要兩個參

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費(fèi)完成后未能成功下載的用戶請聯(lián)系客服處理。