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

unix下專供root調用程序的介紹( 三 )


再調用getpwent()可順序地返回口令文件中的各入口項.
調用setpwent()把口令文件的指針重新置為文件的開始處.
使用完口令文件后調用endpwent()關閉口令文件.● putpwent():修改或增加/etc/passwd文件中的入口項.
此子程序將入口項寫到一個指定的文件中,一般是一個臨時文件,直接寫口令文件是
很危險的.最好在執(zhí)行前做文件封鎖,使兩個程序不能同時寫一個文件.算法如下:
. 建立一個獨立的臨時文件,即/etc/passnnn,nnn是PID號.
. 建立新產(chǎn)生的臨時文件和標準臨時文件/etc/ptmp的鏈,若建鏈失敗,則為有人正
在使用/etc/ptmp,等待直到/etc/ptmp可用為止或退出.
. 將/etc/passwd拷貝到/etc/ptmp,可對此文件做任何修改.
. 將/etc/passwd移到備份文件/etc/opasswd.
. 建立/etc/ptmp和/etc/passwd的鏈.
. 斷開/etc/passnnn與/etc/ptmp的鏈.
注意:臨時文件應建立在/etc目錄,才能保證文件處于同一文件系統(tǒng)中,建鏈才能成
功,且臨時文件不會不安全.此外,若新文件已存在,即便建鏈的是root用戶,也將失
敗,從而保證了一旦臨時文件成功地建鏈后沒有人能再插進來干擾.當然,使用臨時
文件的程序應確保清除所有臨時文件,正確地捕捉信號.
(3) /etc/group的處理有一組類似于前面的子程序處理/etc/group的信息,使用時必須用include語句將/usr/include/grp.h文件加入到自己的程序中.該文件定義了group結構,將由
getgrnam(),getgrgid(),getgrent()返回group結構指針.● getgrnam():在/etc/group文件中搜索指定小組名,然后返回指向小組入口項指針.● getgrgid():類似于前一子程序,不同的是搜索指定的GID.● getgrent():返回group文件中的下一個入口項.● setgrent():將group文件的文件指針恢復到文件的起點.● endgrent():用于完成工作后,關閉group文件.● getuid():返回調用進程的實際UID.● getpruid():以getuid()返回的實際UID為參數(shù),確定與實際UID相應的登錄名,或指
定一UID為參數(shù).● getlogin():返回在終端上登錄的用戶的指針.
系統(tǒng)依次檢查STDIN,STDOUT,STDERR是否與終端相聯(lián),與終端相聯(lián)的標準輸入用于
確定終端名,終端名用于查找列于/etc/utmp文件中的用戶,該文件由login維護,由
who程序用來確認用戶.● cuserid():首先調用getlogin(),若getlogin()返回NULL指針,再調用getpwuid
(getuid()).以下為命令:● logname:列出登錄進終端的用戶名.
● who am i:顯示出運行這條命令的用戶的登錄名.
● id:顯示實際的UID和GID(若有效的UID和GID和實際的不同時也顯示有效的UID和
GID)和相應的登錄名.
(4) 加密子程序1977年1月,NBS宣布一個用于美國聯(lián)邦政府ADP系統(tǒng)的網(wǎng)絡的標準加密法:數(shù)據(jù)加密標準即DES用于非機密應用方面.DES一次處理64BITS的塊,56位的加密鍵.● setkey(),encrypt():提供用戶對DES的存取.
此兩子程序都取64BITS長的字符數(shù)組,數(shù)組中的每個元素代表一個位,為0或1.
setkey()設置將按DES處理的加密鍵,忽略每第8位構成一個56位的加密鍵.
encrypt()然后加密或解密給定的64BITS長的一塊,加密或解密取決于該子程序的
第二個變元,0:加密 1:解密.● crypt():是UNIX系統(tǒng)中的口令加密程序,也被/usr/lib/makekey命令調用.
crypt()子程序與crypt命令無關,它與/usr/lib/makekey一樣取8個字符長的關鍵
詞,2個salt字符.關鍵詞送給setkey(),salt字符用于混合encrypt()中的DES算法,
最終調用encrypt()重復25次加密一個相同的字符串.
返回加密后的字符串指針.
(5) 運行shell● system():運行/bin/sh執(zhí)行其參數(shù)指定的命令,當指定命令完成時返回.● popen():類似于system(),不同的是命令運行時,其標準輸入或輸出聯(lián)到由popen()
返回的文件指針.二者都調用fork(),exec(),popen()還調用pipe(),完成各自的工作,因而fork()和exec()的安全方面的考慮開始起作用.

推薦閱讀