在「Bash Handbook」這篇看到了有人在 GitHub 上整理了「For those who wanna learn Bash」。
說是 Handbook,更像長篇的 Cheatsheet,帶了基本的說明讓有背景的人可以馬上了解要怎麼用...
另外因為 Bash 是很多 shell 分支的起源,其實有不少東西對應到 Zsh (以及其他 shell) 也是會通的,拿來複習也是不錯 :o
幹壞事是進步最大的原動力
在「Bash Handbook」這篇看到了有人在 GitHub 上整理了「For those who wanna learn Bash」。
說是 Handbook,更像長篇的 Cheatsheet,帶了基本的說明讓有背景的人可以馬上了解要怎麼用...
另外因為 Bash 是很多 shell 分支的起源,其實有不少東西對應到 Zsh (以及其他 shell) 也是會通的,拿來複習也是不錯 :o
在找 Let's Encrypt 安裝方法時找到的專案:「letsencrypt/acme client implemented as a shell-script」。
整個專案用 bash 寫,用到的 dependency 都非常基本,「比較特別的」只有 curl 與 openssl,這兩個套件應該不是什麼問題... XD
沒有安裝問題 (因為只有一個 shell script 檔案),用起來也很簡單,執行速度也比官方快多了 (畢竟官方的考慮比較多),之後應該就會用這個吧... 另外自動化的部份也應該會用這個解決 :o
在寫 shell script 時,[
與 [[
到底用起來有什麼不一樣?查出來記錄起來:「What is the difference between double and single square brackets in bash?」。
第一高分的答案 (由 Kyle Brandt 回答) 與第二高分的答案 (由 abhiomkar 回答) 都值得看,尤其是 abhiomkar 寫的範例很清楚:
$ [ a < b ] -bash: b: No such file or directory $ [[ a < b ]]
對判斷式子裡面的解讀是不一樣的。
因為 Bash 太多人用,找到安全漏洞的成本效益太高,看起來最近會有大量的人力跳進去 code review,接下來應該是 CVE 滿天飛,跟當初 OpenSSL 的情況類似。
目前建議是直接看維基百科的說明:「Shellshock (software bug)」,裡面直接列出了目前發現的 CVE 以及 attack vector。
會讓管理者想要抱頭痛哭,無止盡的 patch...
這讓人無言了,Bash 的遠端執行安全漏洞,CVE-2014-6271:
GNU Bash through 4.3 processes trailing strings after function definitions in the values of environment variables, which allows remote attackers to execute arbitrary code via a crafted environment, as demonstrated by vectors involving the ForceCommand feature in OpenSSH sshd, the mod_cgi and mod_cgid modules in the Apache HTTP Server, scripts executed by unspecified DHCP clients, and other situations in which setting the environment occurs across a privilege boundary from Bash execution.
可以在 oss-sec 上面看到說明「Re: CVE-2014-6271: remote code execution through bash」:
Debian and other GNU/Linux vendors plan to disclose a critical, remotely exploitable security vulnerability in bash this week, related to the processing of environment variables. Stephane Chazelas discovered it, and CVE-2014-6271 has been assigned to it.
透過環境變數打進去... Redhat 的「Bash specially-crafted environment variables code injection attack」這篇也給了不少例子。
Linux 下通常最常用的 shell 應該還是 Bash 吧?(雖然也看到不少人用 Zsh...)
然後 Twitter 上看到非常邪惡的 Google Hack:
google filetype:sh inurl:cgi-bin;
— dragosr (@dragosr) September 25, 2014
大家可以自己加上 site:
去掃...
2012 年的老文章了,不確定是 Zite 上看到,還是 Hacker News Daily 上看到的:「Defensive BASH Programming」。
不是給初學者看的文件,而是寫給對 shell script 有一定基礎的人。針對要怎麼樣才能寫出容易維護,而且問題又少的 code 所提出來的準則,但也未必適用於每一個人 (或是團體)。
這篇文章的好處是有說明為什麼這樣規範,重點在吸收這些想法。
前陣子升了 FreeBSD 上的 bash-completion 之後發現就失效了,翻了紀錄才發現是檔案從 /usr/local/etc/bash_completion
換到 /usr/local/share/bash-completion/bash-completion
,所以引用的路徑要改...
過了一個月沒有 hostname auto completion 的日子...
bash 的 auto completion 預設只吃 .ssh/known_hosts
的內容,而我想讓他加上 yp 的 hosts,查了一下發現這篇 2008 年的文章:「Auto-complete hostnames with using bash」。
因為我的 yp 已經進了 Git,所以我就這樣設就好:
export HOSTFILE="$HOME/git/kkyp/hosts"