是什麼區分開普通的Linux用戶和超級極客的呢?很簡單:用在學習那些使長時工做轉變爲一瞬間工做的技巧、訣竅、祕訣和技術上的時間。若是你想提升效率而又不用作這些蒐集資料的跑腿活兒,那咱們已經收集了50多條簡單易學的Linux技巧,以幫助你更瀟灑地工做,而且最大限度的利用你的電腦。開始享受吧!html
1:檢查不是由你運行的程序mysql
難度:高級linux
應用程序:bash(譯註:UNIX或者LINUX的shell)sql
想象下這個場景-你已經準備好了要和同事在辦公室裏對戰一局快速的Crack Attack(譯註:一款免費的OpenGL遊戲,相似俄羅斯方塊),不料卻發現,當你正準備要擊敗你這個傲慢的下屬時,方塊卻中止了-是什麼讓你的機器變得這麼慢?這確定是由於其餘的用戶運用他們嫺熟的經驗來盜取你寶貴的CPU時間、服務器或者其餘的詭異方式,真煩人!shell
好,讓咱們列舉出系統中全部不是由你運行的程序!數據庫
ps aux | grep -v `whoami`
或者,更巧妙些的是,爲何不列出最佔用時間的前十個程序呢:windows
ps aux--sort=-%cpu | grep -m 11 -v `whoami`
也許最好使用root權限來運行這條指令,由於這樣能夠過濾出大部分活躍的後臺程序。如今你有了這些信息,你能夠終止他們的進程,可是更「卑鄙」的是反覆地在他們的桌面上運行xeyes(譯註:Linux下的一條好玩的命令)!瀏覽器
2:在多個文件中替換掉相同的文本緩存
難度:中等sass
應用程序:find(譯註:Linux下的一條命令)/Perl
若是你有個文件,想在多個位置進行替換,這裏有不少方法來實現。調用test[someting]把當前目錄裏全部文件中的Windows替換成Linux,你能夠像這樣運行它:
perl -i -pe 's/Windows/Linux/;' test*
要替換當前目錄以及下層目錄裏全部文件中的Windows爲Linux,你能夠這樣運行:
find . -name '*.txt' -print | xargs perl -pi -e's/Windows/Linux/ig' *.txt
或者若是你更須要讓它只做用於普通文件上:
find -type f -name '*.txt' -print0 | xargs --null perl -pi -e 's/Windows/Linux/'
節省了大量的時間而且得到了高水平的大師等級!
3:合併一個不穩定的終端
難度:簡單
應用程序:bash
咱們都已經作過這件事了-偶爾使用less或者cat來列出一個文件,或者以瀏覽二進制文件而結束,這一般包含各類能夠輕易弄亂你的終端顯示的控制代碼、警報聲、一些有趣的字符,以及一些奇怪的顏色組合,最後,你的字體將會被一些難以辨認的字符所替代,而你殊不知道該怎麼辦。顯然bash仍然繼續工做着,可是你就是不能明白到底發生了什麼!發送一個初始化命令給這個終端:
reset
而後一切就再次恢復正常了。
4:創造Mozilla關鍵詞
難度:簡單
應用程序:Firefox/Mozilla
在瀏覽器上的一個有用的特徵是,它們有一種能力,能夠經過輸入gg onion來經過Google搜索onion這個詞的一切。同一功能在Mozilla上也可實現,經過單擊Bookmarks(書籤)>Manage Bookmarks(管理書籤)而後添加一個新的書籤,添加的URL就像這樣:
http://www.google.com/search?q=%s
如今選擇書籤編輯器中的條目而且點擊Properties(屬性)按鈕,如今輸入一個相似gg的關鍵字(或者能夠是你選擇的任何字符)就好了。在URL中的%s將被關鍵字以後的文本內容替代。你能夠用這種方法向其餘一些依賴你當前URL信息的網站發送請求。
或者,右擊一個搜索區域而後選擇菜單選項「爲這個搜索添加一個關鍵詞…」。接下來的會話將容許你使用一個指定的關鍵詞。
5:運行多種X會話
難度:簡單
應用程序:X
若是你給別人分享了你的Linux box(),而厭煩了不斷的登入、登出,當你知道了這不是必要的時候,可能會如釋重負。假設你的電腦以圖形模式啓動(runlevel 5),經過同時按下Control+Alt+F1鍵-你將獲得一個登錄提示。輸入你的登陸名以及密碼而後執行:
startx -- :1
來進入你的圖形環境。按下Ctrl+Alt+F7來回到在你以前的用戶會話,若是想回到你本身的用戶會話則按下Ctrl+Alt+F8。
你能夠重複使用這項技巧:F1鍵到F6鍵能夠識別六個控制檯會話,而F7到F12能夠識別六個X會話。警告:儘管這在多數狀況下是適用的,可是不一樣的變種可能用不一樣的方式來實現這項功能。
6:更快地瀏覽
難度:簡單
應用程序:KDE(譯註:一種Linux的桌面環境)
KDE是一個雖然小衆,可是在提高你的網頁瀏覽經驗方面頗有用的選擇。啓動一個KDE控制中心,而後從工具條中選擇System(系統)>KDE performance。如今你能夠選擇預加載瀏覽器實例。實際上,這意味著瀏覽器在開機的時候就開始運行,在你用以前都保持隱藏狀態。當你想要使用它的時候,它幾乎是瞬間出現。
7:簡單地備份你的網站
難度:簡單
應用程序:Backups
若是你想要從一臺電腦上備份一個目錄,但你僅僅想要複製改變的文件到它的備份而不是複製全部的東西到各自的備份,你可使用工具rsync來實現它。你須要在這個遠程的源備份計算機上有一個帳戶。下面是這條命令:
rsync -vare ssh jono@192.168.0.2:/home/jono/importantfiles/* /home/jono/backup/
這樣咱們就備份了192.168.0.2地址上/home/jono/importantfiles/目錄下的全部文件到當前機器上的/home/jono/backup目錄下。
8:使你的時鐘保持準時
難度:簡單
應用程序:NTP
若是你發現電腦上的時鐘彷佛與時間脫軌了,你可使用一個特殊的NTP工具,來確保它準到只有穿實驗服的人才會須要的程度。你須要安裝ntpdate工具,它一般包含在NTP包中,而後你就能夠與NTP服務器保持同步了:
ntpdate ntp.blueyonder.co.uk
能夠在www.eecis.udel.edu/~mills/ntp/clock1b.html上得到相應的NTP服務器的列表。若是你修改了你的開機程序而且在腳本中包含這些命令,就能夠確保不管什麼時候你啓動電腦都是徹底準時的。你還能夠運行一個定時任務來校對時間。
9:找到最大的文件
難度:簡單
應用程序:Shell
計算機中一個常見的問題是,你可能想刪一部分大的文件(相似音頻或視頻片斷)。以下你能夠找到當前目錄中最大的那個文件:
ls -lSrh
「r」的做用是將大的文件列在後面,而「h」則是給出易於人們閱讀的輸出(MB或者諸如此類)。你也能夠搜尋最大的MP3/MPEG文件:
ls -lSrh *.mp*
你也能夠經過下面這條命令搜尋最大的目錄:
du -kx | egrep -v "\./.+/" | sort -n
10:Nautilus快捷鍵
難度:簡單
應用程序:Nautilus(譯註:Linux圖形界面中的一個文件管理器)
儘管不少文件管理器近日來被設計爲使用鼠標進行管理,但有時用鍵盤仍是方便些。Nautilus有一些鍵盤快捷鍵,可使你快速瀏覽文件:
打開一個定位文件 – Ctrl+L
打開父文件夾 – Ctrl+Up
用方向鍵來瀏覽當前文件夾
你也可使用‘emblems’來定製文件圖標。這裏有少許的應用於個別文件或者組的圖象展現。打開Edit(編輯) > Backgrounds and Emblems(背景和符號)菜單條目,而後拖放你想要的圖片便可。
11:整理你的數據庫
難度:簡單
應用程序:MySQL
不管什麼時候你改變一個MySQL數據庫的結構,或者從中刪掉大量的數據,文件都有可能被分散,並致使一些性能損失。尤爲是當運行查詢命令時這個狀況最容易發生。每當你要改動數據庫的時候,記得運行這個優化器:
mysqlcheck -o <databasename>
也許你會發現,若是你使用VARCHAR文件,有必要按期的整理你的數據庫表:這個變長列(variable-length columns)是很是傾向於分裂的。
12:更快的郵件
難度:簡單
應用程序:KMail
連三秒鐘都不想花費在找郵箱客戶端上面?不想被桌面上堆積成山日漸腐爛的圖標搞得找不到鼠標指針?無論你正在KDE裏幹什麼,按幾下鍵盤就能夠發郵件了。輸入:
mailto:plop@ploppypants.com
按下return,KMail將會自動啓動,爲你的至理名言作好準備。你甚至不須要填寫完整的郵件地址。這對Internet地址也是有效的:嘗試輸入www.slashdot.org來啓動瀏覽器。
13:同化你的構造
難度:簡單
應用程序:GCC
若是你運行一個擁有適量RAM的多處理機系統(SMP),你會發現,在寫代碼時,運行一個parallel make頗有好處。與按照默認方式運行make並執行serial builds相比,parallel build 是一種頗有效的改善方法。讓make在building的時候容許同時存在多個child,用以下的-j轉換便可:
make -j4; make -j4 modules
14:節省電池電源
難度:中等
應用程序:hdparm
極可能你已經對使用hdparm來調整一個硬件驅動很熟悉了,可是它還能節約你的筆記本的電池壽命,或者經過下降硬盤轉速來使生活更寧靜。
hdparm -y /dev/hdb hdparm -Y /dev/hdb hdparm -S 36 /dev/hdb
按順序,這些命令將讓硬件轉換成Standby(待命)模式,再轉換成Sleep(睡眠)模式,而且最終設置Automatic(自動)旋轉超時。這個結尾包含一個以5秒爲單位的一塊塊數字變量(例如,值爲12就等同於一分鐘)。
順便說一下,這個下降旋轉時間至5秒爲單位的習慣真值得拿一個特別的用戶友好獎——這個值的設置也許有什麼歷史緣由,但咱們不知道。若是你剛好知道爲何,請來信告知咱們!
15:無線速度管理
難度:中等
應用程序:iwconfig
一個radio發送/接受設備和其餘設備間的傳輸速度,取決於有多少可用信號。在信號減弱的時候如需維持傳輸,就須要下降radio的傳輸速度。通常狀況下,radio都會本身找到可用信號,並自動選擇最快的速度。
在邊緣區域中,信號強度勉強夠用,這時候就可能因radio不斷調試鏈接速度而形成沒必要要的包丟失。若是不能增強天線增益,或移動設備位置來獲取更充足的信號,能夠嘗試強制讓card同步到一個較低的速率。這樣,radio就會減小調試頻率,實際上,還會比使用持續觸發的連接傳輸得快一些。不一樣的驅動器有不一樣的連接速度設置方法。在Linux中,可用iwconfig來設置速度:
iwconfig eth0 rate 2M
這個指令能強制使廣播老是同步在2Mbps,即便還存在其餘可用速度。你也能夠設置一個明確的速度做爲上限,容許卡自動按照任何低於這個上限的速度來工做,可是不能高於它。例如,你能夠把它做用於上文舉例的鏈接上:
iwconfig eth0 rate 5.5M auto
如上的指令可讓驅動器將速度上限設爲5.5Mbps,只慢不快。想要將card恢復爲全自動縮放,只須要制定它本身自動工做。
iwconfig eth0 rate auto
一般卡在1Mbps時比它們在11Mbps時能夠延伸的更遠。在這兩種速率之間,Orinoco卡有12dB的差異,即下降數據速率可得到的潛在傳輸距離的四倍。
16:疏通開端口
難度:中等
應用程序:netstat
要獲取在Linux服務器上處於監聽狀態的網絡服務器的列表,可以使用netstat程序:
root@catlin:~# netstat -lnp Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:5280 0.0.0.0:* LISTEN 698/perl tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 217/httpd tcp 0 0 10.42.3.2:53 0.0.0.0:* LISTEN 220/named tcp 0 0 10.42.4.6:53 0.0.0.0:* LISTEN 220/named tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 220/named tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 200/sshd udp 0 0 0.0.0.0:32768 0.0.0.0:* 220/named udp 0 0 10.42.3.2:53 0.0.0.0:* 220/named udp 0 0 10.42.4.6:53 0.0.0.0:* 220/named udp 0 0 127.0.0.1:53 0.0.0.0:* 220/named udp 0 0 0.0.0.0:67 0.0.0.0:* 222/dhcpd raw 0 0 0.0.0.0:1 0.0.0.0:* 7 222/dhcpd
如上消息告訴你PID爲698的進程是一個綁定在5280端口的Perl進程。若是你不是超級用戶,系統將不會顯示哪一個程序是運行在哪一個端口上的。
17:更快的硬件驅動
難度:高級
應用程序:hdparm
也許你已經知道hkparm工具能夠用於測試硬盤速度和更改一些設置。它還能夠用於優化驅動性能,而且開啓一些默認關閉的功能。在咱們開始以前,敬告您,改變驅動選項可能會形成數據損壞,因此首先請備份你全部的重要數據。以下命令能夠用來測試速度:
hdparm -Tt /dev/hda
你將會看到相似於這樣的東西:
/dev/hda: Timing buffer-cache reads: 128 MB in1.64 seconds =78.05 MB/sec Timing buffered disk reads:64 MB in 18.56 seconds = 3.45MB/sec
如今咱們能夠嘗試讓它提速。找出你的驅動目前設置使用的是哪一個選項,而後傳遞給hdparm這個硬件的名稱:
hdparm /dev/hda /dev/hda: multcount=16 (on) I/O support=0 (default 16-bit) unmaskirq=0 (off) using_dma=0 (off) keepsettings =0 (off) readonly =0 (off) readahead=8 (on) geometry = 40395/16/63, sectors = 40718160, start = 0
這至關於一個默認設置。多數的Linux發行版本都會選擇一個能夠運行在多數硬件上的安全選項。爲了得到更快的速度,你可能想要激活dma模式,而後固然要調整I/O支持。多數現代計算機支持模式3,這是一個近乎雙倍通量的32位轉換模式。你也能夠嘗試:
hdparm -c3 -d1/dev/hda
而後返回這個速度,查看一下不一樣。檢驗你的硬件支持哪些模式,而後能夠在hdparm的man手冊中學習如何設置它們。
18:在你手中的可用時間
難度:高級
應用程序:Perl
對計算來講,浪費的資源就是那些本能夠派上更好的用場的資源。無論你還運行了什麼別的程序,爲何不嘗試運行一個進程,在終端標題欄實時顯示當前的平均負載呢?
將這個存爲一個腳本並命名爲tl,而後把它存到你的~/bin目錄下:
#!/usr/bin/perl -w use strict; $|++; my $host=`/bin/hostname`; chomp $host; while(1) { open(LOAD,"/proc/loadavg") || die "Couldn't open /proc/loadavg: $!\n"; my @load=split(/ /,<LOAD>); close(LOAD); print "$host: $load[0] $load[1] $load[2] at ", scalar(localtime); print "07"; sleep 2; }
若是你想用用load average和你登錄的機器的當前時間,來替換titlebar名字,與西寧tl&便可。它會很恰當的在後臺運行,即便你運行一個相似Vim的交互式程序。
19:不使用X完成抓取一次屏幕截圖
難度:簡單
應用程序:Shell
確實有不少屏幕捕獲的工具,可是他們大部分都是基於X的。這致使了一個問題,當你運行一個X應用程序時,將會干擾這個你想要抓取的應用程序——或許是一個遊戲或者甚至是一個Linux安裝程序。但若是你使用了超棒的ImageMagick(譯註:一個開源的圖片處理工具集和開發包)導入命令,你就能夠經過控制檯來對X模塊進行抓取。很簡單,打開一個虛擬終端(例如Ctrl+Alt+F1)而後輸入以下:
chvt 7; sleep 2; import -display :0.0 -window root sshot1.png; chvt 1;
chvt命令改變了虛擬終端,而sleep命令給重繪屏幕提供了一個時間。導入命令會在最後的chvt命令把你再次打回到虛擬終端以前,捕獲全部的顯示而且保存到一個文件中。請確保你把全部的命令都輸入在同一行中。
這是甚至在Linux安裝程序上也是有效的,不少安裝程序都只留下一個控制檯而轉去後臺運行——一個一流的處處運行的屏幕抓取器只須要加載一些它所須要的庫到一個floppy(譯註:磁盤)/CD上。
20:遠程訪問你的程序
難度:簡單
應用程序:X
若是你想要躺在牀上使用你的Linux筆記本從你的Window機器上訪問你的應用程序,可使用SSH來實現。首先你須要在/etc/ssh/sshd_config中激活如下設置:
X11Forwarding yes
如今咱們可使用以下命令在192.168.0.2上運行GIMP:
ssh -X 192.168.0.2 gimp
21:用到man手冊
難度:簡單
應用程序:man
若是你在一個特殊的項目或者命令中須要幫助,man手冊是一個好的入門。一般你使用man<command>來訪問man手冊,可是你也能夠經過一個特殊的man頁描述的關鍵詞來搜索man頁。舉例來講,搜索全部詳述login的man頁:
man -k login
當你訪問了一個man頁,你也可使用斜槓鍵來搜索一個特定的詞而不是用man頁自己。在你的鍵盤上按下「 / 」而後輸入搜索項是很是簡單的。
22:和你的醫生對話
難度:簡單
應用程序:Emacs
若是說Emacs只是個文本編輯器,就好像說Triumph只是個摩托車,或者說世界盃就是個四年一度的足球賽。好吧,它確實是個文本編輯器,但那只是一小~~~部分。舉個栗子?打開編輯器,按下Esc鍵,緊接着按下X,而後進入doctor:你將會進入到一個離奇的對話中,有一個假想的可是熟練的精神治療師。若是你想要磨蹭你的時間,這是一個很好的方法。
Esc-X tetris
會將你的‘編輯器’轉變成一個老的、受歡迎的遊樂場遊戲。
瘋狂到此爲止了嗎?絕對沒有!檢查你的發行版本的包,列出他們在你的Emacs上捆綁的其餘功能:咱們看到有國際象棋,Perl集成,IRC chat(譯註:一種聊天工具),法文翻譯,HTML轉換,一個Java開發環境,靈巧的編輯,甚至還有一個被稱爲「semantic bovinator」(語義糾錯)的東西。咱們確實對最後一個能作什麼的毫無頭緒,可是咱們判定不管如何你都敢嘗試它!(請先閱讀免責聲明!)
23:生成包關聯圖表
難度:簡單
應用程序:Debian
Debian系統最受爭議的是它能安裝一個包,並自動知足其附屬(dependency)。若是你想要以圖形形式表現這些包之間的關係(這對於瞭解系統如何協調工做是很是有用的),你可使用Debian中非自由的Graphviz包(apt-get install graphviz)而後使用以下命令:
apt-cache dotty > debian.dot
這個命令會生成圖片文件並存入dotty:
dotty debian.dot
24:卸載忙碌狀態的驅動
難度:簡單
應用程序:bash
你應該很熟悉這種狀況-嘗試去卸載一個驅動,可是系統卻告訴你它處於忙碌狀態。可是什麼程序在佔用呢?一個短小的單行代碼將告訴你:
lsof +D /mnt/windows
這將返回命令和進程ID以及任何正在訪問/mnt/windows目錄的任務。接下來你就能夠定位它們,或者使用kill命令來終結它們。
25:文本文件的轉換
難度:簡單
應用程序:recode
recode是一個小而實用而且能夠幫你在不一樣平臺上使用文本文件時節省大量精力的工具。它的缺陷主要是源於換行符。一些系統使用一個換行字符,而其餘的一些系統使用回車。更多其餘的系統兩個都用。最後的結果就是,若是你從一個平臺移動文本文件到另外一個平臺上,你會有太多或太少的換行符,還會有不少奇怪的字符殘留。
然而,recode命令的參數是有一些神祕的,因此爲何不把這種技巧和HACK 26結合到這個功能中,而後創建一些有用的別名:
alias dos2unix='recode dos/CR-LF..l1'alias unix2win='recode l1..windows-1250'alias unix2dos='recode l1..dos/CR-LF'
還有不少recode選項-它們確實能夠轉換大量字符間的設置。查閱man手冊來獲取更多信息。
26:只列出今天的文件
難度:簡單
應用程序:Various
你可能熟悉這個問題,今天早些時候你建立了一個文本文檔,而如今馬上就須要它。然而,你想不起來你給它起了個什麼好笑的名字,做爲一個熟練的geek,你的家文件夾被836個不一樣的文件填滿了。那你要如何找到它呢?哈哈,這裏有不少方法,可是這個小技巧告訴你管道和結合使用兩個強力的shell命令是多麼有效:
ls -al --time-style=+%D | grep `date +%D`
ls命令的參數使得這個日期戳以一種特殊的方式呈現。這個狡猾的位就是這樣傳遞給grep來輸出的。grep的參數是它本身的命令(由於是倒引號因此執行),用來將當前的日期替代成匹配的字符。你能夠輕易的修改它來搜索其餘特別的日期、時間、文件大小或者任何東西。結合它與HACK 26是很是節省輸入的。
27:避免常見的拼寫錯誤和長命令
難度:簡單
應用程序:Shell
這個alias命令對於設立長命令的快捷鍵是有用的,或者說是聰明的事情。HACK 25中,咱們能夠經過如下命令來獲得一個新命令,lsnew:
alias lsnew=" ls -al --time-style=+%D | grep `date +%D` "
然而alias還有其餘的用處。例如,解決常見的拼寫錯誤。有多少次你在改變父目錄時忽略了空格?不用再苦惱了!
alias cd..="cd .."
做爲一種選擇,試試重寫一些已經存在的命令怎麼樣?
alias ls="ls -al"
像咱們同樣節省一些按鍵,或者你老是想要完成清單。
要爲每個會話激活這些快捷鍵,只用添加alias命令到你的用戶裏家文件目錄中的.bashrc文件中。
28:更改Mozilla的祕密設置
難度:簡單
應用程序:Mozilla
若是你想要改變Mozilla操做,可是在首選項中並無提供能夠點擊的選項來幫助你,這裏有一個特殊的模式可讓你在Mozilla中激活,這樣你就能改變一切了。要訪問它,在地址欄中輸入這些:
about:config
這樣你就能夠改變表中文件裏每個你感興趣的設置的值。
其餘有趣的模式包括整體信息(about:),插件詳情(about:plugins),開發者信息(about:credits)和一些整體狀況(about:mozilla)。
29:一個星星的背景
難度:簡單
應用程序:KStars
你可能已經玩過KStars了,可是如何創造一個每次當你啓動時就更新的KStars背景圖呢?
KStars能夠和–dump switch一塊兒運行,它能夠從你的啓動設置中打印出一幅圖片,但一點也不會增長GUI的負載。你能夠寫一個腳原本運行它生成一個天天都更換的桌面圖片(或者你能夠只是使用這個方法生成圖片)。
像這樣使用KStars:
kstars --dump --width 1024 --height 768 --filename = ~/kstarsback.png
你能夠把它添加到~/.kde/Autostart文件夾的一個腳本中,一啓動就開始運行。在瀏覽器中找到這個文件,把它拖到桌面上而後選擇「設置爲牆紙」,將它做爲一個隨機生成的背景圖來使用。
30:直接打開一個SVG
難度:簡單
應用程序:Inkscape
你能夠經過shell運行Inkscape,而後直接經過一個URL來馬上編輯一張圖片。只用輸入:
inkscape http://www.somehost.com/graphic.svg
記得要另存爲一下!
31:不用編輯器來進行編輯
難度:中等
cut -c 8-15 file1 > file2
應用程序:好多
一般很是長的文件是很難用文本編輯器來進行操做的。若是你不時地要作這件事,可能你會發現用某些趁手的命令行工具會更快一些,就像下面這個例子同樣。
從文件file1中打印第一列和第三列到文件file2中,咱們可使用awk:
awk '{print $1, $3}' file1 > file2
只輸出file1中第八列到第十五列中的字符,咱們可使用cut:
cut -c 8-15 file1 > file2
要使用單詞word2來替換文件file1中的單詞word1,咱們可使用sed命令:
sed "s/word1/word2/g" file1 > file2
一般這是一個比打開文本編輯器更快獲得結果的方式。
32:只備份選中的文件
難度:中等
應用程序:tar
想要使用tar來備份一個目錄中的某一文件?你可使用-T標誌。首先,用你想要備份的文件來建立一個文件:
cat >> /etc/backup.conf # /etc/passwd # /etc/shadow # /etc/yp.conf # /etc/sysctl.conf EOF
而後運行tar,並使用-T標誌指向剛剛建立的文件。
tar -cjf bck-etc-`date +%Y-%m-%d`.tar.bz2 -T /etc/backup.conf
如今你已經備份好了。
33:在文件中合併列
難度:中等
應用程序:bash
在文件中拆分列是很是簡單的,合併它們稍微複雜一點。下面是一個簡單的完成這項工做的腳本:
#!/bin/sh length=`wc -l $1 | awk '{print $1}'` count=1[ -f $3 ] && echo "Optionally removing $3" && rm -i $3 while [ "$count" -le "$length" ] ; do a=`head -$count $1 | tail -1` b=`head -$count $2 | tail -1` echo "$a$b" >> $3 count=`expr $count + 1` done
給這個腳本命名爲merge.sh而且以下運行它:
chmod u+x merge.sh
如今,若是你想要合併file1和file2中的列到file3,下面是執行方法:
/path/to/merge.sh file1 file2 file3
/path/to必須被你文件系統中的merge.sh位置所替代。
34:大小寫敏感
難度:中等
應用程序:bash
有些時候,一個詞在不一樣操做系統間沒有任何區別,在Linux中,「Command」和「command」是不一樣的東西。當從Windows移動文件到Linux中時會形成一些麻煩。tr是一個小的shell功能,能夠用於改變一堆文件。
#!/bin/sh for i in `ls -1`; do file1=`echo $i | tr [A-Z] [a-z] ` mv $i $file1 2>/dev/null done
經過執行這個,FILE1和fiLe2將被分別重命名爲file1和file2.
35:Emacs中的宏指令
難度:中等
應用程序:Emacs
當編輯文件時,你一般會發現那些任務都是冗長和重複的,因此爲了節約你的時間,你應該錄製一個宏指令。在Emacs中,你將必須經歷如下步驟:
1.按下 Ctrl+X 來開始一個記錄。
2.插入全部你想要的按鍵和命令。
3.當你結束時按下Ctrl+X。
如今,你能夠用如下命令來執行:
Ctrl -u <number> Ctrl -x e
<number>是你想執行宏指令的次數。若是你輸入的值爲0,這個宏指令將被一直執行直到文件的結束。Ctrl -x e等同於Ctrl -u 1 Ctrl-x e。
36:簡單的垃圾郵件清理
難度:中等
應用程序:KMail
垃圾郵件,或者不請自來的大批郵件,已是個很廣泛的問題,出於必要,如今幾乎每一個人都有某種形式的垃圾郵件保護。不少ISP包含垃圾郵件過濾,可是它並無被設置的太過主動,並且一般不少都是簡單的標記垃圾郵件,而後讓它進來(ISP可不想由於丟失了你的郵件而被責備)。
因此,你在客戶端上可能已經設置了反垃圾郵件的東西,要讓它運行得更好,你能夠寫一些過濾器來移除被標記的垃圾郵件。標籤是做爲標題包含進來的。在KMail中,你能夠只建立一個快速過濾器來將你的郵件裝箱,或者乾脆把它放到垃圾文件夾中。精確標題的使用將決定於你的ISP使用的軟件,可是一般都是像SpamAssassin這樣系統的相似X-Spam-Flag = YES。
在KMail中簡單建立一個過濾器,選擇Match Any of the Following(匹配下面的任何一個)而後輸入標題細節和你須要的動做。應用過濾器到即將到來的郵件上,而後你的垃圾郵件的一半將不會再來打擾你了。
37:閱讀OOo文檔但不使用OOo
難度:中等
應用程序:OpenOffice.org(譯註:一套跨平臺辦公室軟件套件)
你曾經有沒有過拿到一個OOo文檔,可是沒有OpenOffice.org來閱讀?因此你就把它保存成普通的文本文件(.txt),可是被 StarOffice .sxw 格式所替代?這個文本文件能夠獲得拯救。首先,這個sxw文件是一個壓縮文檔,因此解壓它:
unzip myfile.sxw
你想要的是名爲’content.xml’的文件。不幸的是,它充滿了xml的標籤以致於很是難以辨認,因此要用一些Perl魔法將它們過濾出去:
cat content.xml | perl -p -e"s/<[^>]*>/ /g;s/\n/ /g;s/ +/ /;"
這可能丟失了不少格式,可是至少如今它是能夠閱讀的。
38:搜索和執行
難度:中等
應用程序:find
find命令並不僅是在尋找文件方面頗有用,它在處理如下問題時也是很是有用的。這裏有一個簡短的例子。
假設咱們有不少的壓縮文件,如今咱們想找到全部的壓縮文件:
find . -name '*.gz'
將會定位出全部當前路徑下的gzip文檔。可是假設咱們想要檢查它們是不是有效文檔,gunzip -vt選項將會幫咱們實現這個,咱們還能夠機智地使用xargs結合這兩個操做:
find . -name '*.gz' | xargs gunzip -vt
39:正確使用whois服務器
難度:中等
應用程序:whois
whois命令在追捕Internet上的惡棍以及給他們提供服務的ISP都是很是有用的。不幸的是,有不少whois服務器,若是你的反搜索一個域名,一般你不得不用一個指定的他們使用的TLD。然而,一些whois代理將自動轉送你的查詢到正確的服務器上。其中之一能夠在http://whois.geektools.com/上得到。
whois -h whois.geektools.complop.info
40:驅動掛載到哪裏了?
難度:中等
應用程序:bash
人們常碰到的一個問題是,你剛接通電源時,就有太多的可掛載外設(USB驅動,flash內存卡,USB鍵驅動)消耗光了驅動?
實際上,全部的驅動都調用一個驅動——就像usb-storage,會在日誌中存儲不少有用的信息。嘗試:
dmesg | grep SCSI
這將從dmesg輸出過濾出指定的驅動規格。你可能發現一些這樣的文本:
SCSI device sda: 125952 512-byte hdwr sectors (64 MB)
這個是說你的外設是在sda上。
41:自動執行USB裝置
難度:高級
應用程序:hotplug腳本
當添加一個特殊的外設時想要運行一個指定的應用程序?USB hotplug後臺進程能夠幫你!當有USB裝置添加到系統中時,這個服務就會獲得通知。對於須要內核驅動的裝置,hotplug後臺進程將在/etc/hotplug/usb/下調用一個同名的腳本,例如,這裏的一個名爲usb-storage的腳本。你能夠直接在這個腳本的後面添加你本身的命令(或者更好的是,在它的最後添加一行來讓腳本在別的地方執行)。那麼你就能夠播放音樂,autosync文件(譯註:影像文件),搜尋圖片或者其餘什麼的。
對於不依賴於內核驅動的裝置,有一個檢查表,能夠用來匹配USB產品和製造商ID。不少發行版已經設置好去作一些事情,可是你能夠依據你的須要定製這些腳本。到http://jphoto.sourceforge.net/ selected=sync去看一個咱們能作什麼的例子。
42:重命名和調整圖片大小
難度:高級
應用程序:bash
很喜歡你的新相機可是不能容忍那個糟糕的名字?你也想要準備發佈它們到網上嗎?沒問題,一個簡單的bash腳本真是你所須要的:
#!/bin/sh counter=1root=mypictresolution=400x300for i in `ls -1 $1/*.jpg`; do echo "Now working on $i" convert -resize $resolution $i ${root}_${counter}.jpg counter=`expr $counter + 1` done
保存這個腳本到一個名爲picturename.sh的文件中,而後用一下命令執行它:
chmod u+x picturename.sh
而後在你的某個路徑下存儲它。如今,若是你在directory /path/to/pictdir下有一堆.jpg文件,全部你須要作的就是執行這個:
picturename.sh /path/to/pictdir
而在當前的目錄下你會發現 mypict_1.jpg, mypict_2.jpg之類的,它們是你初始圖片調整大小後的版本。你能夠根據你的須要改變腳本,或者,你只是期待一個超級簡單的圖片大小調整,試着看看mogrify命令和它的-geometry參數。
43:安全登出
難度:簡單
應用程序:bash
當你在一臺共享機器上使用一個控制檯,或者甚至只是在你本身的桌面使用控制檯,均可能會發現當你登出時,屏幕仍然會顯示誰已經登入正在作什麼的痕跡。大多數發行版本將會清屏,可是有些不會。你能夠經過編輯你的 ~/.bash_logout文件而後增長這個命令來解決問題:
clear
你也能夠添加任何其餘的有用命令在這裏。
44:傳輸文件但不使用ftp或者scp
難度:簡單
應用程序:netcat
須要傳輸一個目錄給其餘服務器可是沒有FTP或者SCP使用權?那麼這個小技巧將會幫助你使用netcat功能。在目的服務器上運行:
nc -l -p 1234 | uncompress -c | tar xvfp -
而且在發送服務器上運行:
tar cfp - /some/dir | compress -c | nc -w 3 [destination] 1234
如今你就能夠不須要FTP而且不須要root權限,就能傳送文件了。
45:備份一個Debian包清單
難度:簡單
應用程序:Debian
若是你正在運行Debian而且找不到你正在運行的包,爲你當前正在安裝的包作一個備份是很是有用的。你能夠運行以下獲得一個清單:
dpkg --get-selections > debianlist.txt
這將把所有的清單放到debianlist.txt中,這樣你就能夠經過以下代碼在不一樣的計算機上安裝相同的包。
dpkg --set-selections <debianlist.txt
當你複製你的系統到一個新的計算機上時,你要記住你還須要從/etc中複製配置文件。
要實際安裝這些選項,使用以下指令:
apt-get -u dselect-upgrade
46:強化ssh
難度:簡單
應用程序:ssh
儘管SSH是一個很是安全的鏈接服務器的方式,這裏還有兩個簡單的改變,可讓你進一步加強它的安全性。首先,你固然不但願別人直接以root用戶登入——他們應該以普通用戶登錄,而後使用su命令來轉換。你能夠在/etc/ssh/ssh_config 文件中經過添加以下代碼改變這個件事:
PermitRootLoginno
如今惟一能獲得root特權的方式是經過su,這意味着入侵者如今須要破解兩個密碼來獲得所有的使用權。當你編輯這個文件時,找到這樣一行:
Protocol 2, 1
而後把它改成以下:
Protocol 2
這將消除最初的SSH協議中的撤銷選項,如今被認爲是很是易於攻擊的。
47:中止迴應ping
難度:簡單
應用程序:sysctl
ping在找出網絡拓撲結構時是很是有用的命令,缺點是它只能作這件事,並且會使得網絡上的黑客們更容易瞄準現場服務器。可是你能夠告訴Linux忽略全部的ping服務器將不會迴應。這裏有不少的方法來實現它,可是最好的是使用sysctl。關掉ping迴應:
sysctl -w net.ipv4.icmp_echo_ignore_all=1
想要打開它,使用:
sysctl -w net.ipv4.icmp_echo_ignore_all=0
關掉ping對你來講是很是嚴重的,看看接下來的技巧。
48:下降ping速率
難度:簡單
應用程序:sysctl
可能你想要保持服務器回覆ping的功能,可是又想從被熟知的「ping flood」(封包洪流)的攻擊中保護本身。那麼你要如何完成這一壯舉呢?最簡單的方法是下降回應ping服務器的速率。它們仍然是有效的,但不會使服務器過載。
sysctl -w net.ipv4.icmp_echoreply_rate=10
當回覆被看成一個信號地址發送時,這將會下降速率。
49:當登出的時候清理KDE
難度:簡單
應用程序:bash
在Windows中有不少程序會作一些清除網絡緩存,移除臨時文件事情。Linux上若是也能夠這樣是否是很cool呢?使用KDE,你甚至不須要安裝任何新的軟件,startkde腳本將會自動的執行你放在特殊地方的腳本。
首先,你須要在你的.kde目錄下建立一個命令shutdown的目錄:
mkdir /home/username/.kde/shutdown
如今建立一個腳本,用來在關機時執行一些你想要的事情。這裏是一個例子:
#!/bin/bash #clear up temp folder rm -rf ~/tmp/* #clear out caches rm -rf ~/.ee/minis/* rm -rf ~/.kde/share/cache/http/* # delete konqueror form completions rm ~/.kde/share/apps/khtml/formcompletions
如今確保你設置了正確的權限:
chmod ug+x ~/.kde/shutdown/cleanup.sh
(或者隨便你叫它什麼)。能夠清除敏感文件,也能夠經過將腳本放在你的默認KDE文件夾中有一個名爲shutdown的子文件夾裏,給全部用戶一個全局的關機腳本。找出你的默認KDE目錄在哪裏,試一下:
kde-config --path exe
50:無密碼的ssh
難度:中等
應用程序:ssh
厭煩了每次登錄你的服務器時都要輸入密碼?ssh也支持密鑰,因此當你登錄桌面時你只能輸入你的密碼。在你的桌面機器上生成一個密鑰對:
ssh-keygen -t dsa -C your.email@ddress
爲你的密鑰輸入一個口令。這會將密鑰放到 ~/.ssh/id_dsa and the public key in ~/.ssh/id_dsa.pub中。如今看看你是否有了一個正在運行的ssh-agent。
echo $SSH_AGENT_PID
若是安裝了ssh-agent,大部分窗口管理器都會自動運行它。若是沒有安裝,開啓一個:
eval $(ssh-agent)
如今,告訴這個代理你的密鑰:
ssh-add
而後輸入你的口令。你須要在每次登錄時都輸入口令,若是你是使用X,嘗試添加:
SSH_ASKPASS=ssh-askpass ssh-add
到你的.xsession文件。(你可能須要安裝ssh-askpass)如今爲每一個你須要登入的服務器都建立這個目錄 ~/.ssh,而後複製這個文件~/.ssh/id_dsa.pub into it as ~/.ssh/authorized_keys 。若是你是手動開啓ssh-agent,當你登出時,使用以下代碼終止它:
ssh-agent -k
51:經過ssh使用rsync
難度:中等
應用程序:Shell
rsync使大型目錄結構保持同步。經過SSH使用tar遠程複製一個文件系統的一部分是很是理想的,sync甚至更適合保持兩臺機器之間的文件系統的同步。爲了使用SSH運行一個rsyns,傳遞給它一個-e轉換:
rsync -ave ssh greendome:/home/ftp/pub/ /home/ftp/pub/
注意從源端(在greendome上)來的文件說明後面的 / ,在源說明中,一個尾部的 / 告訴rsync這個目錄的內容,但不是目錄自己。爲了將目錄放入正在複製的內容的最高等級丟掉這個 /:
rsync -ave ssh bcnu:/home/six .
這將在 ~/six/目錄下保持一個與bcnu:/home/six/上的任何東西同步的複製品。rsync默認只拷貝文件和目錄,可是當源端移除了文件時並不會在目的端移除它們的拷貝。爲了保持複製的精確性,包含–delete這個標誌:
rsync -ave ssh--delete greendome:~one/reports .
如今當老的報表從greendome上的~one/reports/中移除了,在同步版本中,每次這個命令運行時,它們也將會從~six/public_html/reports/中移除。若是你在corn中像這樣運行一條命令,記得丟掉v。這將會使輸出穩定(除非rsync在運行中出現問題,在這種狀況下你將會收到一封有錯誤輸出的郵件)。使用SSH做爲你的rsync運輸方式,這樣作的好處是使數據在網絡傳輸過程當中加密,並能夠方便使用任何你已經用SSH客戶端密鑰創建的信任關係。
52:資源掃描
難度:中等
應用程序:nmap
例如,簡單的TCP鏈接掃描能夠在不須要root特權時進行:
通常來講,當人們想到nmap時,都假設nmap是用來進行一些違法的網絡偵查,併爲惡意攻擊作準備的。可是做爲一個強大的工具,nmap能夠成爲一個白帽子,作一些比入侵網絡有意義得多的事。
nmap rigel
nmap也能夠經過指定範圍或者CIDR符號來掃描IP地址:
nmap 192.168.0.1-254 nmap 192.168.0.0/24
nmap若是以root身份運行,能夠提供更多的信息。當它以root身份運行時,經過使用-O標誌,它可使用特殊的數據包來決定遠程機器的操做系統。此外,你能夠經過使用-sS標誌來實現半開的TCP掃描。nmap將會發送一個SYN數據包到遠程的主機,而後等待接收它迴應的ACK。若是nmap收到一個ACK,它就知道這個端口是開放的。
這不一樣於普通的TCP三次握手,客戶端會發送一個SYN包,若是它收到了初始的服務器ACK,客戶端隨後會將一個ACK送回服務器。攻擊者們時常使用這個選項來避免使他們的掃描登錄到遠程機器上。
nmap -sS -O rigel Starting nmap V. 3.00 ( www.insecure.org/nmap/ ) Interesting ports on rigel.nnc (192.168.0.61): (The 1578 ports scanned but not shown below are in state: filtered) Port State Service 7/tcpopen echo 9/tcpopen discard 13/tcp open daytime 19/tcp open chargen 21/tcp open ftp 22/tcp open ssh 23/tcp open telnet 25/tcp open smtp 37/tcp open time 79/tcp open finger 111/tcpopen sunrpc 512/tcpopen exec 513/tcpopen login 514/tcpopen shell 587/tcpopen submission 7100/tcp open font-service 32771/tcpopen sometimes-rpc5 32772/tcpopen sometimes-rpc7 32773/tcpopen sometimes-rpc9 32774/tcpopen sometimes-rpc11 32777/tcpopen sometimes-rpc17 Remote operating system guess: Solaris 9 Beta through Release on SPARC Uptime 44.051 days (since Sat Nov1 16:41:50 2003) Nmap run completed -- 1 IP address (1 host up) scanned in 166 seconds
伴隨着OS探測的激活,nmap能夠確認OS是Solaris,可是如今你還能夠知道,它多是運行在SPARC處理器上的Version 9。
一個強大的功能是能夠被用於和你的nmap的XML輸出性能保持聯繫。使用-oX命令行轉換而激活,就像這樣:
nmap -sS -O -oX scandata.xml rigel
這在掃描IP地址範圍或者你所有的網絡時是特別有用的,你能夠將全部經過掃描收集起來的信息放到一個XML文件裏,並通過解析後插入到數據庫中。這裏是一個開放的端口的XML入口:
<portprotocol="tcp"portid="22"><statestate="open"/><servicename="ssh"method="table"conf="3"/></port>
nmap是一個強大的工具。經過使用它的XML輸出性能,一點點的腳本,還有一個數據庫,你能夠創造一個更強大的能夠在你的網絡上監測未受權的服務和機器的工具。
53:備份你的bootsector(引導扇區)
難度:高級
應用程序:Shell
妨礙引導裝入,雙啓動和不少其餘下熱鬧的程序會留給你一個混亂的引導扇區。爲何不在你能夠備份的時候給它建立一個備份呢:
引導裝載器混亂、雙啓動及許多其餘的可怕的進程可能形成亂七八糟的啓動區。
dd if=/dev/hda of=bootsector.img bs=512count=1
很顯然,你應該改變這個裝置來顯示你的boot驅動(有多是SCSI的sda)。還要很是當心,別把事情搞砸——你可能會垂手可得地毀掉你的驅動!恢復時使用:
dd if=bootsector.img of=/dev/hda
54:保護日誌文件
難度:高級
應用程序:不少
在一個入侵過程當中,一個入侵者將會極可能在不少系統日誌中留下能反映他行爲的跡象:一個有價值的審計追蹤應該被保護。沒有可靠的日誌,就很難發現攻擊者是如何侵入,或者是從哪裏來的攻擊。這個信息在分析事件、聯繫相關方面並給予反饋上,是很關鍵的。可是,若是入侵成功,什麼才能阻止他來移除他的這些錯誤行爲的痕跡呢?
這就是文件屬性能發揮做用、挽回敗局的地方(或者至少使事情沒那麼糟)。Linux和BSD都有給文件和目錄分配額外的屬性這個功能。這不一樣於標準的Unix權限方案中,系統爲全部的用戶提供的廣泛的屬性設置,並且它們比文件權限或者ACL都要更深層次影響文件訪問。
在Linux中,你能夠看到而且經過lsattr和chattr命令分別修改一個給出文件的設置。在寫這篇文章時,Linux的文件屬性只能在你使用ext2和ext3時得到。這還有些XFS和ReiserFS的關於得到屬性支持的內核補丁。一個保護日誌文件的有用的屬性是append-only。當這個屬性被設置後,文件不能被刪除,並且寫操做只能被容許在文件的最後追加。
在Linux下要設置append-only標誌,運行這條命令:
chattr +afilename
看看+a屬性是如何工做的:建立一個文件而後設置它的append-only屬性:
touch /var/log/logfile echo "append-only not set" > /var/log/logfile chattr +a /var/log/logfile echo "append-only set" > /var/log/logfile bash: /var/log/logfile: Operation not permitted
企圖第二次寫文件失敗,由於它將覆蓋這個文件。然而,在文件的末尾追加仍然是被容許的:
echo "appending to file" >> /var/log/logfile cat /var/log/logfile append-only not set appending to file
顯而易見,一個得到root特權的侵入者能意識到使用了文件屬性,而且能夠經過運行chattr -a來移除append-only標誌。爲了防止這種狀況,咱們須要禁用移除append-only屬性的性能,在Linux下使用功能機制完成這個。
Linux功能模型分割特權給全能的root帳戶,而且容許你有選擇的禁用它們。爲了防止一個用戶移除一個文件的append-only屬性,咱們須要移除CAP_LINUX_IMMUTABLE功能。當體如今當前運行系統中時,這個功能容許append-only屬性被修改。爲了當前系統中得到修改這個功能的設置,咱們將簡單有效地調用lcap(http://packetstormsecurity.org/linux/admin/lcap-0.0.3.tar.bz2).
爲了解壓和編譯這個工具,運行這條命令:
tar xvfj lcap-0.0.3.tar.bz2 && cd lcap-0.0.3 && make
而後,不容許修改append-only標誌,運行:
./lcap CAP_LINUX_IMMUTABLE ./lcap CAP_SYS_RAWIO
第一條命令移除了改變append-only標誌的功能,而後第二條移除了原始I/O的功能。這是頗有必要的,由於這樣就能保護文件不被訪問塊設備時駐留在其上的東西修改。這阻止了訪問/dev/mem和/dev/kmem,有可能給入侵者提供恢復CAP_LINUX_IMMUTABLE功能的漏洞。爲了在boot上移除這項功能,添加以前的兩條命令到你的系統啓動腳本中(例如/etc/rc.local)。你應該確保這個功能在boot命令中被移除了,防止其餘啓動腳本出問題。一旦lcap移除了內核功能,就只能經過重啓系統來恢復了。
在作這些以前,你應該明白,給你的日誌文件添加append-only標誌,將會形成日誌循環腳本失敗。然而,作這件事將會極大的提高你的審計追蹤的安全性。安全性的提高在突發事件中會被證實是頗有用的。
55:自動加密鏈接
難度:高級
應用程序:FreeS/WAN
一個FreeS/WAN支持的特別cool的功能是,當其餘主機運行FreeS/WAN時隨機加密。這容許FreeS/WAN在全部支持隨機加密的主機間透明傳輸。爲了這個,每臺主機必須使用FreeS/WAN生成一個公鑰,這個公鑰能夠存儲於那臺主機的一個DNS TXT記錄中。當一臺主機要與另外一個主機創建一個隨機加密,但願初始化一個加密鏈接時,將會經過DNS查詢這臺主機的公鑰而且初始化這個鏈接。
一開始,你想使用這個功能時,須要爲每一臺主機生成一個公鑰。你能夠經過運行以下命令來實現它:
ipsec newhostkey --output /tmp/`hostname`.key
如今你須要添加經過那條命令建立的文件的內容到/etc/ipsec.secrets中。
cat /tmp/`hostname`.key >> /etc/ipsec.secrets
而後,你須要生成一個TXT記錄來存放你的DNS區域。你能夠經過運行以下命令來實現它:
ipsec showhostkey --txt @colossus.nnc
如今添加這條記錄到你的空間而後重載它。你會證明DNS已經經過這條命令正確的運行了:
ipsec verify Checking your system to see if IPsec got installed and started correctly Version check and ipsec on-path[OK] Checking for KLIPS support in kernel [OK] Checking for RSA private key (/etc/ipsec.secrets) [OK] Checking that pluto is running [OK] DNS checks. Looking for TXT in forward map: colossus [OK] Does the machine have at least one non-private address [OK]
如今只須要重啓FreeS/WAN-你如今應該能鏈接到任何支持隨機加密的主機上了。可是若是其餘的主機想要鏈接你該怎麼辦?要受權鏈接,你須要在你的DNS反向查找區域爲你的機器建立一個TXT記錄。
你能夠經過運行一個簡單的命令來生成一條記錄:
ipsec showhostkey --txt 192.168.0.64
爲你的子網添加這條記錄到反向查找區域,而後其餘的機器就能夠和你的機器初始化隨機加密了。伴隨着隨機加密的使用,全部主機間的傳輸將被自動加密,同時保護全部的服務。
56:消除二進制suid
難度:中等
應用程序:find
若是你的服務器有比你自身多的shell用戶,你應該在你的系統上按期的審覈setuid和setgid的二進制文件。可能你會驚訝你找到了那麼多文件。這裏有一個搜尋全部setuid或者setgid的文件的命令位設置:
find / -perm +6000 -type f -exec ls -ld {} \; > setuid.txt &
這將會建立一個名爲setuid.txt的文件,包含了全部當前系統上匹配的文件的細節。要移除任何你不用的工具的s位,輸入:
chmod a-s program
57:Mac過濾Host AP
難度:高級
應用程序:iwpriv
你能夠在鏈路層使用iptables或者ebtables執行MAC過濾,那比讓Host AP爲你作這些更安全。這不只僅是阻礙指向你的網絡傳輸,也是預防邪惡的人關聯你的站。這能幫助組織某些人給你的其餘無線客戶端形成麻煩的可能,即便他們沒有更多的網絡通道。
當使用MAC過濾時,不少人會列出一個他們但願容許的無線裝置清單,而後拒絕全部其餘的。使用iwpriv命令完成這個功能:
iwpriv wlan0 addmac 00:30:65:23:17:05 iwpriv wlan0 addmac 00:40:96:aa:99:fd ... iwpriv wlan0 maccmd 1 iwpriv wlan0 maccmd 4
addmac指示添加一個MAC地址到內部表。只要你喜歡你就能夠經過執行更多的addmac命令添加更多的MAC地址到表中。而後你須要告訴Host AP對你已經建好的表作什麼。maccmd 1命令告訴Host AP就像使用一個「容許」清單同樣使用這個表,而且拒絕全部其餘的MAC地址來關聯。最終,maccmd 4命令去除掉全部的關聯客戶端,強制使它們從新關聯。對錶中的客戶端來講是自動發生的,可是其餘的任何企圖關聯的客戶端都是被拒絕的。
有時,你只須要禁止一個或者兩個搗蛋鬼,而不是設置一個詳細的被容許的硬件規則。若是你須要禁止兩三個MAC地址而容許其餘全部的地址,嘗試這個:
iwpriv wlan0 addmac 00:30:65:fa:ca:de iwpriv wlan0 maccmd 2 iwpriv wlan0 kickmac 00:30:65:fa:ca:de
像之前同樣,你能夠不限次數的使用addmac,只要你樂意。Maccmd2命令會將規則設置爲「拒絕」,而若是該MAC恰巧已經關聯,kickmac會馬上將特定的MACboot。這也許比只爲了禁止一個搗蛋鬼而消除全部關聯而後讓他們從新鄰接要好一些。順便說一下,若是你想要消除全部的MAC過濾,嘗試maccmd 0。
若是你錯誤的輸入了一個MAC地址,你能夠像使用addmac同樣使用delmac命令,而後它(能夠預見)就會從表中刪掉這個給出的MAC地址。你有時會須要徹底清除當前的MAC表可是保留它當前的規則,使用這條命令:
iwpriv wlan0 maccmd 3
最後,你能夠經過使用/proc瀏覽正在運行的MAC表:
cat /proc/net/hostap/wlan0/ap_control
iwpriv程序操縱正在運行的Host AP驅動,可是重啓後不保留設置。一旦你對你的MAC過濾表感到滿意,請確保你在一個rc腳本中添加了相關命令在啓動時間運行。
注意,未關聯的客戶端仍然能夠監聽網絡傳輸,因此MAC過濾實際上只能預防一點點竊取。爲了與被動的監聽技巧搏鬥,你須要加密你的數據。