最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

shell腳本學(xué)習(xí)指南[六](Arnold Robbins & Nelson H.F. Beebe著)

 更新時(shí)間:2014年02月27日 15:54:40   投稿:mdxy-dxy  
這篇文章主要介紹了shell腳本學(xué)習(xí)指南[六](Arnold Robbins & Nelson H.F. Beebe著),需要的朋友可以參考下

學(xué)shell到現(xiàn)在了,一直以為自己不會(huì)犯一個(gè)大家常說(shuō)的非常二的問(wèn)題,結(jié)果這本書(shū)最后的時(shí)候犯了個(gè)十分2的事,晚節(jié)不保?。。?!我在測(cè)試文件路徑下除了通配符*和?外還能用啥正則那樣的東西,結(jié)果就在$HOME下執(zhí)行了rm .* 。。。好吧,一下午!還木找回任何一個(gè)配置文件。警示后人,千萬(wàn)別使用rm試通配符!任何時(shí)候小心使用rm!


第十四章shell可移植性議題和擴(kuò)展


可以先通讀這篇文章。
想寫(xiě)出好的可移植性shell,不僅要了解各種shell版本間的差異,還要有很多編程技巧,比如盡量從環(huán)境變量中獲取需要的信息等。

第十五章安全的shell腳本:起點(diǎn)


安全性shell腳本的提示:
1、不要將當(dāng)前目錄(點(diǎn)號(hào))置于PATH下。
2、為bin目錄設(shè)置保護(hù)。確認(rèn)$PATH下的每一個(gè)目錄都只有它的擁有者可以寫(xiě)入,其余任何人都不能。用樣的道理也應(yīng)該應(yīng)用于bin目錄里所有的程序。
3、寫(xiě)程序前,先想清除?;c(diǎn)時(shí)間想想你要做什么,該如何實(shí)行。不要一開(kāi)始就在文字編輯器上寫(xiě)。錯(cuò)誤與失敗的優(yōu)雅處理也應(yīng)該設(shè)計(jì)在程序里。
4、應(yīng)對(duì)所有輸入?yún)?shù)檢查其有效性。如果期待的是數(shù)字,那就驗(yàn)證它是數(shù)字,并且是否在要求的范圍內(nèi)。其他的需要也是這樣檢測(cè)。
5、對(duì)所有可返回錯(cuò)誤的命令,檢查錯(cuò)誤處理代碼。不在你預(yù)期內(nèi)的失敗情況,很可能是有問(wèn)題的強(qiáng)迫失敗,導(dǎo)致腳本出現(xiàn)不當(dāng)?shù)男袨?。例如,如果參?shù)為NFS加載磁盤(pán)或面向字符的設(shè)備文件時(shí),即便是以root的身份執(zhí)行,也可能導(dǎo)致有些命令失敗。
6、不要信任傳進(jìn)來(lái)的環(huán)境變量。如果它們被接下來(lái)的命令(如TZ、PATH、IFS等)使用時(shí),請(qǐng)檢查并重設(shè)為已知的值。無(wú)論在什么情況下,最好的方式就是明確的設(shè)置自己需要的(如PATH只包含系統(tǒng)bin目錄,設(shè)置IFS為空格定位符和換行)。
7、從已知的地方開(kāi)始。在腳本開(kāi)始時(shí),確切cd到已知目錄,這么一來(lái),接下來(lái)任何相對(duì)路徑名稱才能指到已知位置。確認(rèn)cd操作成功:cd app-dir || exit 1
8、使用syslog(8)保留審計(jì)跟蹤。記錄引用的日期與時(shí)間、username等,參見(jiàn)logger(1)的使用手冊(cè)。如果沒(méi)有l(wèi)ogger,可建立一個(gè)函數(shù)保留日志文件:

復(fù)制代碼 代碼如下:

logger(){
printf "%s\n" "$*" >> /var/adm/logsysfile
}
logger "Run by user " $(id -un) "($USER) at " $(/bin/date)

9、當(dāng)使用該輸入時(shí),一定將用戶輸入引用起來(lái)。例如:"$1"與"$*",這么做可以防止居心不良的用戶輸入超出范圍的計(jì)算與執(zhí)行。
10、勿在用戶輸入上使用eval。甚至在引用用戶輸入之后,也不要使用eval將它交給shell再處理。如果用戶讀取了你的腳本,發(fā)現(xiàn)你使用eval。
11、引用通配符展開(kāi)的結(jié)果。你可以將空格、分號(hào)、反斜杠等放在文件名里,讓棘手的事情交給系統(tǒng)管理員處理。如果管理的腳本未引用文件名參數(shù),此腳本將會(huì)造成系統(tǒng)的問(wèn)題。
12、檢查用戶輸入是否有meta字符。如果使用eval或$(...)里的輸入,請(qǐng)檢查是否有像$或`這類的meta字符。
13、檢測(cè)你的代碼,并小心謹(jǐn)慎閱讀它。尋找是否有可被利用的漏洞與錯(cuò)誤。把所有壞心眼的想法都考慮進(jìn)去,小心研究你的代碼。
14、留意競(jìng)爭(zhēng)條件(race condition)攻擊者是不是可以在你腳本里的任兩個(gè)命令之間執(zhí)行任意命令,這對(duì)安全性是否有危害?如果是,換個(gè)方式處理你的腳本。
15、對(duì)符號(hào)性連接心存懷疑。在chmod文件或是編輯文件時(shí),檢查它是否真的是一個(gè)文件,而非連接到某個(gè)關(guān)鍵性系統(tǒng)文件的符號(hào)性連接(利用[ -L file ] 或 [ -h file ]檢測(cè)file是否為一符號(hào)性連接。
16、找其他人重新檢查你的程序,看看是否有問(wèn)題。
17、盡可能用setgid而不要用setuid。這些術(shù)語(yǔ)稍后討論,簡(jiǎn)之就是使用setgid能將損害范圍限制在某個(gè)組內(nèi)。
18、使用新的用戶而不是root。如果你必須使用setuid訪問(wèn)一組文件,請(qǐng)考慮建立一個(gè)新的用戶,非root的用戶做這件事并設(shè)置setuid給他。
19、盡可能限制使用setuid的代碼。盡可能讓setuid代碼減到最少。將它移到一個(gè)分開(kāi)的程序,然后在大型腳本里需要時(shí)才引用它。無(wú)論如何,請(qǐng)做好代碼防護(hù),好像腳本可以被任何人于任何地方引用那樣。
20、一個(gè)安全shell的開(kāi)場(chǎng)白:
復(fù)制代碼 代碼如下:

IFS=' \t\n' #之前幾篇見(jiàn)過(guò)很多次
unset -f unalias #確保unalias不是一個(gè)函數(shù)
\unalias -a #unset all aliases and quote unalias so it's not alias-expanded
unset -f command #確保調(diào)用的command不是以函數(shù)
#獲得可靠的路徑前綴,處理getconf不可用的情況。
#get a reliable path prefix,handling case where getconf is not available.
SYSPATH="$(command -p getconf PATH 2>/dev/null))"
if [[ -z "$SYSPATH" ]];then
SYSPATH="/usr/bin:/bin"
fi
PATH="$SYSPATH:$PATH"

這段代碼使用了許多非POSIX的擴(kuò)展,需要注意。

該書(shū)最后給出了如何編寫(xiě)自己的shell程序的manual,和unix的文件和文件系統(tǒng)的介紹。至此該書(shū)通讀完畢。

相關(guān)文章

  • Shell腳本實(shí)現(xiàn)刪除一年前文件功能分享

    Shell腳本實(shí)現(xiàn)刪除一年前文件功能分享

    這篇文章主要介紹了Shell腳本實(shí)現(xiàn)刪除一年前文件功能分享,本文直接給出實(shí)現(xiàn)代碼,需要的朋友可以參考下
    2014-12-12
  • Shell中判斷字符串是否為數(shù)字的6種方法分享

    Shell中判斷字符串是否為數(shù)字的6種方法分享

    這篇文章主要介紹了Shell中判斷字符串是否為數(shù)字的6種方法分享,本文直接給出實(shí)現(xiàn)代碼,需要的朋友可以參考下
    2015-06-06
  • Linux解壓縮(打開(kāi))Gz文件的命令詳解

    Linux解壓縮(打開(kāi))Gz文件的命令詳解

    GNU 的 Gzip 是一種流行的數(shù)據(jù)壓縮程序,而 GZ 文件是由標(biāo)準(zhǔn) Gzip 壓縮的存檔文件,本文給大家介紹了如何在Linux解壓縮(打開(kāi))Gz 文件,文中有詳細(xì)的代碼示例供大家參考,需要的朋友可以參考下
    2023-12-12
  • 利用Linux中的crontab實(shí)現(xiàn)分布式項(xiàng)目定時(shí)任務(wù)功能

    利用Linux中的crontab實(shí)現(xiàn)分布式項(xiàng)目定時(shí)任務(wù)功能

    crond是Linux用來(lái)定期執(zhí)行程序的命令.這篇文章主要介紹了利用Linux中的crontab實(shí)現(xiàn)分布式項(xiàng)目定時(shí)任務(wù),需要的朋友可以參考下
    2018-01-01
  • linux?top命令基本實(shí)戰(zhàn)

    linux?top命令基本實(shí)戰(zhàn)

    top命令的功能是用于實(shí)時(shí)顯示系統(tǒng)運(yùn)行狀態(tài),包含處理器、內(nèi)存、服務(wù)、進(jìn)程等重要資源信息,這篇文章主要介紹了linux?top命令?實(shí)戰(zhàn),需要的朋友可以參考下
    2023-02-02
  • Linux中umount命令的使用方法及操作實(shí)例

    Linux中umount命令的使用方法及操作實(shí)例

    在Linux系統(tǒng)中,umount命令用于卸載已經(jīng)掛載的文件系統(tǒng),本文將詳細(xì)介紹umount命令的功能、使用方法以及常見(jiàn)的操作實(shí)例,文章通過(guò)代碼示例給大家講解的非常詳細(xì),具有一定參考價(jià)值,需要的朋友可以參考下
    2024-06-06
  • Shell腳本編程30分鐘入門(mén)(小結(jié))

    Shell腳本編程30分鐘入門(mén)(小結(jié))

    這篇文章主要介紹了Shell腳本編程30分鐘入門(mén)(小結(jié)),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-05-05
  • 詳解Shell 命令行批量處理圖片文件名的實(shí)例

    詳解Shell 命令行批量處理圖片文件名的實(shí)例

    這篇文章主要介紹了詳解Shell 命令行批量處理圖片文件名的實(shí)例的相關(guān)資料,這里提供實(shí)例及實(shí)現(xiàn)方法的分析,需要的朋友可以參考下
    2017-08-08
  • shell腳本批量執(zhí)行指定路徑下sql腳本的實(shí)現(xiàn)

    shell腳本批量執(zhí)行指定路徑下sql腳本的實(shí)現(xiàn)

    本文主要介紹了shell腳本批量執(zhí)行指定路徑下sql腳本的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • linux文件搜索及其它基礎(chǔ)命令介紹(3)

    linux文件搜索及其它基礎(chǔ)命令介紹(3)

    這篇文章主要為大家詳細(xì)介紹了linux文件搜索及其它基礎(chǔ)命令,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-12-12

最新評(píng)論

成都市| 巴彦淖尔市| 高陵县| 郸城县| 西乡县| 建始县| 长沙市| 菏泽市| 天台县| 平乡县| 文安县| 句容市| 霍林郭勒市| 五原县| 甘孜县| 邵东县| 大荔县| 蓝山县| 益阳市| 开封市| 太康县| 敦化市| 汉沽区| 青田县| 屯昌县| 和龙市| 大洼县| 修文县| 东乌珠穆沁旗| 浮梁县| 六盘水市| 大化| 郑州市| 如东县| 沙田区| 临朐县| 丁青县| 南昌市| 濮阳县| 永宁县| 徐汇区|