dedecms织梦内容管理系统    
首页 | java | C/C++ | PHP | 操作系统 | ajax | 脚本编程 | 安全技术 | 本站下载页 | 专题 | QQ群 | 测试中心 | 会员中心 | 积分规则
  当前位置:主页>操作系统>unix>文章内容
UNIX系统编程常用库函数说明(上)
来源:黑客基地 作者:佚名
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,I&O)。

  如果调用此子程序的进程没有对于要打开的文件的正确存取许可(包括文件路径上所有目录分量的搜索许可),将会引起执行失败。

  如果此子程序被调用去打开不存在的文件,除非设置了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页: 上一页 1 [2] [3] 下一页
上一篇:Unix发展趋势分析:向开放架构迁移   下一篇:UNIX系统编程常用库函数说明(下)
[收藏] [推荐] [评论(0条)] [返回顶部] [打印本页] [关闭窗口]  
用户名: 新注册) 密码: 匿名评论
评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
 §最新评论
  热点文章
·GDB教程
·Linux与Unix二大操作系统编程的
·UNIX的Shell命令使用详解
·Unix发展趋势分析:向开放架构迁
·UNIX系统编程常用库函数说明(下
·Cygwin使用指南
·UNIX的分支 服务器上的FreeBSD操
  相关文章
·Unix发展趋势分析:向开放架构迁
·UNIX系统编程常用库函数说明(下
·UNIX的Shell命令使用详解
·Linux与Unix二大操作系统编程的
·GDB教程
·Cygwin使用指南
·UNIX的分支 服务器上的FreeBSD操
  相关信息
copy right @ 百家拳软件项目研究室 2007 辽ICP备07011763