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的值 及进行重定向操作都出出错误
浙公网安备 33010602011771号