第21章. 受限 shell(Restricted Shells)
优质
小牛编辑
130浏览
2023-12-01
在受限 shell 中禁用的命令
在受限shell中运行的脚本或脚本的个代码断会禁用一些正常shell中可以执行的命令.这是限制脚本用户的权限和最小化运行脚本导致的破坏的安全措施.
使用cd命令更改工作目录.
更改环境变量$PATH, $SHELL, $BASH_ENV,或$ENV的值.
读或更改shell环境选项变量$SHELLOPTS的值.
输出重定向.
调用的命令路径中包括有一个或更多个/字符.
调用exec来把当前的受限shell替换成另外一个不同的进程.
脚本中许多其他无意中能破坏或捣乱的命令.
在脚本中企图脱离受限shell模式的操作.
例子 21-1. 在受限的情况下运行脚本
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