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

UNIX常用的系統(tǒng)調(diào)用( 二 )


4: 檢查是否可讀
5: 檢查是否可讀和執(zhí)行
6: 檢查是否可讀可寫可執(zhí)行
這些數(shù)字的意義和chmod命令中規(guī)定許可方式的數(shù)字意義相同. 此子程序使用實(shí)際的UID和GID檢測(cè)文件的存取能力(一般有效的UID和GID 用于檢查文件存取能力). 返回值: 0:許可 -1:不許可.
*chmod():將指定文件或目錄的存取許可方式改成新的許可方式. 需要兩個(gè)參數(shù):文件名和新的存取許可方式.
*chown():同時(shí)改變指定文件的所有者和小組的UID和GID.(與chown命令不 同). 由于此子程序同時(shí)改變文件的所有者和小組,故必須取消所操作文件的SUID 和SGID許可,以防止用戶建立SUID和SGID程序,然后運(yùn)行chown()去獲得別 人的權(quán)限.
*stat():返回文件的狀態(tài)(屬性). 需要兩個(gè)參數(shù):文件路徑名和一個(gè)結(jié)構(gòu)指針,指向狀態(tài)信息的存放 的位置. 結(jié)構(gòu)定義如下: st_mode: 文件類型和存取許可方式 st_ino: I節(jié)點(diǎn)號(hào) st_dev: 文件所在設(shè)備的ID st_rdev: 特別文件的ID st_nlink: 文件鏈接數(shù) st_uid: 文件所有者的UID st_gid: 文件小組的GID st_size: 按字節(jié)計(jì)數(shù)的文件大小 st_atime: 最后存取時(shí)間(讀) st_mtime: 最后修改時(shí)間(寫)和最后狀態(tài)的改變 st_ctime: 最后的狀態(tài)修改時(shí)間 返回值: 0:成功 1:失敗
*umask():將調(diào)用進(jìn)程及其子進(jìn)程的文件建立屏蔽值設(shè)置為指定的存取許可. 需要一個(gè)參數(shù): 新的文件建立屏值.
(4)UID和GID的處理
*getuid():返回進(jìn)程的實(shí)際UID.
*getgid():返回進(jìn)程的實(shí)際GID. 以上兩個(gè)子程序可用于確定是誰(shuí)在運(yùn)行進(jìn)程.
*geteuid():返回進(jìn)程的有效UID.
*getegid():返回進(jìn)程的有效GID. 以上兩個(gè)子程序可在一個(gè)程序不得不確定它是否在運(yùn)行某用戶而不是運(yùn)行 它的用戶的SUID程序時(shí)很有用,可調(diào)用它們來(lái)檢查確認(rèn)本程序的確是以該 用戶的SUID許可在運(yùn)行.
*setuid():用于改變有效的UID. 對(duì)于一般用戶,此子程序僅對(duì)要在有效和實(shí)際的UID之間變換的SUID程序才 有用(從原有效UID變換為實(shí)際UID),以保護(hù)進(jìn)程不受到安全危害.實(shí)際上該 進(jìn)程不再是SUID方式運(yùn)行. *setgid():用于改變有效的GID.
2.標(biāo)準(zhǔn)C庫(kù)
(1)標(biāo)準(zhǔn)I/O
*fopen():打開一個(gè)文件供讀或?qū)?安全方面的考慮同open()一樣.
*fread(),getc(),fgetc(),gets(),scanf()和fscanf():從已由fopen()打 開供讀的文件中讀取信息.它們并不關(guān)心文件的存取許可.這一點(diǎn) 同read().
*fwrite(),put(),fputc(),puts,fputs(),printf(),fprintf():寫信息到 已由fopen()打開供寫的文件中.它們也不關(guān)心文件的存取許可. 同write().
*getpass():從終端上讀至多8個(gè)字符長(zhǎng)的口令,不回顯用戶輸入的字符. 需要一個(gè)參數(shù): 提示信息. 該子程序?qū)⑻崾拘畔@示在終端上,禁止字符回顯功能,從/dev/tty讀取口 令,然后再恢復(fù)字符回顯功能,返回剛敲入的口令的指針.
*popen():將在(5)運(yùn)行shell中介紹.
(2)/etc/passwd處理
有一組子程序可對(duì)/etc/passwd文件進(jìn)行方便的存取,可對(duì)文件讀取到入口 項(xiàng)或?qū)懶碌娜肟陧?xiàng)或更新等等.
*getpwuid():從/etc/passwd文件中獲取指定的UID的入口項(xiàng).
*getpwnam():對(duì)于指定的登錄名,在/etc/passwd文件檢索入口項(xiàng).
以上兩個(gè)子程序返回一指向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():對(duì)口令文件作后續(xù)處理.
首次調(diào)用getpwent(),打開/etc/passwd并返回指向文件中第一個(gè)入口項(xiàng)的 指針,保持調(diào)用之間文件的打開狀態(tài). 再調(diào)用getpwent()可順序地返回口令文件中的各入口項(xiàng). 調(diào)用setpwent()把口令文件的指針重新置為文件的開始處. 使用完口令文件后調(diào)用endpwent()關(guān)閉口令文件.

推薦閱讀