restricted-sh.html
来自「BASH Shell 编程 经典教程 《高级SHELL脚本编程》中文版」· HTML 代码 · 共 347 行
HTML
347 行
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><HTML><HEAD><TITLE>受限shell</TITLE><METANAME="GENERATOR"CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINKREL="HOME"TITLE="高级Bash脚本编程指南"HREF="index.html"><LINKREL="UP"TITLE="高级主题"HREF="part4.html"><LINKREL="PREVIOUS"TITLE="子shell"HREF="subshells.html"><LINKREL="NEXT"TITLE="进程替换"HREF="process-sub.html"></HEAD><BODYCLASS="CHAPTER"BGCOLOR="#FFFFFF"TEXT="#000000"LINK="#0000FF"VLINK="#840084"ALINK="#0000FF"><DIVCLASS="NAVHEADER"><TABLESUMMARY="Header navigation table"WIDTH="100%"BORDER="0"CELLPADDING="0"CELLSPACING="0"><TR><THCOLSPAN="3"ALIGN="center">高级Bash脚本编程指南: 一本深入学习shell脚本艺术的书籍</TH></TR><TR><TDWIDTH="10%"ALIGN="left"VALIGN="bottom"><AHREF="subshells.html"ACCESSKEY="P">前一页</A></TD><TDWIDTH="80%"ALIGN="center"VALIGN="bottom"></TD><TDWIDTH="10%"ALIGN="right"VALIGN="bottom"><AHREF="process-sub.html"ACCESSKEY="N">下一页</A></TD></TR></TABLE><HRALIGN="LEFT"WIDTH="100%"></DIV><DIVCLASS="CHAPTER"><H1><ANAME="RESTRICTED-SH"></A>21. 受限shell</H1><P><ANAME="RESTRICTEDSHREF"></A></P><P></P><DIVCLASS="VARIABLELIST"><P><B><ANAME="DISABLEDCOMMREF"></A>在受限shell中禁用的命令</B></P><DL><DT></DT><DD><DIVCLASS="FORMALPARA"><P><B> </B>在<EM>受限</EM>模式下运行一个脚本或脚本片断, 将会禁用某些命令, 这些命令在正常模式下都可以运行. 这是一种安全策略, 目的是为了限制脚本用户的权限, 并且能够让运行脚本所导致的危害降低到最小. </P></DIV></DD><DT></DT><DD><DIVCLASS="FORMALPARA"><P><B> </B>使用<TTCLASS="REPLACEABLE"><I>cd</I></TT>命令更改工作目录. </P></DIV></DD><DT></DT><DD><P>更改<AHREF="othertypesv.html#ENVREF">环境变量</A><TTCLASS="REPLACEABLE"><I>$PATH</I></TT>, <TTCLASS="REPLACEABLE"><I>$SHELL</I></TT>, <TTCLASS="REPLACEABLE"><I>$BASH_ENV</I></TT>, 或<TTCLASS="REPLACEABLE"><I>$ENV</I></TT>的值. </P></DD><DT></DT><DD><P>读取或修改环境变量<TTCLASS="REPLACEABLE"><I>$SHELLOPTS</I></TT>的值. </P></DD><DT></DT><DD><P>输出重定向. </P></DD><DT></DT><DD><P>调用的命令路径中包括有一个或多个斜杠(<SPANCLASS="TOKEN">/</SPAN>). </P></DD><DT></DT><DD><P>调用<EM>exec</EM>, 把当前的受限shell替换成另外一个进程. </P></DD><DT></DT><DD><P>能够在无意中破坏脚本的命令. </P></DD><DT></DT><DD><P>在脚本中企图脱离受限模式的操作. </P></DD></DL></DIV><DIVCLASS="EXAMPLE"><HR><ANAME="RESTRICTED"></A><P><B>例子 21-1. 在受限模式下运行脚本</B></P><TABLEBORDER="0"BGCOLOR="#E0E0E0"WIDTH="100%"><TR><TD><FONTCOLOR="#000000"><PRECLASS="PROGRAMLISTING"> 1 #!/bin/bash 2 3 # 脚本开头以"#!/bin/bash -r"来调用, 4 #+ 会使整个脚本在受限模式下运行. 5 6 echo 7 8 echo "Changing directory." 9 cd /usr/local 10 echo "Now in `pwd`" 11 echo "Coming back home." 12 cd 13 echo "Now in `pwd`" 14 echo 15 16 # 非受限的模式下,所有操作都正常. 17 18 set -r 19 # set --restricted 也具有相同的效果. 20 echo "==> Now in restricted mode. <==" 21 22 echo 23 echo 24 25 echo "Attempting directory change in restricted mode." 26 cd .. 27 echo "Still in `pwd`" 28 29 echo 30 echo 31 32 echo "\$SHELL = $SHELL" 33 echo "Attempting to change shell in restricted mode." 34 SHELL="/bin/ash" 35 echo 36 echo "\$SHELL= $SHELL" 37 38 echo 39 echo 40 41 echo "Attempting to redirect output in restricted mode." 42 ls -l /usr/bin > bin.files 43 ls -l bin.files # 尝试列出刚才创建的文件. 44 45 echo 46 47 exit 0</PRE></FONT></TD></TR></TABLE><HR></DIV></DIV><DIVCLASS="NAVFOOTER"><HRALIGN="LEFT"WIDTH="100%"><TABLESUMMARY="Footer navigation table"WIDTH="100%"BORDER="0"CELLPADDING="0"CELLSPACING="0"><TR><TDWIDTH="33%"ALIGN="left"VALIGN="top"><AHREF="subshells.html"ACCESSKEY="P">前一页</A></TD><TDWIDTH="34%"ALIGN="center"VALIGN="top"><AHREF="index.html"ACCESSKEY="H">首页</A></TD><TDWIDTH="33%"ALIGN="right"VALIGN="top"><AHREF="process-sub.html"ACCESSKEY="N">下一页</A></TD></TR><TR><TDWIDTH="33%"ALIGN="left"VALIGN="top">子shell</TD><TDWIDTH="34%"ALIGN="center"VALIGN="top"><AHREF="part4.html"ACCESSKEY="U">上一级</A></TD><TDWIDTH="33%"ALIGN="right"VALIGN="top">进程替换</TD></TR></TABLE></DIV></BODY></HTML>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?