一个程序可以通过以下2种方式以特权方式运行:1.程序在一个特权用户ID下启动,很多 daemon 以 root 身份运行。2.程序设置了set-user-ID 或 set-group-ID 权限位。当一个设置了 set-uesr-ID程序被执行后,它会将进程的有效用户ID修改为程序文件的所有者一样的ID。1.是否需要一个 set-user-ID 或 set-group-ID程序应该避免。2.以最小权限操作在无需权限的时候,永久的删除权限。3.小心的执行程序1.在执行另外一个程序之前永久的删除权限2.避免执行一个拥有权限的shell运行与用户控制之下的特权程序永远都不应该直接或者间接的执行shell。shell的复杂性和强大的功能意味着不可能消除所有的安全隐患。3.在 exec() 之前关闭所有用不到的文件描述符。4.避免暴露敏感信息当一个程序读取密码或者其他敏感信息时,应该在执行完所有的处理之后立即从内存中删除这些信息。在内存中保留这些信息是一种安全隐患。1.包含这些数据的虚拟内存页可能会被换出(除非使用 mlock() 类似的函数将它们锁在内存中),这样交换区域中的数据可能会被一个特权程序读取。2.如果进程收到一个能够导致它产生 core dump 的信号,那么就有可能从该文件中获取这类信息。编写程序时,应该避免产生 core dump 。可以使用 setrlimit() 将 RLIMIT_CORE 设置为 0 。5.确定进程的边界1.考虑使用能力2.考虑使用一个 chroot 监牢3.虚拟服务器6.小心信号和竞争条件7.执行文件操作和文件IO的缺陷8.不要完全相信输入和环境1.不要信任环境列表2.防御性的处理不可信用户的输入3.避免对进程的运行时环境进行可靠性假设9.小心缓冲区溢出恶意用户可以通过诸如缓冲区溢出(也被称为栈粉碎)之类的技术,将精心编写的字节放入一个栈帧中以强制特权程序执行任意代码。10.小心拒绝服务攻击11.检查返回状态和安全地处理失败情况geteuid();
seteuid();
setreuid();
setresuid();
getresuid();
getresgid();

38.Linux/Unix 系统编程手册(下) -- 编写安全的特权程序相关推荐

  1. linux/unix系统编程手册11-15

    title: linux/unix编程手册-11_15 date: 2018-05-27 11:53:07 categories: programming tags: tips linux/unix编 ...

  2. Linux/Unix系统编程手册 第三章:系统编程概念

    本章介绍系统编程的基础概念和一些后续章节用到的函数及头文件,并说明了可移植性问题. 系统调用是受控的内核入口,通过系统调用,进程可以请求内核以自己的名义去执行某些动作,比如创建子进程,执行I/O操作, ...

  3. Linux/UNIX系统编程手册gg

    Linux系统: "所见皆文件" 一个比较好的博客 一.Linux基础操作 Linux系统目录: bin:存放二进制可执行文件 boot:存放开机启动程序 dev:存放设备文件: ...

  4. Linux/Unix系统编程 五:进程

    进程是一个可执行程序的实例. 一.linux系统进程管理 1.进程管理的作用 判断机器健康状态 查看系统中所有进程 杀手进程 2.查看系统进程 1.ps -aux BSD操作系统格式: TTY说明: ...

  5. Linux系统编程手册-源码的使用

    Linux系统编程手册-源码的使用 转自:http://www.cnblogs.com/pluse/p/6296992.html 第三章后续部分重点介绍了后面章节所要使用的头文件及其实现,主要如下: ...

  6. Linux/Unix系统下nginx+php安装简明教程

    本文转载自Linux/Unix系统下nginx+php安装简明教程,请保留转载信息~ 一.安装nginx: 1. 安装pcre库,nginx的rewrite模板需用到pcre库: mkdir -p / ...

  7. 在Linux/Unix系统下用iconv命令处理文本文件中文乱码问题

    iconv命令是运行于linux/unix平台的文件编码装换工具.当我们在linux/unix系统shell查看文本文件时,常常会发现文件的中文是乱码的,这是由于文本文件的编码与当前操作系统设置的编码 ...

  8. 5w字总结 Unix系统编程学习笔记(面试向)(Unix环境高级编程/Unix环境程序设计)

    文章目录 一.计算 C语言的数据表示与处理 计算 C语言的基本运算操作 内存表和符号表 类型转换 函数类型的分析 指令 复合指令 句法 函数 函数激活(Activation Record) 函数激活定 ...

  9. unix环境高级编程 pdf_UNIX系统编程宝典,每一本都值得程序员珍藏

    这几本UNIX系统编程宝典,重印无数次,几代程序员都视如珍宝的几本书,小编在出版圈里快十年了,见证了这本书图灵版.异步社区版的出版.营销,对这套书倾注了一定的感情.今天继续分享给你们,好书总会有人还不 ...

  10. ①Linux简明系统编程(嵌入式公众号的课)---总课时12h

    10.09 注意:这个是Linux高级编程的简明教程,是Linux应用程序的开发,而不是底层程序的开发. 内容是关于操作系统和网络编程的吗? Linux简明系统编程 〇.课程思维导图 〇.会用到的头文 ...

最新文章

  1. Python拟合数据样本的分布
  2. 优秀交互设计的 UI 原则
  3. 微信小程序学习:开发注意点
  4. 技术内参 | 数据分析,如何解决精度丢失的问题?
  5. 浅谈android Service和BroadCastReceiver
  6. 如何在WebPart中访问页面上的其他WebPart
  7. Storm 1.0.1发布 .NET 适配也已到来
  8. android dialog 自定义布局,如何设置AlertDialog的自定义布局?
  9. uva 714——Copying Books
  10. NVIDIA TESLA M40
  11. 如何用Python快速实现区块链?
  12. 编译编译时,用不到的库,一定不要链接
  13. ZigBee协议栈简介
  14. 推荐2款优秀的代码截图工具
  15. c语言合并jpg成pdf,如何将JPG图片转换成PDF文件
  16. html 页面怎么打印很小,网页上的内容打印出来太小怎么处理
  17. 第三方rom 6.0刷机后,网络连接叹号处理方法
  18. linux 工具——终端分屏与vim分屏
  19. 实现一个简单的类似于手电筒的功能@[电灯泡]
  20. 多个操作语句的触发器为什么在执行时,只执行了第一句?

热门文章

  1. bzoj 4551: [Tjoi2016Heoi2016]树
  2. C# 设计模式巩固笔记 - 建造者模式
  3. Lucene.Net
  4. easyui中datagrid空数据集不刷新的解决方式
  5. 【转载】聪明说话35招
  6. Programming WCF Services中文翻译(3)-契约
  7. 那些月入5000的人,凭什么比你更早买房买车?
  8. 常用数据库及表相关操作语句
  9. Ubuntu 14.04 网卡网关配置修改
  10. SPSS 相关性的选择