Shell腳本的安全性

Shell腳本給管理和使用系統都帶來了巨大的便利,而後在多用戶系統中,也帶來了許多安全性問題。在腳本中可能存在的安全性問題以下:shell

(1)在腳本中使用cd命令,切換到不安全的目錄執行腳本。安全

(2)在腳本中修改了環境變量的值,從而致使系統產生了變化。bash

(3)在某個目錄中建立了非法的文件。例如使用重定向在目錄/etc中建立了文件nologin,這將致使其餘用戶沒法登錄。this

在Shell腳本中,提供了一種受限模式。腳本在受限模式中運行時,能夠極大地保護系統的安全性。當腳本中出現cd命令、重定向、修改環境變量等不安全的行爲時,Bash將會拒絕執行。spa

一、調用Shell時啓動受限模式rest

要啓動Bash的受限模式,能夠在調用Shell語句後加上選項r,這時若是腳本中出現不安全的命令,會被系統拒絕。code

[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的受限模式下切換工做目錄、重定向及修改環境變量等操做都被拒絕。blog

二、使用set命令啓動受限模式ip

[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

三、臨時文件的安全性class

除了受限模式以外,若是在腳本中使用了臨時文件,這些臨時文件也可能會形成安全性問題。爲此建議不要將臨時文件放入系統臨時目錄/tmp中,由於任何登陸系統的用戶均可以看見系統臨時目錄中的文件。除此以外,腳本運行完成或由系統產生的中斷退出時,建議刪除腳本使用的臨時文件。

相關文章
相關標籤/搜索