發表文章

目前顯示的是 2012的文章

[RHCE] Install And Manage Software

圖片
USE RPM 在過去沒有rpm的時後,使用者想在系統上安裝軟體是相當麻煩的。要先確定作業系統與環境是否符合、設定軟體的參數、然後還要編譯過才能使用。所以Red Hat開發出rpm這個機制,將開發完的軟體先經過編譯,打包成rpm的封裝檔案。 然後利用資料庫去紀錄檔案的相關資訊、相依檔案、系統需求等等。 當使用者得到rpm檔案之後,rpm會利用軟體的資料庫去檢查環境是否符合、相依檔案是否存在等等。如果條件都符合軟體需求,則可使用簡單的指令快速安裝這些軟體。甚至對於將來可能需要的升級、反安裝,也都可以輕鬆完成。 rpm可以用 -q 參數來查尋軟體的相關資訊。 #rpm -q [軟體名稱] 可以查詢該軟體是否安裝,這邊軟體名稱必須輸入完整。例如要查詢qemu-kvm-common-1.5.3-60.el7.x86_64,就必須輸入qemu-kvm-common。或者使用 #rpm -q[參數] [軟體名稱] ,可以查詢其他的資訊。 a:  查詢所有已安裝的軟體名稱,使用qa時後面不用接軟體名稱。 i:  查詢該軟體的詳細資訊。 l:  查詢該軟體安裝後所有的檔案及目錄的完整名稱。 c:  查詢該軟體安裝後所有的設定檔名稱。 d:  查詢該軟體安裝後所有的說明檔名稱。 R:  查詢該軟體安裝時所需要的相依檔案名稱及版本要求。 f:  此參數後面接的為目錄或檔名,可以查詢該目錄或檔案屬於哪個已安裝軟體。 p:  此參數是配合上述參數針對未安裝的rpm檔進行查詢。 --scripts:  查詢軟體安裝或移除時直行的shell scripts。 --changelog:  查詢軟體的更新紀錄檔。 rpm也可以用來安裝以及更新軟體。當我們要安裝一個軟體時,可以輸入 #rpm -ivh [軟體名稱] 。 i:  安裝(install)。 v:  安裝時顯示更多的資訊畫面。 h:  安裝時顯示安裝進度。 當我們要對現有的軟體做更新時,可輸入 #rpm -Uvh [軟體名稱] 或 #rpm -Fvh [軟體名稱] 。 U:  如果軟體並未安裝過,則會直接安裝,而已安裝的軟體則自動更新。 F:  如果軟體並未安裝過,不會直接安裝,只會更新已經安裝的軟體。 USE YUM 當有了rpm之後,確實方便了許多使用者安裝軟體,但似乎還是不夠方

[RHCE] Disk And File System

圖片
DISK 在Linux中,所有的裝置是用掛載的方式連結到系統。 系統必須為裝置建立一個目錄,經由將裝置掛載(Mount)到指定的目錄上,使用者才可以存取裝置。 而這個目錄在Linux中稱為掛載點(Mount Point)。就像貨輪上的貨物,必須停靠在港口後才可以搬運。貨輪就是硬碟,貨物就是資料,港口就是目錄,把貨輪停靠到指定的港口就是掛載。有別於Windows系統中硬體是以代號的方式辨識,Linux則是以目錄。 在IDE介面中,若主機板上有兩個IDE插槽,每個排線可連結到兩個IDE裝置。則Linux會分別為這些裝置建立目錄以便於掛載。 IDE裝置的目錄是固定的,例如只有Secordary的Master有連接裝置,目錄依舊是/dev/hdc。 而在SATA介面上,裝置目錄的命名則是以系統偵測到的順序依序而定。例如若在SATA1、SATA5以及USB上各有一顆硬碟,則系統給予的目錄會分別為。 DISK PARTITION 跟磁碟最有關係的就是磁碟分割,而管理磁碟分割的就是MBR中的分割表(Partition Table)。分割表紀錄分割區起始以及結束磁柱的號碼,檔案則利用分割表寫入指定的磁碟中。分割表有64bytes,每組分割需使用16bytes,所以一個硬碟總共可以有四組分割。分割後的磁區會以硬碟目錄檔名後面加上號碼作為區分。以上面IDE的硬碟為例,IDE1的Master硬碟切了兩個分割區,則分別為/dev/hda1和/dev/hda2。 雖然分割表只能紀錄四組分割區,但並不代表只能有四個分割區。分割區主要分為主要分割(Primary)、延伸分割(Extended)以及邏輯分割(Logical)。而一個分割表中, 主要分割以及延伸分割總合必小於四組。 如果使用者希望有大於四組的分割區,則必須在延伸分割區上建立邏輯分割區。 主要分割區: 主要分割區可以格式化,一個主要分割區可以存在一個作業系統,以及任意數目的檔案資料。 延伸分割區: 延伸分割區不可格式化,所以也無法建立任何資料,延伸分割區主要是用以建立邏輯分割區。一顆硬碟中最多只能有一個延伸分割區。 邏輯分割區: 邏輯分割區可格式化,可存在可以邏輯分割區開機的作業系統,以及任意數目的檔案資料。邏輯分割區必須建立在延伸分割區上。IDE硬碟可以建立59個(5~63號)邏輯分割,SATA

[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為使用者白名單,/etc

[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是將我們目前執行的輸出導入到下一個指令的輸入,利用|區隔兩段指令。例如要將/etc/passwd中包含root字串的行列出。則可以輸入 #cat /etc/passwd | grep 'ro

[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後方

[RHCE] vsFTPd Service

VSFTPD 本文是以RHCSA考試中所用的安裝vsftpd為主,內容為考試中所需要用到的指令。vsftpd是ftp的其中一種,其相關vsftp的詳細設定,可參閱鳥哥的文章。 >>簡易 vsftpd 伺服器設定<< 使用 #yum install vsftpd-* 下載並安裝vsftpd服務。 或者也可使用 #wget 下載vsftpd,在依照檔案利用 #rpm 或其他方法安裝。 安裝完成後輸入 #service vsftpd start 啟動服務。 #chkconfig vsftpd on 設定開機啟動服務。 可輸入 #chkconfig --list vsftpd 檢查服務是否有啟動在正確的runlevel。 #restorecon -R /var/ftp/pub 開啟SELinux權限,/var/ftp/pub為匿名登入預設目錄。 可關閉防火牆,輸入 #chkconfig iptables off 以及 #service iptables stop 。 或者開啟iptables中ftp port,考試時建議直接關閉防火牆即可。 或者使用/etc/hosts.deny或/etc/hosts.allow設定存取IP或網域(RHCE考試題目)。 使用瀏覽器測試vsftpd是否正常。 vsftpd的設定檔在/etc/vsftpd/vsftpd.conf中。 其中比較重要的如anonymous_enable為是否允許匿名使用者登入,預設路徑為/var/ftp/pub。local_enable為是否允許一般使用者登入,預設路徑為使用者家目錄。write_enable為是否允許上傳檔案,預設上傳的檔案無法讓其他使用者下載。

[RHCE] SWAP

圖片
SWAP swap可稱為記憶體交換區,類似Windows系統的虛擬記憶體。主要功能是當實體記憶體不足時,提供系統額外的緩衝空間。swap對於目前的個人電腦而言,效用並不大,因為現在的實體記憶體都相當大了。但對於伺服器而言,swap還是有其重要性存在,畢竟伺服器的負載量遠大於個人電腦。 swap在2.4.10核心之後取消單一容量2GB的限制,但是仍有數量32個的限制。 一般建議swap配置約等於實體記憶體的2~4倍,可以依照使用習慣去配置swap容量。 swap的建置主要經由下列幾個步驟。 使用 #fdisk 切割出swap空間, 並將此分割區系統ID設定為82,然後重啟系統 。 使用 #mkswap [swap分割區] 格式化swap空間。 使用 #swapon [swap分割區] 啟用swap空間,類似一般檔案系統的掛載。 要終止該swap空間則輸入 #swapoff [swap分割區 ]。 編輯/etc/fstab使swap空間可於開機時自動掛載。 建立完成並啟用之後,可使用 #vmstat 或者 #top 觀察swap空間是否有增加。或者使用 #swapon -s 觀察swap空間是否有正確啟用。如下圖,可以看到/dev/sda5這個swap空間已經啟用了。

[RHCE] File Compression

GZIP & BZIP2 Linux系統中最常使用的壓縮指令為gzip以及bzip2,但是這兩種指令只能針對單一檔案壓縮。雖然gzip以及bzip2也可以對目錄壓縮,不過是將目錄中的檔案壓縮成個別的壓縮檔。 gzip利用指令 #gzip [檔名] 進行壓縮, #gzip -d [檔名 ] 進行解壓縮。gzip的壓縮檔副檔名是*.gz。 bzip2利用指令 #bzip2 -z [檔名] 進行壓縮 #bzip2 -d [檔名] 進行解壓縮。bzip2的壓縮檔副檔名是*.bz2。 TAR 對於多檔時,例如要備分系統,需要先將這些檔案進行打包的動作,之後才可加以壓縮。 tar可以將多個檔案打包成一個檔案,再經由gzip或者bzip2的方式製作成壓縮檔。 tar的應用除了打包壓縮,備份檔案,同時也可以配合rsnyc進行遠端備份的作業。 tar的指令為 #tar [參數] [檔案或目錄] 。tar是利用參數控制壓縮或解壓縮, -c 為壓縮, -x 為解壓縮。tar可以同時使用gzip或bzip2來壓縮打包好的檔案, -z 為gzip, -j 為bzip2。 -v 是觀察模式,會顯示目前壓縮的進度。 -f 為指定壓縮檔檔名,後面必須要接上指定的壓縮檔檔名。 -C 為指定解壓縮位置,後面必須接上解壓縮路徑,若不加 -C 則解壓縮到當前目錄。 例如要打包/etc下所有檔案至/tmp,並使用gzip壓縮。則輸入指令 #tar -zcvf /tmp/etc.tar.gz /et c。若要改成bzip2壓縮模式,則輸入 #tar -jcvf /tmp/etc.tar.gz /etc 。如此便會再/tmp之下依照選擇的壓縮方式產生壓縮檔。 若要將檔案解壓縮,例如將/tmp/etc.tar.gz解壓縮回/etc。則輸入 #tar -zxv /tmp/ect.tar.gz 。若當前目錄不是在根目錄,則必須在後面指定路徑 #tar -zxv /tmp/etc.tar.gz -C / 。如此便會在根目錄下解壓縮檔案。

[RHCE] Remote Connect

圖片
SSH SSH(Secure Shell Protocol)是一種加密的傳輸協定,利用非對稱金鑰系統。 公鑰由伺服器端產生,並讓用戶端下載;用戶端利用公鑰產生私鑰並傳給伺服器端。之後伺服器與用戶端之間就以公鑰加密,私鑰解密的方式通訊。所以正常的情況下,一台主機中,會有兩把鑰匙,「遠端主機公鑰」和「本地主機私鑰」。公鑰存放的目錄在~/.ssh/know_hosts,而私鑰存放在/etc/ssh/ssh_host_key*。 使用者可以使用 #ssh [參數] [使用者名稱]@[遠端主機位址] 連結登入遠端主機。 -X 參數可以讓ssh使用x-window通道,使用戶端可以再本機上顯示遠端主機的圖形介面。也可以使用 #ssh -f [使用者名稱]@[伺服器位址] [指令] 直接對遠端主機下達指令,無須登入。若不加 -f 參數,連線會卡在登入,但是指令仍會執行,必須等待遠端主機指令跑完。加上 -f 則會下完指令後馬上登出遠端主機,繼續在本地主機工作。 ssh的設定檔,用戶端的存放於/etc/ssh/ssh_config,伺服器端的存放於/etc/ssh/sshd_config。 ssh伺服器端有幾個比較重要的設定,PermitRootLogin是設定可否使用root身分登入。AllowUser是設定允許登入的使用者,PasswordAuthentication是設定是否驗證。一般來說為了安全起見,會關閉允許使用root身分登入。 ssh同時也可以用於傳送檔案, #scp 可以用以上傳或下載檔案。 #scp [參數] [檔案或目錄] [使用者名稱]@[遠端主機位址]:[目的目錄] 用以上傳檔案。 #scp [參數] [使用者名稱]@[遠端主機位址]:[檔案或目錄] [目的目錄] 用以下載檔案。 參數 -p 可以保留原本的權限, -r 可以複製目錄以下所有檔案, -l 可以限制傳輸的速度,單位為Kbits/s。而 #rsync 可以將檔案同步至遠端主機中,用法與 #cp 類似。指令為 #rsync [參數] [使用者名稱]@[遠端主機位址]:[檔案或目錄] [目的目錄] 。常用參數有, -a 為保存來源所有權限屬性設定, -v 為觀察模式, -r 可以同步目錄以下所有檔案。 為了省去登入時輸入密碼的步驟,使得ssh可以利用在自動排程上,可

[RHCE] Bash

圖片
BASH 一台電腦可以簡單的分為三個部分,硬體、系統核心、以及使用者介面。Shell屬於使用者介面的一種,用來幫助使用者下達命令給核心,核心再去控制硬體。Bash是Linux預設的Shell,全名為Bourne Again Shell。Linux中不只Bash一種Shell,可以在/etc/shells中查詢目前可使用的Shell;Bash主要的優點有以下六點: 歷史紀錄 利用 #history 可以列出之前輸入過的的命令,上限筆數預設是1000筆。列表中編號數字越大的表示時間越接近當前。 可以利用 #![編號] 重新入數列表中特定編號的命令, #!! 可以重新輸入上一筆命令。利用 #![關鍵字] 可以重新輸入以關鍵字開頭且時間最接近的命令。或者在使用者家目錄下的.bash_history檔中,可以看到使用者最近一次登出前的命令歷史紀錄。 紀錄的上限筆數可以輸入 #echo $HISTSIZE 查詢。 可在/etc/profile中變更上限設定。 命令與檔案補全 在輸入Shell的時候,有些太過複雜難記的的命令或檔案,可以擅用Tab鍵幫忙補全。例如當我們想輸入 #ifconfig 這個命令,但是可能只記得if這兩個字。這時按下Tab,系統不會有反應,但是再按一次系統就會列出所有if開頭的命令。如果是輸入ifco再按下Tab,因為可能的命令只剩下一個了,系統就會自動補齊ifconfig。除了命令之外Tab鍵也可以補齊檔案名稱。 別名 別名的概念有點像是快捷鍵,使用簡單易記的自訂命令來取代過長的命令。例如 #route -n 這個指令使用者覺得太長,想用 #rou 這個別名取代原本的命令。這時候就可以輸入 #alias rou='route -n' ,如此之後輸入 #rou 就可以等同 #route -n 。 另外也可以使用 #alias [命令] 去查詢這個別名原本的命令。 而輸入 #alias 可以查詢目前所使用的別名有哪些。 工作控制 命令輸入之後會在系統中產生一個工作,Bash可以對這些工作進行控制。Ctrl+C可以終止目前正在進行的工作,Ctrl+Z可以暫停目前正在進行的工作,將之移至背景。前景與背景的差別在於,前景可以讓使用者進行操作,而背景則無法。使用 #jobs 可以

[RHCE] LVM

圖片
LVM LVM(Logical Volume Management,邏輯捲軸管理)是一種可以更彈性管理磁碟的方法。 藉由將實體儲存裝置的分割區整合提供一個更大的儲存空間,讓管理員依照需求去分配資源。 並且若日後需要增加或縮減檔案系統空間,都可以在不重新格式化整個檔案系統的情況下完成。 LVM主要分成四個項目,而這四個項目也代表著建制LVM的階段作業。 PV(Physical Volume,實體捲軸) LVM中最底層的空間,為實體切割區調整系統識別碼後格式化的區域。因為PV無法跨實體磁碟,所以最大空間即為實體磁碟空間。 PE(Physical Extend,實體延伸區塊) PE是LVM中最小的儲存單位,類似實體磁碟的block,建立VG時可以決定PE的大小,預設是4MB。 PE可以決定VG的大小,在LVM1中,PE的個數限制在65534個,每個PE的大小為8k-512MB。而在LVM2中,PE移除了個數的限制,大小則是延伸到16GB,使得管理員可以建立更大的VG。 VG(Volume Group,捲軸群組) VG為PV所集合而成的空間,可跨越實體磁碟。VG的大小主要因PE而決定,在LVM1中,VG最大的限制到2TB。在LVM2中,VG在32bits的系統中可到達16TB,在64bits的系統更可到達8EB的空間。 LV(Logical Volume,邏輯捲軸) VG最終會切割出各個LV,在格式化LV之後就可成為類似分割區的空間儲存資料。LV的大小也是以PE為單位。 整個LVM的建立流程就是,一個實體的磁碟經由建立PV,再由建立VG決定PE大小而堆疊組合出VG。VG在經過管理者分配切割為LV,格式化LV之後便成為可用的檔案系統,如下圖所示: LVM CREATE 首先先來介紹LVM建立的方法。 使用 #fdisk 建立一個系統識別碼為8e的分割區( #fdisk 切割出分割區後按 t 可變更識別碼)。 #pvcreate /dev/[分割區代號] 建立PV。 使用 #vgcreate -s [PE大小] [VG名稱] [PV名稱 ] 建立VG, -s 為設定PE大小,預設為4MB。如有多個PV,例如vda5、vda6、vda7,則輸入 #vgcreate -s [VG名稱] /dev/vda{5,6,7} 。 使用 #lvcr