日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

UNIX常用的系統調用

【UNIX常用的系統調用】
系統管理-Unix編程-UNIX系統編程常用庫函數說明
UNIX系統為程序員提供了許多子程序,這些子程序可存取各種安全屬性.有 些是信息子程序,返回文件屬性,實際的和有效的UID,GID等信息.有些子程序可 改變文件屬性.UID,GID等有些處理口令文件和小組文件,還有些完成加密和解密. 本文主要討論有關系統子程序,標準C庫子程序的安全,如何寫安全的C程序 并從root的角度介紹程序設計(僅能被root調用的子程序).
1.系統子程序
(1)I/O子程序
*creat():建立一個新文件或重寫一個暫存文件. 需要兩個參數:文件名和存取許可值(8進制方式).如: creat("/usr/pat/read_write",0666) /* 建立存取許可方式為0666的文件 */ 調用此子程序的進程必須要有建立的文件的所在目錄的寫和執(zhí)行許可,置 給creat()的許可方式變量將被umask()設置的文件建立屏蔽值所修改,新 文件的所有者和小組由有效的UID和GID決定. 返回值為新建文件的文件描述符.
*fstat():見后面的stat().
*open():在C程序內部打開文件. 需要兩個參數:文件路徑名和打開方式(I,O,I&O). 如果調用此子程序的進程沒有對于要打開的文件的正確存取許可(包括文 件路徑上所有目錄分量的搜索許可),將會引起執(zhí)行失敗. 如果此子程序被調用去打開不存在的文件,除非設置了O_CREAT標志,調用 將不成功.此時,新文件的存取許可作為第三個參數(可被用戶的umask修 改).
當文件被進程打開后再改變該文件或該文件所在目錄的存取許可,不影響對該文件的I/O操作.
*read():從已由open()打開并用作輸入的文件中讀信息. 它并不關心該文件的存取許可.一旦文件作為輸入打開,即可從該文件中讀 取信息.
*write():輸出信息到已由open()打開并用作輸出的文件中.同read()一樣 它也不關心該文件的存取許可.
(2)進程控制
*exec()族:包括execl(),execv(),execle(),execve(),execlp()和execvp() 可將一可執(zhí)行??炜截惖秸{用進程占有的存貯空間.正被調用進 程執(zhí)行的程序將不復存在,新程序取代其位置. 這是UNIX系統中一個程序被執(zhí)行的唯一方式:用將執(zhí)行的程序復蓋原有的 程序.
安全注意事項:
. 實際的和有效的UID和GID傳遞給由exec()調入的不具有SUID和SGID許 可的程序.
. 如果由exec()調入的程序有SUID和SGID許可,則有效的UID和GID將設 置給該程序的所有者或小組
. 文件建立屏蔽值將傳遞給新程序.
. 除設了對exec()關閉標志的文件外,所有打開的文件都傳遞給新程序. 用fcntl()子程序可設置對exec()的關閉標志.
*fork():用來建立新進程.其建立的子進程是與調用fork()的進程(父進程) 完全相同的拷貝(除了進程號外)
安全注意事項:
. 子進程將繼承父進程的實際和有效的UID和GID. . 子進程繼承文件方式建立屏蔽值.
. 所有打開的文件傳給子進程.
*signal():允許進程處理可能發(fā)生的意外事件和中斷. 需要兩個參數:信號編號和信號發(fā)生時要調用的子程序. 信號編號定義在signal.h中. 信號發(fā)生時要調用的子程序可由用戶編寫,也可用系統給的值,如:SIG_IGN 則信號將被忽略,SIG_DFL則信號將按系統的缺省方式處理. 如許多與安全有關的程序禁止終端發(fā)中斷信息(BREAK和DELETE),以免自己 被用戶終端終止運行. 有些信號使UNIX系統的產生進程的核心轉儲(進程接收到信號時所占內存 的內容,有時含有重要信息),此系統子程序可用于禁止核心轉儲.
(3)文件屬性
*access():檢測指定文件的存取能力是否符合指定的存取類型. 需要兩個參數:文件名和要檢測的存取類型(整數).
存取類型定義如下:
0: 檢查文件是否存在
1: 檢查是否可執(zhí)行(搜索)
2: 檢查是否可寫
3: 檢查是否可寫和執(zhí)行

推薦閱讀