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

unix下專供root調(diào)用程序的介紹


系統(tǒng)子程序設(shè)計(jì)

Unix系統(tǒng)為程序員提供了許多子程序,這些子程序可存取各種安全屬性.有些是信息子程序,返回文件屬性,實(shí)際的和有效的UID,GID等信息.有些子程序可改變文件屬性.UID,GID等有些處理口令文件和小組文件,還有些完成加密和解密.
本文主要討論有關(guān)系統(tǒng)子程序,標(biāo)準(zhǔn)C庫(kù)子程序的安全,如何寫安全的C程序. 并從root的角度介紹程序設(shè)計(jì)(僅能被root調(diào)用的子程序).
1.系統(tǒng)子程序(1) I/O子程序● creat():建立一個(gè)新文件或重寫一個(gè)暫存文件.
需要兩個(gè)參數(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)部打開文件.
需要兩個(gè)參數(shù):文件路徑名和打開方式(I,O,I&O).
如果調(diào)用此子程序的進(jìn)程沒有對(duì)于要打開的文件的正確存取許可(包括文件路徑上所
有目錄分量的搜索許可),將會(huì)引起執(zhí)行失敗.
如果此子程序被調(diào)用去打開不存在的文件,除非設(shè)置了O_CREAT標(biāo)志,調(diào)用將不成功.
此時(shí),新文件的存取許可作為第三個(gè)參數(shù)(可被用戶的umask修改).
當(dāng)文件被進(jìn)程打開后再改變?cè)撐募蛟撐募谀夸浀拇嫒≡S可,不影響對(duì)該文件的
I/O操作.● read():從已由open()打開并用作輸入的文件中讀信息.
它并不關(guān)心該文件的存取許可.一旦文件作為輸入打開,即可從該文件中讀取信息.● write():輸出信息到已由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)中一個(gè)程序被執(zhí)行的唯一方式:用將執(zhí)行的程序復(fù)蓋原有的程序.
安全注意事項(xiàng):
. 實(shí)際的和有效的UID和GID傳遞給由exec()調(diào)入的不具有SUID和SGID許可的程序.
. 如果由exec()調(diào)入的程序有SUID和SGID許可,則有效的UID和GID將設(shè)置給該程序
的所有者或小組.
. 文件建立屏蔽值將傳遞給新程序.
. 除設(shè)了對(duì)exec()關(guān)閉標(biāo)志的文件外,所有打開的文件都傳遞給新程序.
. 用fcntl()子程序可設(shè)置對(duì)exec()的關(guān)閉標(biāo)志.● fork():用來建立新進(jìn)程.
其建立的子進(jìn)程是與調(diào)用fork()進(jìn)程(父進(jìn)程)完全相同的拷貝(除了進(jìn)程號(hào)外)
安全注意事項(xiàng):
. 子進(jìn)程將繼承父進(jìn)程的實(shí)際和有效的UID和GID.
. 子進(jìn)程繼承文件方式建立屏蔽值.
. 所有打開的文件傳給子進(jìn)程.● signal():允許進(jìn)程處理可能發(fā)生的意外事件和中斷.
需要兩個(gè)參數(shù):信號(hào)編號(hào)和信號(hào)發(fā)生時(shí)要調(diào)用的子程序.
信號(hào)編號(hào)定義在signal.h中.
信號(hào)發(fā)生時(shí)要調(diào)用的子程序可由用戶編寫,也可用系統(tǒng)給的值,如:SIG_IGN, 則信
號(hào)將被忽略,SIG_DFL則信號(hào)將按系統(tǒng)的缺省方式處理.
如許多與安全有關(guān)的程序禁止終端發(fā)中斷信息(BREAK和DELETE),以免自己被用戶
終端終止運(yùn)行.
有些信號(hào)使UNIX系統(tǒng)的產(chǎn)生進(jìn)程的核心轉(zhuǎn)儲(chǔ)(進(jìn)程接收到信號(hào)時(shí)所占內(nèi)存的內(nèi)容,有
時(shí)含有重要信息),此系統(tǒng)子程序可用于禁止核心轉(zhuǎn)儲(chǔ).
(3) 文件屬性● access():檢測(cè)指定文件的存取能力是否符合指定的存取類型.
需要兩個(gè)參數(shù):文件名和要檢測(cè)的存取類型(整數(shù)).
存取類型定義如下:
0: 檢查文件是否存在
1: 檢查是否可執(zhí)行(搜索)
2: 檢查是否可寫
3: 檢查是否可寫和執(zhí)行

推薦閱讀