Linux shell 之限制模式(一)

Shell的限制模式
有如下几方面
1.用cd命令更改当前工作目录的命令
2.更改重要环境变量的值 ,包括$PATH、$SHELL、$BASH_ENV、$ENV和 $SHELLOPTS
3.输出重定向符号,包括>、>>、>|、>&、<>和&>符号
4.调用含有一个或者多个斜杠(/)的命令名称
5.使用内建命令exec
6.使用set +r等命令闭关限制模式

vi resshell.sh
#!/bin/bash

#在正常模式下改变当前工作目录
echo "Changing current work directory"
cd /etc
echo "Now in $PWD"

set -r #利用Shell选项使下面的代码运行在限制模式下,r是restricted的简写

echo
echo "--------------IN RESTRICTED MODE-----------------"
#验证在限制模式下能否改变当前工作目录
echo "Trying to change current work directory"
cd /usr/local
echo "Now in `pwd`"
echo

#验证在限制模式下能否改变$SHELL变量的值
echo "Trying to change \$SHELL"
SHELL="/bin/sh"
echo "\$SHELL=$SHELL"
echo

#验证在限制模式下能否执行重定向操作
echo "Tring to redirect output to a file"
who > outputnull
ls -l outputnull


执行 ./resshell.sh
Changing current work directory
Now in /etc

--------------IN RESTRICTED MODE-----------------
Trying to change current work directory
./resshell.sh: line 14: cd: restricted
Now in /etc

Trying to change $SHELL
./resshell.sh: line 20: SHELL: readonly variable
$SHELL=/bin/bash

Tring to redirect output to a file
./resshell.sh: line 26: outputnull: restricted: cannot redirect output
ls: cannot access 'outputnull': No such file or directory

由上可以看出限制模式下,cd命令,改变$SHELL的值 及进行重定向操作都出出错误

posted @ 2021-04-01 19:31  zhudaheng123  阅读(578)  评论(0)    收藏  举报