第十一章 C语言编程之 UNIX常用库函数.doc

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
UNIX(Linux)系统编程常用库函数说明 (阅览 4167 次) 作者:169 时间:2000-02-25.19:07:14 ※ 来源: 绿色兵团 UNIX系统为程序员提供了许多子程序,这些子程序可存取各种安全属性.有些是信息子程序,返回文件属性,实际的和有效的UID,GID等信息.有些子程序可改变文件属性.UID,GID等有些处理口令文件和小组文件,还有些完成加密和解密. 本文主要讨论有关系统子程序,标准C库子程序的安全,如何写安全的C程序并从root的角度介绍程序设计(仅能被root调用的子程序). 1.系统子程序 (1)I/O子程序 *creat():建立一个新文件或重写一个暂存文件. 需要两个参数:文件名和存取许可值(8进制方式).如: creat(/usr/pat/read_write,0666) /* 建立存取许可方式为0666的文件 */ 调用此子程序的进程必须要有建立的文件的所在目录的写和执行许可,置给creat()的许可方式变量将被umask()设置的文件建立屏蔽值所修改,新文件的所有者和小组由有效的UID和GID决定. 返回值为新建文件的文件描述符. *fstat():见后面的stat(). *open():在C程序内部打开文件. 需要两个参数:文件路径名和打开方式(I,O,IO). 如果调用此子程序的进程没有对于要打开的文件的正确存取许可(包括文件路径上所有目录分量的有哪些信誉好的足球投注网站许可),将会引起执行失败. 如果此子程序被调用去打开不存在的文件,除非设置了O_CREAT标志,调用将不成功.此时,新文件的存取许可作为第三个参数(可被用户的umask修改). 当文件被进程打开后再改变该文件或该文件所在目录的存取许可,不影响对该文件的I/O操作. *read():从已由open()打开并用作输入的文件中读信息. 它并不关心该文件的存取许可.一旦文件作为输入打开,即可从该文件中读取信息. *write():输出信息到已由open()打开并用作输出的文件中.同read()一样它也不关心该文件的存取许可. (2)进程控制 *exec()族:包括execl(),execv(),execle(),execve(),execlp()和execvp() 可将一可执行模快拷贝到调用进程占有的存贮空间.正被调用进程执行的程序将不复存在,新程序取代其位置. 这是UNIX系统中一个程序被执行的唯一方式:用将执行的程序复盖原有的程序. 安全注意事项: . 实际的和有效的UID和GID传递给由exec()调入的不具有SUID和SGID许可的程序. . 如果由exec()调入的程序有SUID和SGID许可,则有效的UID和GID将设置给该程序的所有者或小组. . 文件建立屏蔽值将传递给新程序. . 除设了对exec()关闭标志的文件外,所有打开的文件都传递给新程序. 用fcntl()子程序可设置对exec()的关闭标志. *fork():用来建立新进程.其建立的子进程是与调用fork()的进程(父进程)完全相同的拷贝(除了进程号外) 安全注意事项: . 子进程将继承父进程的实际和有效的UID和GID. . 子进程继承文件方式建立屏蔽值. . 所有打开的文件传给子进程. *signal():允许进程处理可能发生的意外事件和中断,需要两个参数:信号编号和信号发生时要调用的子程序. 信号编号定义在signal.h中. 信号发生时要调用的子程序可由用户编写,也可用系统给的值,如:SIG_IGN 则信号将被忽略,SIG_DFL则信号将按系统的缺省方式处理. 如许多与安全有关的程序禁止终端发中断信息(BREAK和DELETE),以免自己被用户终端终止运行. 有些信号使UNIX系统的产生进程的核心转储(进程接收到信号时所占内存的内容,有时含有重要信息),此系统子程序可用于禁止核心转储. (3)文件属性 *access():检测指定文件的存取能力是否符合指定的存取类型.需要两个参数:文件名和要检测的存取类型(整数). 存取类型定义如下: 0: 检查文件是否存在 1: 检查是否可执行(有哪些信誉好的足球投注网站) 2: 检查是否可写 3: 检查是否可写和执行 4: 检查是否可读 5: 检查是否可读和执行 6: 检查是否可读可写可执行 这些数字的意义和chmod命令中规定许可方式的数字意义相同.此子程序使用实际的UID和GID检测文件的存取能力(一般有效的UID和GID 用于检查文件存取能力). 返回值: 0:许可 -1:不许可. *chmod():将指定文件或目录的存取许可方式改成新的许可方式. 需要两个参数:文件名和新的存取许可方式. *chown():同时改变指定文件的所有

文档评论(0)

xuefei111 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档