About me

Sunday, 13 November 2016

[Linux] RHCE 7

  
RHCE 7 

這張證照分成兩個部份-「RHCSA 7 (EX200)」和「RHCE 7 (Ex300)」,兩張都要過才能拿這張證照,通過的成績都是210/300,寫這篇文章時都是RHEL (Red-Hat-Certified-Engineer )7版本。

官方主要的exam-objectives如下:

RHCSA:
https://www.redhat.com/en/services/training/ex200-red-hat-certified-system-administrator-rhcsa-exam
RHCE:
https://www.redhat.com/en/services/training/ex300-red-hat-certified-engineer-rhce-exam

整理一下如下,就是如果你真的練習很久,很熟練的話,你會學到底下的東西:

Wednesday, 26 October 2016

[Linux] pidstat - 行程(任務)資源統計

pidstat

pidstat是Linux 裡面一套統計/監控目前被kernel所管理的任務(task)的軟體。使用前必須先掛載proc。主要有底下幾種方式顯示統計數據:

1. 顯示區間和顯示筆數。
2. 根據特定task為單位。
3. 根據IO。
4. 根據PID。
5. CPU使用量。
6. 分頁錯誤(page faults)和記憶體使用量(memory utilization)。
7. 堆疊(stack utilization)。
8. task切換分頁。

(這文章並不是在同一天,同一台主機內寫的,所以顯示數據的hostname, CPU,還有裡面的例子等等資訊可能會不太一樣,並且以下內容都是以版本11.2.0所撰寫)

Sunday, 16 October 2016

[Linux] Uncomplicated Firewall (UFW)

  
  Uncomplicated Firewall

  之前一直在用firewalld,用法請參考之前的文章『firewalld』,但是我的PC安裝的是Ubuntu阿,
  所以還是來研究一下UFW (Uncomplicated Firewall),然後將firewalld取代掉吧。

  在Linux的kernel裡面提供了一個過濾封包的subsystem稱為『netfilter』,主要用來決定外來或內部網路封包是否可以通過的規則,傳統操縱netfilter的介面是『iptables套件』,iptables提供了一套完全彈性和很好去組態的防火牆機制。但是想要精通iptables需要花很多時間,而且對於初學者來說想要使用iptables來設定你的防火牆是一件非常堅巨的任務。所以有許多的前端軟體被建立出來,每個都有不同的用途。

  UFW是Ubuntu上的防火牆(iptables)的前端CLI工具,提供了控制netfilter的framework,但是在其他的distros上面也可以安裝,如果不喜歡用CLI的話,可以使用『Gufw』這套GUI程式。而UFW是在Ubuntu 版本8.04 LTS (Hardy Heron)被引入的,後面的版本都可以直接安裝:


  - Ubuntu 12.04 LTS: 0.31.1-1
  - Ubuntu 14.04 LTS: 0.34~rc-0ubuntu2
  - Ubuntu 15.10: 0.34-2
  - Ubuntu 16.04 LTS: 0.35-0ubuntu2
  - Ubuntu Core: 0.35pre


  

Monday, 8 August 2016

[Linux] Firewalld

  

Firewalld 介紹 firewalld是一套Linux上的防火牆管理工具,最初版本是在2011年1月3號釋出的,穩定版直到2016年4月20號才釋出。主要提供Linux核心的iptables封包過濾(packet filtering)系統 - 『netfilter』的前端(front-end)功能。命名規則主要遵循著Unix的命名規則daemon的名字加一個『d』。這一套工具是由Python所寫的,之前原本想要移植到C++上面,但是這個計畫在2015年時就取消了。 官方上有firewalld的主要功能: - D-Bus API - Timed firewall rules - Rich Language for specific firewall rules - IPv4 and IPv6 NAT support - Firewall zones - IP set support - Simple log of denied packets - Direct interface - Lockdown: Whitelisting of applications that may modify the firewall - Support for iptables, ip6tables, ebtables and ipset firewall backends - Automatic loading of Linux kernel modules - Integration with Puppet

Tuesday, 2 August 2016

About Hugh

我是Hugh,因為發現自己hacker的本質,所以致力於當個專精的Linuxer,目前有相關Linux證照:
1. LPIC - Level2
2. RedHat - RHCE
3. Novell - SCLA


底下是我所有研究的分類連結,主要為『嵌入式系統』和『Linux 相關應用』,小文章我會放在這個blog裡,而架構比較大的文章我會放在gitbook上:


[Linux][Ubuntu][RedHat] bonding and teaming

Link aggregation

網路聚合(Link Aggregation),在電腦網路領域這個名詞代表的是將多重網路介面NIC(Network interfaces)用並列的方式結合來增進網路流量,也可以提高其容錯能力。主要的方式是建立一個LAG(Link Aggregation Group),而這個LAG群組底下會有多個實體的埠(port),每個port都有辦法處理高流量的封包,所以將這些port都結合在一起的話,就可以增加很大的彈性。

Thursday, 28 July 2016

[Linux][Red Hat] Network Teaming


在Linux裡面,可以透過將多個實體網路介面分配到單一個邏輯網路,這樣可以增加網路的流通量和穩定性。舉例來說,可以將兩個網路介面「eth0」和「eth1」組成一個群組「group1」,然後分配一個IP給這個群組,這樣的話,妳就有兩倍的流量了,又或者是你也可以設置成備用的用途,像是如果eth0壞掉了,這個群組會自動的改走「eth1」。

將兩個網路介面設定群組「Link aggregation」,可以藉由「teaming」或是「network bonding」來達成,但是在Red Hat的官方網站上,有比較兩邊的差異,請參考→ here for a full list of the differences.

我參考的這邊文章,主要講解如何用「team」將兩個不同的網路介面給設定成一個群組。

Sunday, 24 July 2016

[Linux] Single Mode

前言

使用Linux系統,有時候我們會忘記密碼,這時候就會無法登入,此時就必須要在開機時做一點手腳,然後由『Single mode』去修改密碼。
不過你也許會想,這樣不就是只要接觸到你電腦的人,都可以藉由這種方式來取得你的root嗎?@@,所以這就是為什麼有些公司的重要機房都會管制,以防止被竊取資訊(然後有些駭客就必須要爬杜拜塔進去機房.....,阿~對不起,我電影看太多了~~=.=)。

Menu entries可以藉由在開機之前修改參數,然後在傳遞這個參數到Kernel裡。要進行這個動作,就必須要用到『menu entry 編輯介面』,底下主要紀錄一下『Ubuntu』和『Redhat』怎麼進入Single Mode的。




Ubuntu 16.04


在Ubuntu裡,開機時按著「shift」就會進入Boot Menu,但是像我自己曾遇到,狂按著「Shift」還是不會進去,所以這時候就必須要強制打開它,請修改檔案「/etc/default/grub」,將這一行如下圖一樣註解掉「GRUB_HIDDEN_TIMEOUT=0」,然後儲存後在更新grub table:
update-grub


這時候重開機後就會看到Boot Menu在倒數了:

接下來就是選擇你要的系統上按「e」進入編輯,然後在如下的地方帶入額外的參數「single」以後,直接按「Ctrl+x」或是「F10」以這份修改後的Boot Table開機:

重開機後你就會看到進入single mode了,接下來如下一樣,使用指令「passwd」修改密碼,然後在用「reboot」或是「init 6」重新開機後,在用你的新密碼開機瞜~。


RetHat

從RHEL7開始,grub版本就變成『grub2』了,所以這邊需要分成兩個部份來介紹:RHEL6.X 的『grub』和 RHEL7.X 的『grub2』:

RHEL 6.X


在這個介面,選擇你要啟動的OS版本,按下『e』鍵修改,像這個例子,只有一個版本,所以不需要選擇,直接按下『e』就好。

按下去以後,就會跳進去下一個表單,像這個例子來說,有三行資訊,第一行是我的root file system的磁碟位置,第二行為kernel image的印象檔檔名和傳入參數,第三行則是initrd印象檔的檔名。我們想要修改的是kernel的傳入參數,所以選擇第二行後再按『e』。


進來之後就會看到比較細節的參數資訊了,這時候請在此行最後面加入一個『single』或者是『1』都可以,這邊記得跟前面的參數之間要隔一個空格,然後按下『Enter』儲存改變後回到上一層。


回到上一層以後,在按下『b』鍵,代表用這個修改過的『Menu entry』來開機,但是記得,這個只是對於這一次的開機,也就是說,你下次開機後,你剛剛修改的值就會消失恢復成預設值了。
按下『b』以後,你就會看到一堆的開機程序,然後就進入root了,這時候你只要簡單的輸入:
passwd
修改你的密碼以後再輸入
reboot
或是
init 6
就可以用你的新密碼開機了


RHEL 7.X



RHEL7.X的grub2會有一點點不太一樣,主要差異是『SELinux』和『systemctl』。開機後一樣,看到boot menu後,移到你要的版本上按下『e』鍵:
然後你就會發現在比較進階的資訊,這些資訊其實都是在檔案『/boot/grub2/grub.cfg』裡面的內容,接下來你要找到讀入kernel檔案的那一行,將『rhgb quiet』取代成『init=/bin/bash』,然後按下『Ctrl+x』用這個組態開機以後就會進入到Single Mode了,如下圖:
一旦你進入Single Mode以後,你的root的分區(Partition)將會是唯獨(read only)的狀態,你可以藉由底下指令來確認:
mount | grep root
這時為了要將這個partition改為可以寫入的狀態,所以我們必須要重新掛載(remount)成Read/Write的模式:
mount -o remount,rw /
然後再次確認:
mount | grep root

掛載成Read/Write 模式以後,我們就可以改root的密碼了,請輸入『passwd』:
passwd


如果你的系統的Selinux是開啟的話,你就必須要在執行底下這個步驟,來重新修改SELinux的內容,否則你的密碼將不會生效:
touch ./autorelabel


接下來只要重開機就好了,你就可以使用你新的密碼開機了:
exec /sbin/init


(2016.08.24 更新)
如果在RHEL7下,用上面的方式不行的話,可以用底下的方法:
Interrupt the boot process in order to gain access to a system.




Ref:

Monday, 4 July 2016

[Linux] finger

簡介:

這是可以查看系統使用者資訊的程式。

用法:

finger  [-lmsp] [user ...] [user@host ...]


Monday, 9 May 2016

raspberry_mp3


這個專案是參考mpolakovic的qemrdux-player專案,然後藉由buildroot,實做一個mp3 player,主要差別是他是跑在qemu上,但是我將他移植到Raspberry Pi2上,藉由這個專案,可以了解以下項目:
  1. 一個客製化的作業系統是怎麼被建立出來的。
  2. 如何客製化的引入套件。
  3. busybox 的設定和修改。
  4. Root File system的建置原理。
  5. 產生與燒入映像檔。
如果這個文章裡面有任何錯誤,還是有需要討論的地方,都歡迎交流,你的指正,都會讓我更進步 ^^。 

老話一句,如果覺的容器太小,請直接看我的gitbook:

或者是直接下載code去build:

其他的相關研究結果請參考:

buildRoot study - 建立自己的作業系統

Buildroot架構解析


Tuesday, 3 May 2016

vmstat

Introduction

這是一套虛擬記憶體的統計軟體,統計關於行程,記憶體,分頁,block IO, traps, 磁碟和cpu的活動等等。
vmstat總共有四種模式,分別是「VM」, 「Disk」, 「Disk Partition」, 「Slab」。

Tuesday, 26 April 2016

Benchmark - mpstat

Introduction

統計跟處理器相關資料軟體,必須先把proc掛載起來才能使用。
這個指令會對輸出所有可取得的處理器的活動,「processor 0」 會是第一個. 所有處理器的平均也會被紀錄起來。不管是單處理器還是多處理器都可以用這個指令,只是單處理器只會印出一個值。

如果後面接數字參數「eg. mpstat 2」代表每2秒更新一次,持續更新資料。如果是0或是沒有參數則是從開機到這個時間點的平均。如果是兩個數字參數「eg. mpstat 2 5」,代表每兩秒更新一次,組共5次。
 

Monday, 28 March 2016

nmap 基本用法

Introduction

  • man page的定義:「Network exploration tool and security / port scanner」,這套工具可以拿來掃描「遠端」或是「子網路」,以取得一些資訊,來作為資訊安全的考量或察核。因為最近很常用,所以這邊文章想要整理一下比較常用的用法,以供我自己或有需要的人查詢。

Friday, 4 March 2016

my vim recipe

  • Introduciton
Vim是一款Linux 上的Open source文字編輯軟體,很多在Linux 上開發的老手,應該都很習慣Vim了吧,
學習vim對於習慣使用windows office系列的新手來說,真的是門檻蠻高的,因為要背好多東西(阿Linux不就是要背一堆東西,所以使用Linux應該可以防止老人癡呆症吧XD)。

Vundle

  • Introduction
vim plugin那麼多,如果可以用一套軟體來管理的話,似乎會更有效率一點,
Vundle可以對vim的plugin:
  • 對.vimrc裏面的plugin持續追蹤和管理
  • 安裝plugins
  • 更新所有的plugins
  • 可搜尋所有可取得的plugin
  • 清除沒在用的plugin
  • 可以用一個簡單的指令完成以上所有動作
  • 安裝完後自動生成help tags
  • 自動管理安裝腳本的路徑

cscope

  • Introduction
最近在使用ctag+tagtree,總覺得哪裡有點美中不足,
因為ctag沒有辦法列出誰有呼叫這個函數的功能,
所以後來就混著使用cscope用。

unite.vim

  • Introduction
unite.vim是一個vim的plugin,他可以顯示模糊搜尋的資料,像是「檔案」,「buffer」, 「最近使用過的檔案」和「register」等等。

簡單來說就是:
  • 可以當成檔案總管來用
  • 可以簡單的搜尋檔案
  • 察看現在buffer裏面所有的資料

Wednesday, 2 March 2016

snipmate+neocomplcache

  • Introduction
之前在使用.net的IDE時,覺得都不用去記很多函數的名字,因為有一個功能叫作自動補齊(Auto-Completion) ,只要打幾個字,就會有一個清單出來讓你挑,又或者打幾個字以後然後按tab就會自己全部補齊,少了很多打錯字的風險。
所以這篇文章我想要來介紹一下兩個vim的plug in,「snipmate」和「neocomplacache」。
(雖說網路上說youcompleteme + ultisnips目前才是王道,這有空在研究吧...)

NerdTree

 NerdTree

  • Introduction
有時候在Vim底下,想要查檔案,或看目前這個資料夾底下還有多少檔案,有幾個選擇:
1. ctrl+z,跳出去看看在跳回來。
2. :ls,直接看。
3. 直接開一個新的終端機分頁切換。

但是現在有一個新的選擇,更方便也更視覺化,那就是使用NerdTree,
不用一直切換來切換去,也不用跳出vim。結果如下圖:


ctags&Taglist

  • Introduction
有用過一些IDE來寫程式的人,應該都很熟悉像source insight (如下圖)這樣子的介面,
左邊有變數, 常數, 宣告和函數的導覽,右邊則是主程式視窗,
然後看到想追的code就可以看誰呼叫他的還是函數原型 ,
其實這些vim+Plugin也可以做的到,但是也許沒有像這些IDE那麼強大,但是有些功能用習慣以後,其實也很方便。

Sunday, 28 February 2016

Debian based package management

  • Introduction
常使用Debian-based系統的人(像是Ubuntu),常常會碰到一些套件的安裝跟管理,
對初學者來說,這地方會有點複雜,因為還會牽扯到很多相依性的問題。

這篇文章要來了解一下Ububut下的的套件管理系統,先說白一點,
「APT」:全名是Advanced Packaging Tool,也就是套件管理系統的後端,
「apt-get」:套件管理系統的前端,會去幫你注意到相依關係的套件,
「dpkg」:檔案安裝系統,不會去管你的檔案相依性,
aptitude」:有GUI的apt-get,
「dselect」:一系列apt-get script的集合包裝,有更多的功能性。

但是這篇文章我們只focus在「整個套件系統的宏觀」,「apt-get」和「dpkg」,至於其他的可能會稍微提到,
有需要的人就請自行搜尋吧。

Monday, 22 February 2016

C Data Type Size

  • Introduction

之前大一時,C的教科書裏面一開始就有許多C的資料型態的介紹,
哪一個佔多少byte,可呈現的數值範圍各是多少,
這東西老師沒有特別講解,也沒有說很重要,
所以一直都以為根本不用去記它,
記它幹嘛? 隨便都可以查的到的東西@@
結果,沒去背它果然吃很多虧,
先不說實用面,就是宣告錯型態會浪費很多記憶體空間,
降低很多效能等等,
至少,很多公司面試都很喜歡考阿!!!

vim - Color Scheme

  • Introduction
大家應該都有類似的經驗,用IDE在開發程式時,背景色,文字顏色,反白跟註解的顏色....
有時候沒設定好的話,會哪個是註解哪個是有效的程式碼常常會看不清楚,
所以一個好的color scheme是很重要的,
如果你覺得本身Distribution的color scheme不合你胃口的話,
就需要套用自己比較習慣的樣式會比較有效率一點。

Sunday, 21 February 2016

Samba 簡單設定 [ubuntu]

Introduction

Samba,以windows系統來說,就是設定一個網路上的芳鄰,可以兩台主機分享並修改檔案資料,
這篇文章不是要介紹整個samba概念,因為鳥哥的Linux私房菜已經介紹的很清楚了。
但是因為鳥哥的書裏面是在CentOS底下所實作,
有些細節部份跟我使用的Ubuntu不太一樣,
所以我這邊特別在把兩台電腦(Server & Client)在Ubuntu底下要怎麼設置直接寫步驟。