C语言编程之 UNIX常用库函数

C语言编程之 UNIX常用库函数

ID:41032626

大小:51.00 KB

页数:7页

时间:2019-08-14

C语言编程之 UNIX常用库函数_第1页
C语言编程之 UNIX常用库函数_第2页
C语言编程之 UNIX常用库函数_第3页
C语言编程之 UNIX常用库函数_第4页
C语言编程之 UNIX常用库函数_第5页
资源描述:

《C语言编程之 UNIX常用库函数》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、UNIX(Linux)系统编程常用库函数说明(阅览4167次)作者:169时间:2000-02-25.19:07:14※来源:绿色兵团UNIX系统为程序员提供了许多子程序,这些子程序可存取各种安全属性.有些是信息子程序,返回文件属性,实际的和有效的UID,GID等信息.有些子程序可改变文件属性.UID,GID等有些处理口令文件和小组文件,还有些完成加密和解密.本文主要讨论有关系统子程序,标准C库子程序的安全,如何写安全的C程序并从root的角度介绍程序设计(仅能被root调用的子程序).1.系统子程序(1)I/O子程序*cr

2、eat():建立一个新文件或重写一个暂存文件.需要两个参数:文件名和存取许可值(8进制方式).如:creat("/usr/pat/read_write",0666)/*建立存取许可方式为0666的文件*/调用此子程序的进程必须要有建立的文件的所在目录的写和执行许可,置给creat()的许可方式变量将被umask()设置的文件建立屏蔽值所修改,新文件的所有者和小组由有效的UID和GID决定.返回值为新建文件的文件描述符.*fstat():见后面的stat().*open():在C程序内部打开文件.需要两个参数:文件路径名和打开

3、方式(I,O,I&O).如果调用此子程序的进程没有对于要打开的文件的正确存取许可(包括文件路径上所有目录分量的搜索许可),将会引起执行失败.如果此子程序被调用去打开不存在的文件,除非设置了O_CREAT标志,调用将不成功.此时,新文件的存取许可作为第三个参数(可被用户的umask修改).当文件被进程打开后再改变该文件或该文件所在目录的存取许可,不影响对该文件的I/O操作.*read():从已由open()打开并用作输入的文件中读信息.它并不关心该文件的存取许可.一旦文件作为输入打开,即可从该文件中读取信息.*write():

4、输出信息到已由open()打开并用作输出的文件中.同read()一样它也不关心该文件的存取许可.(2)进程控制*exec()族:包括execl(),execv(),execle(),execve(),execlp()和execvp()可将一可执行模快拷贝到调用进程占有的存贮空间.正被调用进程执行的程序将不复存在,新程序取代其位置.这是UNIX系统中一个程序被执行的唯一方式:用将执行的程序复盖原有的程序.安全注意事项:.实际的和有效的UID和GID传递给由exec()调入的不具有SUID和SGID许可的程序..如果由exec(

5、)调入的程序有SUID和SGID许可,则有效的UID和GID将设置给该程序的所有者或小组..文件建立屏蔽值将传递给新程序..除设了对exec()关闭标志的文件外,所有打开的文件都传递给新程序.用fcntl()子程序可设置对exec()的关闭标志.*fork():用来建立新进程.其建立的子进程是与调用fork()的进程(父进程)完全相同的拷贝(除了进程号外)安全注意事项:.子进程将继承父进程的实际和有效的UID和GID..子进程继承文件方式建立屏蔽值..所有打开的文件传给子进程.*signal():允许进程处理可能发生的意外事

6、件和中断,需要两个参数:信号编号和信号发生时要调用的子程序.信号编号定义在signal.h中.信号发生时要调用的子程序可由用户编写,也可用系统给的值,如:SIG_IGN则信号将被忽略,SIG_DFL则信号将按系统的缺省方式处理.如许多与安全有关的程序禁止终端发中断信息(BREAK和DELETE),以免自己被用户终端终止运行.有些信号使UNIX系统的产生进程的核心转储(进程接收到信号时所占内存的内容,有时含有重要信息),此系统子程序可用于禁止核心转储.(3)文件属性*access():检测指定文件的存取能力是否符合指定的存取类

7、型.需要两个参数:文件名和要检测的存取类型(整数).存取类型定义如下:0:检查文件是否存在1:检查是否可执行(搜索)2:检查是否可写3:检查是否可写和执行4:检查是否可读5:检查是否可读和执行6:检查是否可读可写可执行这些数字的意义和chmod命令中规定许可方式的数字意义相同.此子程序使用实际的UID和GID检测文件的存取能力(一般有效的UID和GID用于检查文件存取能力).返回值:0:许可-1:不许可.*chmod():将指定文件或目录的存取许可方式改成新的许可方式.需要两个参数:文件名和新的存取许可方式.*chown()

8、:同时改变指定文件的所有者和小组的UID和GID.(与chown命令不同).由于此子程序同时改变文件的所有者和小组,故必须取消所操作文件的SUID和SGID许可,以防止用户建立SUID和SGID程序,然后运行chown()去获得别人的权限.*stat():返回文件的状态(属性).需要两个参

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。