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

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


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()去獲得別人的權限.● stat():返回文件的狀態(tài)(屬性).
需要兩個參數(shù):文件路徑名和一個結構指針,指向狀態(tài)信息的存放的位置.
結構定義如下:
st_mode: 文件類型和存取許可方式
st_ino: I節(jié)點號
st_dev: 文件所在設備的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():將調用進程及其子進程的文件建立屏蔽值設置為指定的存取許可.
需要一個參數(shù): 新的文件建立屏值.
(4) UID和GID的處理● getuid():返回進程的實際UID.● getgid():返回進程的實際GID.
以上兩個子程序可用于確定是誰在運行進程.● geteuid():返回進程的有效UID.● getegid():返回進程的有效GID.
以上兩個子程序可在一個程序不得不確定它是否在運行某用戶而不是運行它的用戶
的SUID程序時很有用,可調用它們來檢查確認本程序的確是以該用戶的SUID許可在
運行.● setuid():用于改變有效的UID.
對于一般用戶,此子程序僅對要在有效和實際的UID之間變換的SUID程序才有用(從原
有效UID變換為實際UID),以保護進程不受到安全危害.實際上該進程不再是SUID方
式運行.● setgid():用于改變有效的GID.
2. 標準C庫(1) 標準I/O● fopen():打開一個文件供讀或寫,安全方面的考慮同open()一樣.● fread(),getc(),fgetc(),gets(),scanf()和fscanf():從已由fopen()打開供讀的
文件中讀取信息.它們并不關心文件的存取許可.這一點同read().● fwrite(),put(),fputc(),puts,fputs(),printf(),fprintf():寫信息到已由
fopen()打開供寫的文件中.它們也不關心文件的存取許可.同write().● getpass():從終端上讀至多8個字符長的口令,不回顯用戶輸入的字符.
需要一個參數(shù): 提示信息.
該子程序將提示信息顯示在終端上,禁止字符回顯功能,從/dev/tty讀取口令,然后
再恢復字符回顯功能,返回剛敲入的口令的指針.● popen():將在(5)運行shell中介紹.
(2) /etc/passwd處理有一組子程序可對/etc/passwd文件進行方便的存取,可對文件讀取到入口項或寫新的入口
項或更新等等.● getpwuid():從/etc/passwd文件中獲取指定的UID的入口項.
● getpwnam():對于指定的登錄名,在/etc/passwd文件檢索入口項.
以上兩個子程序返回一指向passwd結構的指針,該結構定義在/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ù)處理.
首次調用getpwent(),打開/etc/passwd并返回指向文件中第一個入口項的指針,
保持調用之間文件的打開狀態(tài).

推薦閱讀