Linux品牌 RedHat Linux SuSE Linux Mandrake Linux Caldera Linux Turbolinux Debian GNU/Linux Gentoo Linux Linpus Linux
Linux Kernel現況與認證 Kerenl 版本 http://www.kernel.org Linux認證 發展版本-2.5.70 穩定版本-2.4.20 Linux認證 RedHat RHCE http://www.redhat.com/ LPI Level one/two/three http://www.lpi.org
開機管理選項 開機管理程式 GRUB LILO 不安裝開機程式 開機程式安裝在哪裡? MBR /boot 的第一個磁區 設定核心參數
Linux 開機流程 BIOS 嘗試在開機磁碟機的第 0 磁區、第 0 磁柱載入可供開機的磁區開機 開機載入程式 (boot loader ,如 LILO或Grub)的程式碼 找出 kernel 所在位置,接著載入並執行它以啟動開機程序 一旦 kernel 載入完畢,一些基本設備也完成初始化 (initialization) 嘗試從某個設備載入以及掛上 (mount) root filesystem 一旦 root filesystem 被載入並掛上,會看到一行訊息像: VFS: Mounted root (ext3 filesystem) readonly
Linux 開機流程 此時系統會在 root filesystem 上找到 init 程式 ( 在 /bin or /sbin) 並執行 init 讀取它的組態設定檔 (configuration file) /etc/inittab ,找出檔中標明 sysinit 的一行,並執行被指名的script。這個 sysinit script 通常類似 /etc/rc 或 /etc/init.d/boot 這兩個檔。這個 script 是一組建立基本系統服務的 shell 指令,諸如: 對所有磁碟執行 fsck 載入必備的核心模組 (modules) 啟動 swapping 進行網路初始化 將指定在 fstab 內的磁碟掛上
Linux 開機流程 當 sysinit script 結束後,控制權回到 init 上,接著進入預設的runlevel 預設的 runlevel 以 initdefault 這個關鍵字被指定在 /etc/inittab 內
runlevel 說明 0 – 關機 halt (不要在 initdefault 設定這個) 1 – 單人模式 Single user mode 2 – 多人模式未含網路功能 Multiuser, without NFS (與 runlevel 3 相同, 用在沒有網路環境下) 3 – 完整多人使用者模式 Full multiuser mode 4 – 未使用 unused 5 – xwindow 模式 X11 6 – 重開機 reboot (不要在 initdefault 設定這個)
man 男人? 線上查詢 man page # man ls # man 1 ls # info ls /etc/man.conf whatis filename
vi 文書處理器 vi 管理員至少一定要會一種編輯器 vi 的使用: 一般模式:移動、複製、刪除、貼上 編輯模式:插入與取代文件 指令列模式:搜尋、自動取代、檔案存取等
Linux 檔案 # touch test # ls –al test
Linux 檔案種類 正規檔案( regular file ) 目錄 (directory): 連結檔 (link): 第一個屬性為 [ - ] 純文字檔(ascii) 二進位檔(binary) 目錄 (directory): 第一個屬性為 [ d ] 連結檔 (link): 第一個屬性為 [ l ] 設備檔 (device): 區塊 (block) 設備檔,第一個屬性為 [ b ]; 字元 (character) 設備檔,第一個屬性為 [ c ]。
Linux 檔案屬性
更改 Linux 檔案屬性指令 r=4,w=2,x=1 # chmod 770 test u g o a +(加入) -(除去) =(設定) owner = rwx = 4+2+1 = 7 group = rwx = 4+2+1 = 7 others = --- = 0+0+0 = 0 r=4,w=2,x=1 # chmod 770 test u g o a +(加入) -(除去) =(設定) r w x 檔案或目錄 chmod
更改 Linux 檔案擁有者指令 語法: chown [ -R ] 帳號名稱 檔案或目錄 chown [ -R ] 帳號名稱:群組名稱 檔案或目錄 範例: [root@test root]# chown games test [root@test root]# ls -l test drw-r--r-- 1 games root 0 Jun 20 14:36 test [root@test root]# chown –R root:root tmp
更改 Linux 檔案所屬群組 語法: chgrp 群組名稱檔案或目錄 範例: [root@test root]# chgrp users test [root@test root]# ls -l drw-r--r-- 1 root users 1 Jun 20 14:36 test
Linux 目錄結構 /bin:常用系統程式目錄 /boot:開機設定檔,也是預設擺放核心 vmlinuz 的地方 /dev:擺放所有系統裝置檔案的目錄 /etc:幾乎系統的所有設定檔案均在此,尤其 passwd, shadow /etc/rc.d/init.d:系統開機的時候載入服務的 scripts 的擺放地點 /home:系統使用者的家目錄
Linux 目錄結構 /lib:Linux 執行或編譯程式函式庫目錄 /mnt:軟碟與光碟接預設掛載點的地方 /proc:系統核心與執行程序的一些資訊 /root:系統管理員的家目錄 /usr/bin, /bin:一般執行檔擺放的地方 /usr/sbin, /sbin:系統管理員常用指令集 /var:擺放系統記錄檔案的地方 /lost+fount:擺放系統不正常產生錯誤時遺失的片段
Linux 管理工具介紹 檔案與目錄管理 磁碟與硬體管理 程序與資源管理 RPM的管理 帳號與身份管理
檔案與目錄管理 目錄與路徑 相對路徑與絕對路徑 . 代表此層目錄 .. 代表上層目錄 ~ 代表自己的家目錄 ~user 代表到 user 這個人的家目錄
檔案與目錄管理 cd pwd mkdir rmdir 變換目錄 刪除一個裡面是空的空目錄 cd /root 環境變數PATH 顯示目前的目錄 建立一個新目錄 mkdir –p /root/abc/123 rmdir 刪除一個裡面是空的空目錄 rmdir –p abc/123 環境變數PATH echo $PATH PATH=”$PATH”:/root
檔案與目錄管理 ls [-ailS] 參數說明: -a :全部的檔案都列出(連同隱藏檔) -i :印出 inode 的值 -l :長的列出,連同檔案大小的資料等等 -S :以檔案大小排序
檔案與目錄管理 cp [-drsu] [來源檔] [目的檔] 參數說明: -d:在進行 copy 的時候,如果是 copy 到 link 檔案,若不加任何參數,則預設情況中會將 link 到的原始檔案copy 到目的地,若加 -d 時,則 link 檔案可原封不動的將 link 這個捷徑其拷貝到目的地 -r:可以進行目錄的 copy -s:做成連結檔,而不 copy 之意!與 ln 指令相同功能! -u, --update:如果來源檔比較新,或者是沒有目的檔,那麼才會進行 copy 的動作
檔案與目錄管理 rm [-fir] [檔名] 參數說明: -i :提供使用者確認(這是預設值) -r :遞迴刪除 -f :強力刪除
檔案與目錄管理 mv [-u] [來源檔] [目的檔] 參數說明: -u :同樣的,為 update 的簡寫,當來源檔比目的檔還新的時後才會動作
觀看檔案內容 cat 由第一行開始顯示檔案內容 tac 從最後一行開始顯示,可以看出 tac 是 cat 的倒著寫 more 一頁一頁的顯示檔案內容 less 與 more 類似,可以往前翻頁 head 只看頭幾行 tail 只看尾巴幾行 nl 顯示的時候,順道輸出 行號 od 以二進位的方式讀取檔案內容
連結檔的介紹 連結檔的介紹: 什麼是 inode ln Block 是記錄『檔案內容資料』的地區,而inode 則是記錄『該檔案的屬性、及該檔案放置在哪一個 Block 之內』的資訊 ln hard link 不能跨 filesystem/不能 link 目錄 symbolic link ln [-s] [來源檔] [目的檔]
檔案與目錄權限 chown 改變檔案的擁有人 chgrp 改變檔案的所屬群組 chmod 改變檔案的可寫、可讀、可執行等屬性 umask 改變預設的建立檔案或目錄時的屬性 chattr 改變檔案的特殊屬性 lsattr 顯示檔案的特殊屬性
搜尋檔案或目錄 which 查看可執行檔案的位置 # which ls whereis 查看檔案的位置 # whereis [–b/-m] ls locate 配合資料庫查看檔案位置 # locate ls #updatedb find 尋找檔案 # find / -name “ls”
磁碟與硬體管理 查看硬碟或目錄的容量:df, du 切割與格式化硬碟:fdisk, mke2fs, e2label, mknod 檢查硬碟壞軌與資料同步化寫入:fsck, sync 關於軟碟開機片: mkbootdisk, fdformat 各式磁區的掛載:mount, umount 設定開機時即掛載的方式:/etc/fstab 虛擬記憶體 Swap:mkswap, swapon, swapoff 磁碟效能:hdparm
程序與資源管理 什麼是程序? 任何觸發系統工作的事件,系統會給予一個 process ID 來控制該事件的執行,這個 PID 就是程序 需要注意到,程序『屬於誰?他的權限是不同的!』而程序執行後輸出的訊息則與資料流有關
程序與資源管理 如何觀察程序? 常駐記憶體的程式(daemon, 服務) top ps 在背景下執行 是系統正常運作所必需要的(syslog,cron) 是某些服務提供所必需要的(www, mail..)
Linux 套件管理 RPM 具有資料庫:容易安裝、升級、移除 在查驗及搜尋方面極為有效率 漏洞修補速度快速 最大的缺點:屬性相依的問題(這包含了版本、平台等等)
帳號與身份管理 帳號管理 groupadd groupdel useradd userdel chsh chfn userconf
帳號與身份管理 密碼管理與設定 passwd 使用者身份切換 su sudo visudo
帳號與身份管理 使用者查詢 id finger groups
系統關機 關機 重新起動 shutdown –h now halt poweroff init 0 shutdown –r now reboot init 6
網路工具 一些網路偵錯指令 遠端連線使用指令 文字界面網頁瀏覽 ping, ifconfig, ifup, ifdown, netstat, route, traceroute, host, dig, nslookup 遠端連線使用指令 telnet, ssh, ftp, ncftp, lftp, wget 文字界面網頁瀏覽 lynx, links
RedHat Linux 網路設定 修改主機名稱與Gateway等設定 修改網路卡設定 修改DNS與Hosts設定 /etc/sysconfig/network 修改網路卡設定 /etc/sysconfig/network-script/ifcfg-eth0 修改DNS與Hosts設定 /etc/resolv.conf /etc/hosts
DNS Server套件-BIND 套件:bind-9.2.1-16, bind-utils-9.2.1-16 服務:named 服務埠:53 upd, 53 tcp 設定檔:/etc/named.conf , /var/namd/*
DNS Server 啟動與停止 /etc/init.d/named start 啟動 tail –f /var/log/messages 查看 log 紀錄 /etc/init.d/named stop 停止 killall named or kill -9 PID
WWW Server 套件: httpd { , -devel, -manual } 服務名稱:httpd 啟動的script : httpd 執行埠:80/tcp (http), 443/tcp (https) 設定檔:/etc/httpd/*, /var/www/* 相關: redhat-config-httpd,mod_ssl,以及其它
WWW Server 設定檔 設定檔位置 模組位置 網頁文件預設放置目錄 /etc/httpd/conf/httpd.conf /var/www/html/
sendmail 啟動與測試 # /etc/init.d/sendmail start # telnet localhost 25 mail from: root@server.example.com rcpt to: root@example.com data This is a test Mail . quit
Proxy Server套件-squid 安裝Proxy套件 – squid-2.5.STABLE1-2.i386.rpm 目錄位置:/etc/squid 設定檔:/etc/squid/squid.conf 紀錄檔:/var/log/squid/access.log /var/log/squid/cache.log /var/log/squid/store.log
acl的用法 <acl> <acl名稱> <acl類型> <設定的內容> acl類型 以來源端:src,srcdomain 以目地端:dst,dstdomain 以正規表式法:url_regex [-i] ^http:// urlpath_regex [-i] \.gif$ 設定的內容 IP or Domain or String acl example dstdomain .com
http_access 用法 設定允許存取 squid Server 的列表 以 acl 的定義來做管制 http_access allow example #設定只允許example的acl訂義存取 http_access deny all #如果要開放的話,改成 allow all
cache_peer 用法 <cache_peer> <主機名稱> <類別> <http_port> <icp_port> <其他參數> 類別:parent(上層),sibling(同一層) http_port/icp_port:3128/3130 其他參數: proxy-only,weight=n,no-query,default,no-netdb-exchange,no-digest 到處向其它proxy server請求會消耗太多網路資源,所以請勿設太多parent和sibling server. cache_peer proxy.hinet.net parent 3128 3130 proxy-only
cache_peer_access 用法 cache_peer_access proxy.hinet.net allow example <cache_peer_access> <上層 Proxy> <allow|deny> <acl名稱> cache_peer_access proxy.hinet.net allow example
不要進行cache的設定值 只要網址列出 cgi 字樣都不做 cache hierarchy_stoplist cgi-bin ? acl QUERY urlpath_regex cgi-bin \? no_cache deny QUERY
與時間相關的設定值 refresh_pattern ^ftp: 1440 20% 10080 <refresh_pattern> <regex> <最小時間> <百分比> <最大時間> refresh_pattern ^ftp: 1440 20% 10080 refresh_pattern ^gopher: 1440 0% 1440 refresh_pattern . 0 20% 4320
與時間相關的設定值 connect_timeout 2 minutes # 連線的timeout時間 peer_connect_timeout 30 seconds # 連線到上層proxy的timeout時間 request_timeout 5 minutes # 連上後,要求的 timeout 時間 persistent_request_timeout 1 minutes # 連上後, 連續要求 timeout 時間
額外的功能參數 與 FTP 有關的設定項目,主要是針對被動式連線 ftp_user Squid@ ftp_passive on 主要與 DNS 的設定值有關,如果在高負載的 Proxy 環境下,可以考慮將 dns_children 提高到 20 左右,這個值最大為 32 dns_timeout 1 minutes hosts_file /etc/hosts
transparent proxy 設定 squid.conf httpd_accel_host proxy.example.com httpd_accel_port 80 httpd_access_with_proxy on httpd_accel_uses_host_header on 設定 NAT 主機的 port map iptables -t nat -A PREROUTING -i eth0 -p tcp -s 192.168.30.0/24 --dport 80 -j REDIRECT --to-ports 3128
啟動 squid server /etc/init.d/squid start tail –f /var/log/squid/access.log