Shell脚本的安全性
Shell脚本给管理和使用系统都带来了巨大的便利,然后在多用户系统中,也带来了许多安全性问题。在脚本中可能存在的安全性问题如下:
(1)在脚本中使用cd命令,切换到不安全的目录执行脚本。
(2)在脚本中修改了环境变量的值,从而导致系统产生了变化。
(3)在某个目录中创建了非法的文件。例如使用重定向在目录/etc中创建了文件nologin,这将导致其他用户无法登陆。
在Shell脚本中,提供了一种受限模式。脚本在受限模式中运行时,可以极大地保护系统的安全性。当脚本中出现cd命令、重定向、修改环境变量等不安全的行为时,Bash将会拒绝执行。
1、调用Shell时启动受限模式
要启动Bash的受限模式,可以在调用Shell语句后加上选项r,这时如果脚本中出现不安全的命令,会被系统拒绝。
[root@localhost shell]# cat strict_mode.sh
#!/bin/bash -r
#上面的选项r表示开启受限模式 # this is an example script.
# 2013.12.20 cd /
echo "`pwd`" echo "test" >~/test.tmp
cat ~/test.tmp SHELL=/bin/ksh
echo "SHELL="$SHELL
[root@localhost shell]# ./strict_mode.sh
./strict_mode.sh: line 6: cd: restricted
/home/zhu/shell
./strict_mode.sh: line 9: /root/test.tmp: restricted: cannot redirect output
cat: /root/test.tmp: No such file or directory
./strict_mode.sh: line 12: SHELL: readonly variable
SHELL=/bin/bash
从上面的执行结果可以看出,在Shell的受限模式下切换工作目录、重定向及修改环境变量等操作都被拒绝。
2、使用set命令启动受限模式
[root@localhost shell]# cat strict_mode.sh
#!/bin/bash # this is an example script.
# 2013.12.20 set -r cd /
echo "`pwd`" echo "test" >~/test.tmp
cat ~/test.tmp SHELL=/bin/ksh
echo "SHELL="$SHELL
[root@localhost shell]# ./strict_mode.sh
./strict_mode.sh: line 8: cd: restricted
/home/zhu/shell
./strict_mode.sh: line 11: /root/test.tmp: restricted: cannot redirect output
cat: /root/test.tmp: No such file or directory
./strict_mode.sh: line 14: SHELL: readonly variable
SHELL=/bin/bash
3、临时文件的安全性
除了受限模式之外,如果在脚本中使用了临时文件,这些临时文件也可能会造成安全性问题。为此建议不要将临时文件放入系统临时目录/tmp中,因为任何登录系统的用户都可以看见系统临时目录中的文件。除此之外,脚本运行完成或由系统产生的中断退出时,建议删除脚本使用的临时文件。
Shell脚本的安全性的更多相关文章
- 将PHP作为Shell脚本语言使用
我们都知道.PHP是一种非常好的动态网页开发语言(速度飞快.开发周期短--).可是仅仅有非常少数的人意识到PHP也能够非常好的作为编写Shell脚本的语言,当PHP作为编写Shell脚本的语言时,他并 ...
- Shell脚本编程的常识
(这些往往是经常用到,但是各种网络上的材料都语焉不详的东西,个人认为比较有用) 七种文件类型 d 目录 ...
- shell脚本编程常识
(这些往往是经常用到,但是各种网络上的材料都语焉不详的东西,个人认为比较有用) 七种文件类型 d 目录 ...
- shell脚本中的set -e和set -o pipefail
工作中经常在shell脚本中看到set的这两个用法,但就像生活中的很多事情,习惯导致忽视,直到出现问题才引起关注. 1. set -eset命令的-e参数,linux自带的说明如下:"Exi ...
- SHELL脚本编程的常识和VI常用技巧
来源:http://mprc.pku.edu.cn/mentors/training/TrainingCourses/material/ShellProgramming.HTM#_Toc3751808 ...
- [转]如何将PHP作为Shell脚本语言使用
From : http://www.linuxfly.org/post/559/ 我们都知道,PHP是一种非常好的动态网页开发语言(速度飞快,开发周期短……).但是只有很少数的人意识到PHP也可以很好 ...
- 《Linux命令行与Shell脚本编程大全第2版》读书笔记
公司说不准用云笔记了,吓得我赶紧把笔记贴到博客上先..... 近3年前的了,只有一半的章节,后面的没空记录了.... 第1章 可以cat /proc/meminfo文件来观察Linux系统上虚拟内存的 ...
- Shell脚本实现SSH免密登录及批量配置管理
本节索引 场景分析 ssh免密登录 pssh工具批量管理 SHELL自动化脚本 本篇总结 场景分析 作为一个运维工程师,不是每个人工作的环境都想阿里.腾讯那样,动不动就上亿的PV量,上万台服务器.我们 ...
- 《Linux命令行与shell脚本编程大全 第3版》
第一部分 Linux 命令行 第1章 初识Linux she1.1 什么是Linux 21.1.1 深入探究Linux 内核 31.1.2 GNU 工具 61.1.3 Linux 桌面环境 81 ...
随机推荐
- IOS 通知 alarm 记录
所有的内容融为一体,去除某一个项不知道结果如何. 最主要的前提:APP 会长期保留在后台 1.在info.plist 文件里面,加入 audio 后台请求 2.当APP 点击home进入后台之后,请求 ...
- IOS Swizzle(hook)
/////////////////////////////////////////////////////////////////////////////////////////////////// ...
- <译>Selenium Python Bindings 2 - Getting Started
Simple Usage如果你已经安装了Selenium Python,你可以通过Python这样使用: #coding=gbk ''' Created on 2014年5月6日 @author: u ...
- 用javascript 面向对象制作坦克大战(二)
2. 完善地图 我们的地图中有空地,墙,钢,草丛,水,总部等障碍物. 我们可以把这些全部设计为对象. 2.1 创建障碍物对象群 对象群保存各种地图上的对象,我们通过对象的属性来判断对 ...
- A题进行时--浙大PAT 1011-1020
#include<stdio.h> #include<string.h> int main(){ ]; ]; ]; ]; ]; int i; float sum; memset ...
- Spark系列(五)Master主备切换机制
Spark Master主备切换主要有两种机制,之中是基于文件系统,一种是基于Zookeeper.基于文件系统的主备切换机制需要在Active Master挂掉后手动切换到Standby Master ...
- 基础排序算法,java实现(快速,冒泡,选择,堆排序,插入)
1.冒泡排序: (1)比较相邻的元素.如果第一个比第二个大,就交换他们两个. (2)外面再套个循环就行. 算法复杂度:O(N2) 不罗嗦,上代码: //冒泡排序(两两交换,外加一个外循环) pub ...
- Java——泛型(最易懂的方式讲解泛型)
来自: 代码大湿 代码大湿 写在前面: 只要认真看过,基本能很熟悉泛型的特性.泛型是JDK1.5之后出现的,比如JDK1.5之前的ArrayList,会出现2个问题 1:向ArrayList当中添加对 ...
- ES6学习(2)——arrows箭头函数
Arrows => 箭头函数 箭头函数,若有了解过coffeeScript的同学,或许对此印象深刻,因为它可以让语法省略不少,特别是对于回调函数,会让代码更清晰简洁. expression 让我 ...
- mysql distinct
mysql的DISTINCT的关键字有很多你想不到的用处1.在count 不重复的记录的时候能用到比如SELECT COUNT( DISTINCT id ) FROM tablename;就是计算ta ...