發表文章

[RHCE] Process Manage

圖片
PROCESS 當使用者執行一個程式或一個命令時,就會產生一個程序。PID是程序的ID,PPID就是該程序的父程序ID,UID是執行這個程序的使用者ID。Stat是呈續執行的狀態,分別為休眠、執行、刪除、以及殭屍程序。 所謂的殭屍(Zombie)程序是指父程序呼叫的子程序,在父程序結束時因bug而未結束。這個子程序就會獨自運作到程序結束,這種程序就稱為殭屍程序。程序之間使用signal溝通,代號從1~64號,其中比較重要的有1為重啟,9為強制終止,15為停止。 使用 #ps 以及 #top 指令可以查詢目前系統上的程序。 #ps 是靜態的查詢,常用的參數如下: a:  目前帳號權限可見程序。 u: 查看使用者以及更多的資訊。 x: 系統所有程序。 #top 為動態查詢,使用者可以設定更新秒數自動即時更新。 #top -d [秒數] 可以設定更新的間隔時間。 先前提到程序之間是使用signal溝通的,signal有1~64號動作。可以使用 #kill -l 查詢所有動作編號,以及 #kill [signal編號] [PID] 對程序下命令。 PRIORITY 在 #top 指令中可以看到每個程序的PR值,也就是優先權,預設都是20。另外還有NI值,NI值為-20~19之間,但一般的使用者只能使用0~19。 優先權的算法為PR值加上NI值,所得的值越低優先權越高。 使用者調整程序優先權時,是針對NI值進行設定,設定時會將PR值回復成20。 #nice -n [NI值] [指令] 可針對將要執行的程序設定優先權。 #renice -n [NI值] [PID] 可針對已執行的程序設定優先權。 SCHEDULING 排程的功能為在指定的時間執行指定的程序。主要有兩種排程工具,atd以及crond。 atd是針對一次性的程序進行排程,而crond是針對週期性的程序進行排程。 atd的指令為 #at ,輸入 #at [時間] 後,在輸入所要執行的工作,再按下Ctrl + D結束設定。atd在設定時間上可使用 now +1 min 或 now +3 days 或 4pm +1 week 等方式。 #atg 可查詢目前的排程, #atrm [編號] 可刪除排程。/etc/at.allow為使用者白名單,...

[RHCE] SELinux

圖片
SELINUX SELinux(Security Enhanced Linux)用以針對Linux系統的安全性進行強化。 簡單的說,SELinux是針對程序對於檔案系統的存取,進行以政策(Policy)為基準的控管。當程序通過政策之後,會與檔案系統進行安全性本文比對,比對相符就可以存取檔案系統。 SELinux必須在root權限下才可進行設定。使用 #getenforce 可以查詢目前SELinux的狀態。 enforcing: 強制模式,表示SELinux正常運作中。 permissive: 警告模式,SELinux也是正常運作,但是對於政策只會給予警告,用以debug用。 disabled: 關閉SELinux。 可以於/etc/sysconfig/selinux中變更SELinux狀態。或者使用 #setenforce 0 (or 1) 變更,0為警告模式,1為強制模式。 SELinux的政策中訂立了許多規則,規則設定了程序對於檔案系統各種動作的權限。可以使用 #getsebool -a 來查詢所有目前運行的規則。可以在後面加上規則名稱或者grep去查詢特定的規則。之後可以使用 #setsebool -P [規則] on (or off) 開啟或關閉規則。 TROUBLESHOOT SELinux的設定錯誤會導致程序無法正常的進行。例如你可能不小心關閉了httpd,使得你的網站無法正常的被瀏覽。這時候就必須進行除錯。 除錯可以使用setroubleshoot或auditd這兩個服務。安裝後記得使用 #chkconfig 設定為開機啟動才可完整紀錄所有錯誤。 安裝setroubleshoot可以用以紀錄SELinux的錯誤訊息。使用 #grep setroubleshoot /var/log/message 可以查詢目前SELinux的錯誤訊息。每筆錯誤紀錄會有一個編號,使用 #sealert -l [編號] 可以查詢該筆錯誤詳細資料。 或者安裝auditd這個服務,同樣也可以紀錄SELinux的錯誤訊息。使用 #sealert -a /var/bg/audit/audit.log 可以查詢所有錯誤訊息的詳細資料。

[RHCE] Share File

圖片
SHARE 在早期的網路世界中,分享檔案的方法大都是經由FTP進行傳輸的工作。但是對於檔案的分享而言,FTP卻存在著一些不便的地方。當使用者需要變更遠端的一份文件,必須先用FTP下載,變更之後再上傳。這樣的傳輸就比較像單方面的傳輸,而不是雙向的分享。 所以,有鑑於此Unix就推出NFS(Network File System)。而Windows系統也推出了CIFS(Common Internet File System)。兩種檔案系統可以將遠端的檔案系統掛載到用戶端的主機,使用者就像在本地主機存取檔案一樣。不必在經過反覆的上傳與下載,這樣的動作就是我們現在常說的分享。 然而NFS只能用於Unix主機,CIFS只能用於Windows主機。 所以後來就發展出SAMBA,使得Unix系統與Windows系統之間可以相互分享檔案。 NFS NFS Server需安裝套件nfs-file-server,安裝後可於/etc/exports設定分享的檔案系統。例如,寫入/var/ftp/pub 192.168.0.0/24 (ro, sync)。表示分享/var/ftp/pub給192.168.0.0/24網段,(ro, sync)為參數。或者/exports/home *.example.com (rw, sync)。表示分享/exports/home給example.com網域,參數為(rw, sync)。設定完成之後,輸入 #exports -r 可以使系統載入新設定。 #exprots -v 可以列出目前所有的分享狀況,便於管理者檢查設定是否無誤。 掛載NFS常見的參數有以下: rw, ro: 目錄分享的權限是可讀寫(rw)或唯讀(ro),然而仍然需要遵守檔案系統的權限與身分。 sync, async: sync代表資料會同時寫入記憶體與硬碟,async代表資料會先暫存於記憶體。 root_squash: root_squash會將用戶端root的身份會壓縮成nfsnobody(預設)。 no_root_squash: 開放用戶端以root身分進行操作。 all_squash: 用戶端身分一率壓縮成nfsnobody。 anonuid, anongid: 用戶端使用nfsnobody登入時的UID與GID。 用戶端可以輸入 #...

[RHCE] Regular Expression

圖片
REGULAR EXPRESSIONS 正規話表示法的用途在於當使用者需要進行字串的比對時,可以提供多種的比對方式。對於系統管理員而言,都有很大的機會使用到正規化表示法。例如你要在很長的log檔中找到特定的字串,或者在系統中找到某個字開頭的檔名等等。而且正規化表示法可以用於多種伺服器軟體上面,使得管理員更方便管理不同的系統。 正規化表示法主要是利用特殊字符,代替在搜尋可以表示多種字元或者字串。常用的字符如下: *: 表示搜尋零到任意個字元,例如ab*,則a, ab, abb, abbb等都會符合搜尋的結果。 .:  表示搜尋單一任意字元,例如ab.,則aba, abb, abc, abd等都會符合搜尋的結果。 []:  表示搜尋單一[]中任意字元,例如a[bc]b,則abb, acb都會符合搜尋結果。 [^]:  表示搜尋單一[]以外任意字元,例如a[^bc]b,則adb, aeb, afb等都會符合搜尋結果。 ^:  表示搜尋以指定字串為開頭的字串,例如^abc,則abcd, abcde, abcdef都會符合搜尋結果。 $:  表示搜尋以指定字串為結尾的字串,例如abc$,則dabc, deabc, defabc都會符合搜尋結果。 .*:   表示搜尋任意個字元,與*不同在於.*至少會含有一個,所以ab.*不會搜尋到a。 \:  跳脫字符,若以正規化的保留符號作條件搜尋時,在符號前加上\,將保留符號視為一般字串。 GREP Grep的用途在於取得指定關鍵字的那行文字,可用於檔案內容,或者命令輸出的結果中。而使用Grep時可以配合正規化表示法,使得搜尋更加的靈活。Grep指令為 #grep [參數] [關鍵字] [檔案] 。 -A:  後面接數字,例如A3,表示列出搜尋結果的那行之外,後續三行也列出來。 -B:  後面接數字,例如B3,表示列出搜尋結果的那行之外,前面三行也列出來。 -n:  搜尋結果於每行開頭加上行數。 -v:  反向搜尋,列出不包含關鍵字的結果。 -i:  關鍵字不分大小寫。 PIPELINE Pipeline是將我們目前執行的輸出導入到下一個指令的輸入,利用|區隔兩段指令。例如要將/et...

[RHCE] Link File

圖片
INDEXED FILE SYSTEM 在Linux系統中,檔案系統是使用索引式檔案系統(Indexed File System)。 也就是常看到的Ext2、Ext3、Ext4,所謂的Linux Extended File System。 在這種檔案系統中,檔案的存取是利用Inode去尋找Block,再把Block裡面的資料讀取出來。 Linux Extended File System在格式化的時後會將檔案系統分為多個Block Group。 每個Block Group中會有自己的Super Block、File Table、Inode Table、Block map等。 使用者進行所謂的存取檔案的動作時,其實就是經由這些資訊找到檔案存放的Block。File Table用來紀錄檔名以及對應的Inode Table編號等資訊。Inode Table會紀錄對應的Block map編號。 Block map會記錄資料存在於Date Block的位置。 藉由這樣一層一層的連結,使用者就可以正確的存取Block中的資料。 而最重要的是Super Block,用來紀錄著該檔案系統中許多重要資訊。 包括Inode和Block的總量、用量、大小、以及其他系統資訊。 如果Super Block損毀,整個檔案系統中的資料就可能會報廢。 每個檔案系統只需要一個Super Block,但是每個Block Group都有個自的Super Block。 這麼多個Super Block,其實只有第一個是負責紀錄檔案系統的系統資訊。 而之後的Block Group如果還有Super Block,則是負責備份第一個Super Block。 SOFT LINK 連結檔(Link)是Linux中的一種檔案,類似於Windows系統中的捷徑,但也不全然相同。連結檔分成兩種,軟連結(Soft Link)跟硬連結(Hard Link)。軟連結又可稱為符號連結(Symbolic Link)是連結到原檔案的連結中,而非直接存取檔案內容。 當使用者建立軟連結的時候,這個連結檔一樣會有自己的Inode、Block等等。唯一的不同是,連結檔的Date Block會指向原檔的檔名,再利用原檔的連結去存取原檔的資料。使用 #ln -s [原始檔名] [軟連結檔名] 可以建立軟連結。例如下圖建...

[RHCE] Kickstart

圖片
KICKSTART kickstart是Red Hat Linux專用的工具,kickstart可以建立ks.cfg設定檔。藉由讀取設定檔的內容,讓Red Hat Linux可以自動安裝至裝置上。管理員可以將ks.cfg、安裝所需要用到的系統檔、以及其他的工具軟體。放置在FTP、HTTP、USB、或者CD/DVD上,讓裝置可以由ks.cfg的設定來進行安裝。所以,利用kickstart加上伺服器技術,就可以建置大量部署的功能。 kickstart可以使用圖形介面進行設定,畫面如下。管理員只需要依照自己的需求一步一步的往下設定即可完成ks.cfg的設定檔。 kickstart中比較重要的幾項設定,其中一個就是檔案的來源。 管理員可以選擇CD/DVD、NFS、FTP、HTTP、或者硬碟為檔案來源。 如果是要利用NFS、FTP、HTTP網路安裝的方式,來源檔案的位址以及目錄都要設定正確。 另外管理員可以設定在安裝前後是否要執行一些特殊的script,例如設定網路等等。可以利用Pre-Installation Script以及Post-Installation Script。 Pre-Installation Script可以編輯在安裝之前要執行的Script。Post-Installation Script則是編輯在安裝後要執行的Script。 當以上設定都完成之後,便可以儲存ks.cfg檔。ks.cfg是個可編輯的文字檔,所以管理員也可以在儲存後另行修改其中內容。關於kickstart中其他相關的參數語法,可參考Red Hat官方網站的說明。 >>Red Hat 官方網站 Kickstart Options<< 另外,關於kickstart比較完整的範例,包括從伺服器到ks.cfg檔的建置,可以參考以下文章。 >>Enterprise Linux 實戰講座 kickstart 自動安裝 Linux by IBM Alex Lin (林彥明)<<

[RHCE] HTTPd Service

圖片
HTTPD 本文所指的httpd就是Apache以HTTPd伺服器所發展出來的自由軟體。RHCSA考試中會考httpd的安裝,RHCE考試中會考虛擬主機的設定。本文內容以考試內容筆記為主,其他相關細部設定可參考鳥哥的文章。 >>簡易 WWW 伺服器設定<< 使用 #yum install httpd-* 下載並安裝httpd服務。 或者也可使用 #wget 下載httpd,在依照檔案利用 #rpm 或其他方法安裝。 安裝完成後輸入 #service httpd start 啟動服務。 #chkconfig httpd o n 設定開機啟動服務。 可輸入 #chkconfig --list httpd 檢查服務是否有啟動在正確的runlevel。 #restorecon -R /var/www/html 開啟SELinux權限,/var/ftp/pub為預設目錄。 可關閉防火牆,輸入 #chkconfig iptables off 以及 #service iptables stop 。 或者開啟iptables中http port,考試時建議直接關閉防火牆即可。 使用瀏覽器測試httpd是否正常。 httpd的設定檔在/etc/httpd/conf/httpd.conf中。 VIRTUAL HOST Virtual Host可以使一個伺服器主機,存在多個網站。使用者輸入不同的網址,伺服器會導向到不同的網站,但實際上都是在同一台主機上。Virtual Host的好處是可以讓你在同一台主機上擁有多個網站,並且方便管理。例如你可以將主網站,討論區,相簿分別用不同的網址定義,方便使用者記憶。或者也可以利用Virtual Host完成伺服器備援的動作。 Virtual Host的設定在/etc/httpd/conf/httpd.conf檔案的最後,預設是關閉的。 開啟Virtual Host的功能只需將NameVirtualHost的注解拿掉即可。NameVirtualHost後方是要填入要使用Virtual Host的IP或者埠號。接著<VirtualHost>....</VirtualHost>中是對欲建立的Virtual Host進行設定。同樣的VirtualHost後方...