阅 读 文 章

(转贴)UNIX系统编程常用库函数说明

[来源:网上转载 (http://www.chinaunix.net) | 作者:网友(无生相) | 时间:2007-05-27 | 浏览:人次 ]


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系统的产生进程的核心转储(进程接收到信号时所占内存 
的内容,有时含有重要信息),此系统子程序可用于禁止核心转储. 
论坛热门帖子: [lch203] 写得蛮好的linux学习笔记(10-21)
[黑马制造] 学习java的30个目标(10-19)
[笑傲股林] 做测试半年了,有点迷茫,应该再学些什么提高自己的测试水平和测试能力呢?(10-19)
[udp8589] 大家用google的来吱一声? 用百度的~~也来报道下?(10-18)
[沂偌掳兆] 本人总结的一些认为C++比较经典的书籍,希望对大家有用(10-18)
TAG标签: 函数 说明 常用 编程 系统 文件 程序 调用 进程 许可

最新评论 共有0位网友发表了评论

发表评论

评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名:(注册)
密码:
验证码:
匿名发表

网站地图友情连接交流论坛网站投稿广告服务联系我们留言本站长统计
Some rights reserved: www.chmhome.com, 鄂ICP备07010232号 E-mail:chinakafei@live.com,QQ:552766
中国咖啡技术网(Chmhome):国外编程技术书籍,中文编程手册,经典编程文章,交流技术,技术软件下载,计算机论文,毕业论文.