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 ...
随机推荐
- linux常用命令之--文本编辑和文本内容查看命令
linux的文本编辑和文本内容查看命令 1.文本编辑命令 vi:用于编辑文本文件,基本上可以分为三种模式,分别是一般模式.编辑模式.命令行模式. 一般模式:当编辑一个文件时,刚进入文件就是一般模式. ...
- LeetCode题解——3Sum
题目: 给定一个数组,找出其中和为0的所有3个数的组合.每个组合的3个数都是非递降的. 解法: 先排序再遍历,设置3个指针,第一个依次遍历,第二三个在第一个指针后面的部分里,左右夹逼查找和为第一个数的 ...
- LeetCode题解——Roman to Integer
题目: 将罗马数字转换为整数. 解法: 可以参考上一篇数字转换为罗马数字的规则. 代码: class Solution { public: int sym2int(char sym) //罗马数字字符 ...
- Tsinsen A1219. 采矿(陈许旻) (树链剖分,线段树 + DP)
[题目链接] http://www.tsinsen.com/A1219 [题意] 给定一棵树,a[u][i]代表u结点分配i人的收益,可以随时改变a[u],查询(u,v)代表在u子树的所有节点,在u- ...
- HDU 5311
把anniversary分成三个区间,分别枚举每个区间在给定模板中的长度.每次枚举完一个区间,记录下区间长度和起始坐标,下次从剩下长度开始枚举,避免重复. #include<iostream&g ...
- 内核源码分析之进程调度机制(基于3.16-rc4)
进程调度所使用到的数据结构: 1.就绪队列 内核为每一个cpu创建一个进程就绪队列,该队列上的进程均由该cpu执行,代码如下(kernel/sched/core.c). DEFINE_PER_CPU_ ...
- Codeforces Round #364 (Div.2) D:As Fast As Possible(模拟+推公式)
题目链接:http://codeforces.com/contest/701/problem/D 题意: 给出n个学生和能载k个学生的车,速度分别为v1,v2,需要走一段旅程长为l,每个学生只能搭一次 ...
- Longest Increasing Sequence
public class Longest_Increasing_Subsequence { /** * O(N^2) * DP * 思路: * 示例:[1,0,2,4,10,5] * 找出以上数组的L ...
- 第二百五十一天 how can I 坚持
hadoop,namenote和datanode.namenode如果要是在启动时加载到内存,会不会对内存的要求比较高呢. edits-->fsimage. secondnamenode,那么n ...
- Winter is coming Just have a little faith. JSF框架简介与实例
JSF 体系结构: JSF 的主要优势之一就是它既是Java Web应用程序的用户界面标准又是严格遵循模型-视图-控制器 (MVC) 设计模式的框架.用户界面代码(视图)与应用程序数据和逻辑(模型)的 ...