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脚本的安全性的更多相关文章

  1. 将PHP作为Shell脚本语言使用

    我们都知道.PHP是一种非常好的动态网页开发语言(速度飞快.开发周期短--).可是仅仅有非常少数的人意识到PHP也能够非常好的作为编写Shell脚本的语言,当PHP作为编写Shell脚本的语言时,他并 ...

  2. Shell脚本编程的常识

    (这些往往是经常用到,但是各种网络上的材料都语焉不详的东西,个人认为比较有用) 七种文件类型 d            目录                                       ...

  3. shell脚本编程常识

    (这些往往是经常用到,但是各种网络上的材料都语焉不详的东西,个人认为比较有用) 七种文件类型 d            目录                                       ...

  4. shell脚本中的set -e和set -o pipefail

    工作中经常在shell脚本中看到set的这两个用法,但就像生活中的很多事情,习惯导致忽视,直到出现问题才引起关注. 1. set -eset命令的-e参数,linux自带的说明如下:"Exi ...

  5. SHELL脚本编程的常识和VI常用技巧

    来源:http://mprc.pku.edu.cn/mentors/training/TrainingCourses/material/ShellProgramming.HTM#_Toc3751808 ...

  6. [转]如何将PHP作为Shell脚本语言使用

    From : http://www.linuxfly.org/post/559/ 我们都知道,PHP是一种非常好的动态网页开发语言(速度飞快,开发周期短……).但是只有很少数的人意识到PHP也可以很好 ...

  7. 《Linux命令行与Shell脚本编程大全第2版》读书笔记

    公司说不准用云笔记了,吓得我赶紧把笔记贴到博客上先..... 近3年前的了,只有一半的章节,后面的没空记录了.... 第1章 可以cat /proc/meminfo文件来观察Linux系统上虚拟内存的 ...

  8. Shell脚本实现SSH免密登录及批量配置管理

    本节索引 场景分析 ssh免密登录 pssh工具批量管理 SHELL自动化脚本 本篇总结 场景分析 作为一个运维工程师,不是每个人工作的环境都想阿里.腾讯那样,动不动就上亿的PV量,上万台服务器.我们 ...

  9. 《Linux命令行与shell脚本编程大全 第3版》

    第一部分 Linux 命令行 第1章  初识Linux she1.1   什么是Linux 21.1.1 深入探究Linux 内核 31.1.2 GNU 工具 61.1.3 Linux 桌面环境 81 ...

随机推荐

  1. 《Python 学习手册4th》 第十七章 作用域

    ''' 时间: 9月5日 - 9月30日 要求: 1. 书本内容总结归纳,整理在博客园笔记上传 2. 完成所有课后习题 注:“#” 后加的是备注内容 (每天看42页内容,可以保证月底看完此书) “重点 ...

  2. (转载) VS编译duilib项目时候的错误解决方法整理

    原文地址:http://blog.csdn.net/x356982611/article/details/30217473 @1:找不到Riched20.lib 用everything等软件搜索下磁盘 ...

  3. ASP.NET将word文档转换成pdf的代码

    一.添加引用 using Microsoft.Office.Interop.Word; 二.转换方法 1.方法 C# 代码 /// <summary> /// 把Word文件转换成pdf文 ...

  4. android sensor传感器系统架构初探

    http://blog.csdn.net/qianjin0703/article/details/5942579 http://blog.chinaunix.net/uid-28621021-id-3 ...

  5. <Araxis Merge>保存文件

    1.保存文件 在任何时候都可以使用File菜单中的Save和Save As来保存文件.使用Save将修改的部分保存回文件.使用Save As将会用新名称来保存文件.在你右击文件面板的时候也可以从快捷菜 ...

  6. work7

    uno. 理解C++变量的作用域和生命周期 没有要求讲解我就简单注释了一下~ #include <iostream>int main(){ for (int i=0;i<10;i++ ...

  7. rop框架签名功能控制

    平台级控制: 通过<rop:annotation-driven/>的 sign-enable 属性即可开启或关闭服务平台签名验证功能:<rop:annotation-driven s ...

  8. HDU1025:Constructing Roads In JGShining's Kingdom(LIS)

    Problem Description JGShining's kingdom consists of 2n(n is no more than 500,000) small cities which ...

  9. mybatis generator配置文件

    <!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration ...

  10. hadoop 关闭进程时报错no 进程 to stop

    前两天和朋友李天王吃饭的时候,聊到了一个hadoop的运维的很简单问题,感觉很有意思,以前也没有注意过,现在加以重现和整理.   感谢李天王的分享....   翻看了yarn-deamon.sh st ...