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

程序員安全( 二 )


2: 檢查是否可寫
3: 檢查是否可寫和執(zhí)行
4: 檢查是否可讀
5: 檢查是否可讀和執(zhí)行
6: 檢查是否可讀可寫可執(zhí)行
這些數(shù)字的意義和chmod命令中規(guī)定許可方式的數(shù)字意義相同.
此子程序使用實際的UID和GID檢測文件的存取能力(一般有效的UID和GID
用于檢查文件存取能力).
返回值: 0:許可 -1:不許可.
*chmod():將指定文件或目錄的存取許可方式改成新的許可方式.
需要兩個參數(shù):文件名和新的存取許可方式.
*chown():同時改變指定文件的所有者和小組的UID和GID.(與chown命令不
同).
由于此子程序同時改變文件的所有者和小組,故必須取消所操作文件的SUID
和SGID許可,以防止用戶建立SUID和SGID程序,然后運行chown()去獲得別
人的權(quán)限.
*stat():返回文件的狀態(tài)(屬性).
需要兩個參數(shù):文件路徑名和一個結(jié)構(gòu)指針,指向狀態(tài)信息的存放
的位置.
結(jié)構(gòu)定義如下:
st_mode: 文件類型和存取許可方式
st_ino: I節(jié)點號
st_dev: 文件所在設(shè)備的ID
st_rdev: 特別文件的ID
st_nlink: 文件鏈接數(shù)
st_uid: 文件所有者的UID
st_gid: 文件小組的GID
st_size: 按字節(jié)計數(shù)的文件大小
st_atime: 最后存取時間(讀)
st_mtime: 最后修改時間(寫)和最后狀態(tài)的改變
st_ctime: 最后的狀態(tài)修改時間
返回值: 0:成功 1:失敗
*umask():將調(diào)用進程及其子進程的文件建立屏蔽值設(shè)置為指定的存取許可.
需要一個參數(shù): 新的文件建立屏值.

(4)UID和GID的處理
*getuid():返回進程的實際UID.
*getgid():返回進程的實際GID.
以上兩個子程序可用于確定是誰在運行進程.
*geteuid():返回進程的有效UID.
*getegid():返回進程的有效GID.
以上兩個子程序可在一個程序不得不確定它是否在運行某用戶而不是運行
它的用戶的SUID程序時很有用,可調(diào)用它們來檢查確認(rèn)本程序的確是以該
用戶的SUID許可在運行.
*setuid():用于改變有效的UID.
對于一般用戶,此子程序僅對要在有效和實際的UID之間變換的SUID程序才
有用(從原有效UID變換為實際UID),以保護進程不受到安全危害.實際上該
進程不再是SUID方式運行.
*setgid():用于改變有效的GID.

2.標(biāo)準(zhǔn)C庫

(1)標(biāo)準(zhǔn)I/O
*fopen():打開一個文件供讀或?qū)?安全方面的考慮同open()一樣.
*fread(),getc(),fgetc(),gets(),scanf()和fscanf():從已由fopen()打
開供讀的文件中讀取信息.它們并不關(guān)心文件的存取許可.這一點
同read().
*fwrite(),put(),fputc(),puts,fputs(),printf(),fprintf():寫信息到
已由fopen()打開供寫的文件中.它們也不關(guān)心文件的存取許可.
同write().
*getpass():從終端上讀至多8個字符長的口令,不回顯用戶輸入的字符.
需要一個參數(shù): 提示信息.
該子程序?qū)⑻崾拘畔@示在終端上,禁止字符回顯功能,從/dev/tty讀取口
令,然后再恢復(fù)字符回顯功能,返回剛敲入的口令的指針.
*popen():將在(5)運行shell中介紹.

(2)/etc/passwd處理
有一組子程序可對/etc/passwd文件進行方便的存取,可對文件讀取到入口
項或?qū)懶碌娜肟陧椈蚋碌鹊?
*getpwuid():從/etc/passwd文件中獲取指定的UID的入口項.
*getpwnam():對于指定的登錄名,在/etc/passwd文件檢索入口項.
以上兩個子程序返回一指向passwd結(jié)構(gòu)的指針,該結(jié)構(gòu)定義在
/usr/include/pwd.h中,定義如下:
struct passwd {
char * pw_name; /* 登錄名 */
char * pw_passwd; /* 加密后的口令 */
uid_t pw_uid; /* UID */
gid_t pw_gid; /* GID */
char * pw_age; /* 代理信息 */
char * pw_comment; /* 注釋 */
char * pw_gecos;
char * pw_dir; /* 主目錄 */
char * pw_shell; /* 使用的shell */
};
*getpwent(),setpwent(),endpwent():對口令文件作后續(xù)處理.

推薦閱讀