38.Linux/Unix 系统编程手册(下) -- 编写安全的特权程序
一个程序可以通过以下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 系统编程手册(下) -- 编写安全的特权程序相关推荐
- linux/unix系统编程手册11-15
title: linux/unix编程手册-11_15 date: 2018-05-27 11:53:07 categories: programming tags: tips linux/unix编 ...
- Linux/Unix系统编程手册 第三章:系统编程概念
本章介绍系统编程的基础概念和一些后续章节用到的函数及头文件,并说明了可移植性问题. 系统调用是受控的内核入口,通过系统调用,进程可以请求内核以自己的名义去执行某些动作,比如创建子进程,执行I/O操作, ...
- Linux/UNIX系统编程手册gg
Linux系统: "所见皆文件" 一个比较好的博客 一.Linux基础操作 Linux系统目录: bin:存放二进制可执行文件 boot:存放开机启动程序 dev:存放设备文件: ...
- Linux/Unix系统编程 五:进程
进程是一个可执行程序的实例. 一.linux系统进程管理 1.进程管理的作用 判断机器健康状态 查看系统中所有进程 杀手进程 2.查看系统进程 1.ps -aux BSD操作系统格式: TTY说明: ...
- Linux系统编程手册-源码的使用
Linux系统编程手册-源码的使用 转自:http://www.cnblogs.com/pluse/p/6296992.html 第三章后续部分重点介绍了后面章节所要使用的头文件及其实现,主要如下: ...
- Linux/Unix系统下nginx+php安装简明教程
本文转载自Linux/Unix系统下nginx+php安装简明教程,请保留转载信息~ 一.安装nginx: 1. 安装pcre库,nginx的rewrite模板需用到pcre库: mkdir -p / ...
- 在Linux/Unix系统下用iconv命令处理文本文件中文乱码问题
iconv命令是运行于linux/unix平台的文件编码装换工具.当我们在linux/unix系统shell查看文本文件时,常常会发现文件的中文是乱码的,这是由于文本文件的编码与当前操作系统设置的编码 ...
- 5w字总结 Unix系统编程学习笔记(面试向)(Unix环境高级编程/Unix环境程序设计)
文章目录 一.计算 C语言的数据表示与处理 计算 C语言的基本运算操作 内存表和符号表 类型转换 函数类型的分析 指令 复合指令 句法 函数 函数激活(Activation Record) 函数激活定 ...
- unix环境高级编程 pdf_UNIX系统编程宝典,每一本都值得程序员珍藏
这几本UNIX系统编程宝典,重印无数次,几代程序员都视如珍宝的几本书,小编在出版圈里快十年了,见证了这本书图灵版.异步社区版的出版.营销,对这套书倾注了一定的感情.今天继续分享给你们,好书总会有人还不 ...
- ①Linux简明系统编程(嵌入式公众号的课)---总课时12h
10.09 注意:这个是Linux高级编程的简明教程,是Linux应用程序的开发,而不是底层程序的开发. 内容是关于操作系统和网络编程的吗? Linux简明系统编程 〇.课程思维导图 〇.会用到的头文 ...
最新文章
- Python拟合数据样本的分布
- 优秀交互设计的 UI 原则
- 微信小程序学习:开发注意点
- 技术内参 | 数据分析,如何解决精度丢失的问题?
- 浅谈android Service和BroadCastReceiver
- 如何在WebPart中访问页面上的其他WebPart
- Storm 1.0.1发布 .NET 适配也已到来
- android dialog 自定义布局,如何设置AlertDialog的自定义布局?
- uva 714——Copying Books
- NVIDIA TESLA M40
- 如何用Python快速实现区块链?
- 编译编译时,用不到的库,一定不要链接
- ZigBee协议栈简介
- 推荐2款优秀的代码截图工具
- c语言合并jpg成pdf,如何将JPG图片转换成PDF文件
- html 页面怎么打印很小,网页上的内容打印出来太小怎么处理
- 第三方rom 6.0刷机后,网络连接叹号处理方法
- linux 工具——终端分屏与vim分屏
- 实现一个简单的类似于手电筒的功能@[电灯泡]
- 多个操作语句的触发器为什么在执行时,只执行了第一句?