




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、 UNIX系統為程序員提供了許多子程序,這些子程序可存取各種安全屬性.有 些是信息子程序,返回文件屬性,實際的和有效的UID,GID等信息.有些子程序可 改變文件屬性.UID,GID等有些處理口令文件和小組文件,還有些完成加密和解密. 本文主要討論有關系統子程序,標準C庫子程序的安全,如何寫安全的C程序 并從root的角度介紹程序設計(僅能被root調用的子程序). 1.系統子程序 (1)I/O子程序 *creat():建立一個新文件或重寫一個暫存文件. 需要兩個參數:文件名和存取許可值(8進制方式).如: creat("/usr/pat
2、/read_write",0666) /* 建立存取許可方式為0666的文件 */ 調用此子程序的進程必須要有建立的文件的所在目錄的寫和執行許可,置 給creat()的許可方式變量將被umask()設置的文件建立屏蔽值所修改,新 文件的所有者和小組由有效的UID和GID決定. 返回值為新建文件的文件描述符. *fstat():見后面的stat(). *open():在C程序內部打開文件. 需要兩個參數:文件路徑名和打開方式(I,O,I&O). 如果調用此子程序的進程沒有對于要打開的文件的正確存取許可(包括文 件路徑上所有目錄分量的搜索許可),將會引起執行失敗. 如果此子程序被
3、調用去打開不存在的文件,除非設置了O_CREAT標志,調用 將不成功.此時,新文件的存取許可作為第三個參數(可被用戶的umask修 改). 當文件被進程打開后再改變該文件或該文件所在目錄的存取許可,不影響 對該文件的I/O操作. *read():從已由open()打開并用作輸入的文件中讀信息. 它并不關心該文件的存取許可.一旦文件作為輸入打開,即可從該文件中讀 取信息. *write():輸出信息到已由open()打開并用作輸出的文件中.同read()一樣 它也不關心該文件的存取許可. (2)進程控制 *exec()族:包括execl(),execv(),execle(),execve(),e
4、xeclp()和execvp() 可將一可執行模快拷貝到調用進程占有的存貯空間.正被調用進 程執行的程序將不復存在,新程序取代其位置. 這是UNIX系統中一個程序被執行的唯一方式:用將執行的程序復蓋原有的 程序. 安全注意事項: . 實際的和有效的UID和GID傳遞給由exec()調入的不具有SUID和SGID許 可的程序. . 如果由exec()調入的程序有SUID和SGID許可,則有效的UID和GID將設 置給該程序的所有者或小組. . 文件建立屏蔽值將傳遞給新程序. . 除設了對exec()關閉標志的文件外,所有打開的文件都傳遞給新程序. 用fcntl()子程序可設置對exec()的關閉
5、標志. *fork():用來建立新進程.其建立的子進程是與調用fork()的進程(父進程) 完全相同的拷貝(除了進程號外) 安全注意事項: . 子進程將繼承父進程的實際和有效的UID和GID. . 子進程繼承文件方式建立屏蔽值. . 所有打開的文件傳給子進程. *signal():允許進程處理可能發生的意外事件和中斷. 需要兩個參數:信號編號和信號發生時要調用的子程序. 信號編號定義在signal.h中. 信號發生時要調用的子程序可由用戶編寫,也可用系統給的值,如:SIG_IGN 則信號將被忽略,SIG_DFL則信號將按系統的缺省方式處理. 如許多與安全有關的程序禁止終端發中斷信息(BREAK
6、和DELETE),以免自己 被用戶終端終止運行. 有些信號使UNIX系統的產生進程的核心轉儲(進程接收到信號時所占內存 的內容,有時含有重要信息),此系統子程序可用于禁止核心轉儲. (3)文件屬性 *access():檢測指定文件的存取能力是否符合指定的存取類型. 需要兩個參數:文件名和要檢測的存取類型(整數). 存取類型定義如下: 0: 檢查文件是否存在 1: 檢查是否可執行(搜索) 2: 檢查是否可寫 3: 檢查是否可寫和執行 4: 檢查是否可讀 5: 檢查是否可讀和執行 6: 檢查是否可讀可寫可執行 這些數字的意義和chmod命令中規定許可方式的數字意義相同. 此子程序使用實際的UID和
7、GID檢測文件的存取能力(一般有效的UID和GID 用于檢查文件存取能力). 返回值: 0:許可 -1:不許可. *chmod():將指定文件或目錄的存取許可方式改成新的許可方式. 需要兩個參數:文件名和新的存取許可方式. *chown():同時改變指定文件的所有者和小組的UID和GID.(與chown命令不 同). 由于此子程序同時改變文件的所有者和小組,故必須取消所操作文件的SUID 和SGID許可,以防止用戶建立SUID和SGID程序,然后運行chown()去獲得別 人的權限. *stat():返回文件的狀態(屬性). 需要兩個參數:文件路徑名和一個結構指針,指向狀態信息的存放 的位置.
8、 結構定義如下: st_mode: 文件類型和存取許可方式 st_ino: I節點號 st_dev: 文件所在設備的ID st_rdev: 特別文件的ID st_nlink: 文件鏈接數 st_uid: 文件所有者的UID st_gid: 文件小組的GID st_size: 按字節計數的文件大小 st_atime: 最后存取時間(讀) st_mtime: 最后修改時間(寫)和最后狀態的改變 st_ctime: 最后的狀態修改時間 返回值: 0:成功 1:失敗 *umask():將調用進程及其子進程的文件建立屏蔽值設置為指定的存取許可. 需要一個參數: 新的文件建立屏值. (4)UID和GID的處理 *getuid():返回進程的實際UID. *getgid():返回進程的實際GID. 以上兩個子
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 城市軌道交通通信信號技術專業教學標準(高等職業教育專科)2025修訂
- 2025年中國秸稈建筑系統行業市場全景分析及前景機遇研判報告
- 石家莊塑料垃圾桶項目投資分析報告模板
- 疥瘡防治指南
- 2025年中國林果業行業市場調查研究及投資潛力預測報告
- 東大街紋身培訓課件
- 中國海水淡化行業市場深度調查評估及投資方向研究報告
- 2025年中國高強度船用氣囊行業競爭格局及市場發展潛力預測報告
- 2024年中國藥用膠塞行業市場發展現狀及投資前景展望報告
- 醫療器械項目預算分析報告
- 《平行四邊形的面積》說課課件
- 2025年九年級語文中考最后一練口語交際(全國版)(含解析)
- 一例高血壓護理個案
- 中國強軍之路課件
- GB/T 18913-2025船舶與海洋技術航海氣象圖傳真接收機
- 2025-2030中國風力發電機機艙行業市場現狀供需分析及投資評估規劃分析研究報告
- 2025年廣東省深圳市龍崗區中考英語二模試卷
- 2024年注冊會計師考試《會計》真題及答案解析
- 南通市啟東市醫療衛生單位招聘事業編制人員考試真題2024
- 2024-2025學年度人教版二年級數學下學期期末試卷(含答案)
- 北京限額以下小型工程安全生產管理規范解讀
評論
0/150
提交評論