RHCSA 7 Department of Computer Science and Information Engineering Chaoyang University of Technology Taichung, Taiwan, Republic of China Instructor: De-Yu Wang ( 王 德 譽 ) E-mail: dywang@mail.cyut.edu.tw Phone: (04)23323000 ext 4538 Office: E738 1 2 3 4 5 6 7 7 September 26, 2016
Instructor: De-Yu Wang 1. Email: dywang@csie.cyut.edu.tw 2. Homepage: http://dywang.csie.cyut.edu.tw 3. Phone: (04)23323000 ext 4538 4. Office: E738 參 考 資 料 1. RedHat Documentation 2. RedHat Customer Protal De-Yu Wang CSIE CYUT i
De-Yu Wang CSIE CYUT ii
CONTENTS CONTENTS Contents 1 實 機 練 習 系 統 1 1.1 動 機.................................... 1 1.2 系 統 設 計................................. 1 1.3 NAT 設 計................................. 2 1.4 虛 擬 機 管 理 界 面.............................. 3 1.5 系 統 管 理 與 評 分.............................. 4 1.6 證 照 考 試................................. 5 1.7 虛 擬 機 設 定................................ 5 2 rhel v6 vs. v7 開 機 7 2.1 系 統 維 護................................. 7 2.2 v6 變 更 密 碼................................ 7 2.3 v7 開 機 target............................... 9 2.4 v7 變 更 密 碼................................ 10 2.5 v7 console resolution........................... 11 3 IPv4 網 路 設 定 13 3.1 前 言.................................... 13 3.2 nmcli 命 令................................. 13 3.3 nmcli 修 改 網 卡 設 定........................... 14 3.4 nmcli 設 定 網 卡.............................. 15 3.5 主 機 名 稱 設 定............................... 20 3.6 SSH 相 關 問 題............................... 21 4 vi 編 輯 器 27 4.1 vi 與 vim................................. 27 4.2 vi 的 使 用................................. 27 4.3 vim 的 額 外 功 能.............................. 35 4.4 vi 實 機 練 習 題............................... 38 5 YUM 線 上 升 級 機 制 41 5.1 yum 容 器 設 定............................... 41 5.2 yum 查 詢 功 能............................... 42 5.3 yum 安 裝 升 級 與 移 除.......................... 45 De-Yu Wang CSIE CYUT iii
CONTENTS CONTENTS 6 SELinux 49 6.1 設 計 原 由................................. 49 6.2 啟 動 關 閉 與 觀 察............................ 49 6.3 SELinux Contexts............................. 51 7 fdisk 硬 碟 分 割 55 7.1 前 言.................................... 55 7.2 v6 fdisk 使 用............................... 55 7.3 v7 fdisk 使 用............................... 59 8 邏 輯 捲 軸 管 理 員 67 8.1 前 言.................................... 67 8.2 邏 輯 捲 軸 管 理............................... 68 8.3 生 邏 輯 捲 冊................................ 72 8.4 開 機 自 動 掛 載............................... 78 8.5 sulogin 解 決................................ 80 8.6 變 更 VG 或 LV 名 稱........................... 82 8.7 變 更 PE 大 小............................... 85 9 帳 號 與 身 份 管 理 87 9.1 Linux 的 帳 號............................... 87 9.2 linux 的 群 組................................ 88 9.3 使 用 者 管 理................................ 90 9.4 設 定 使 用 者 密 碼.............................. 91 9.5 使 用 者 身 份 切 換.............................. 93 10 Linux 檔 案 權 限 與 管 理 95 10.1 檔 案 權 限................................. 95 10.2 改 變 檔 案 權 限............................... 96 10.3 Access Control Lists........................... 97 10.4 檔 案 的 特 殊 屬 性.............................. 99 10.5 特 殊 屬 性 SGID 練 習........................... 102 11 例 行 性 命 令 105 11.1 Linux 的 例 行 性 命 令........................... 105 11.2 僅 執 行 一 次 的 工 作 排 程 :at....................... 105 11.3 循 環 執 行 的 工 作 排 程........................... 107 12 RPM 套 件 下 載 安 裝 111 12.1 RPM 套 件................................. 111 12.2 rpm 指 令................................. 113 12.3 RPM 套 件 安 裝.............................. 113 12.4 RPM 套 件 升 級 與 更 新.......................... 115 12.5 RPM 套 件 移 除.............................. 116 12.6 RPM 查 詢................................. 117 De-Yu Wang CSIE CYUT iv
CONTENTS CONTENTS 13 LDAP 的 網 路 用 戶 帳 號 123 13.1 LDAP 簡 介................................. 123 13.2 LDAP Client 端 設 定........................... 123 14 systemctl 系 統 服 務 控 制 127 14.1 前 言.................................... 127 14.2 systemctl 命 令.............................. 127 14.3 服 務 啟 動................................. 131 14.4 開 機 自 動 啟 動 服 務............................ 133 14.5 永 久 關 閉 服 務............................... 134 14.6 失 效 的 服 務................................ 135 15 Chronyd vs. ntpd 校 時 137 15.1 前 言.................................... 137 15.2 chronyd 使 用............................... 137 15.3 ntpd 使 用................................. 142 16 Network File System, NFS 145 16.1 NFS 簡 介................................. 145 16.2 NFS Client 端 設 定............................ 145 16.3 自 動 掛 載 autofs 的 使 用......................... 147 16.4 NFS 掛 載 非 常 慢............................. 151 17 資 料 導 向 與 管 線 處 理 153 17.1 為 何 要 使 用 命 令 輸 出 重 導 向?...................... 153 17.2 資 料 流 重 導 向............................... 153 17.3 管 線 命 令 (pipe).............................. 156 17.4 檔 案 的 搜 尋................................ 156 18 正 規 表 示 法 161 18.1 前 言.................................... 161 18.2 基 礎 正 規 表 示 法.............................. 161 18.3 延 伸 正 規 表 示 法.............................. 168 18.4 實 機 練 習 題................................ 169 19 檔 案 打 包 壓 縮 171 19.1 檔 案 的 壓 縮................................ 171 19.2 檔 案 的 壓 縮 與 打 包............................ 172 De-Yu Wang CSIE CYUT v
CHAPTER 1. 實 機 練 習 系 統 Chapter 1 實 機 練 習 系 統 1.1 動 機 1. 大 學 應 是 自 由 多 元, 老 師 各 有 專 長, 可 以 帶 給 學 生 不 同 的 學 習 方 式 與 體 驗 2. 不 擅 於 教 學 方 法 與 班 級 經 營, 只 能 利 用 Linux 專 長, 設 計 教 學 實 機 操 作 系 統, 給 學 生 最 好 的 練 習 環 境 3. Linux 教 學 必 須 有 實 際 環 境, 讓 學 生 實 機 操 作 練 習, 才 不 致 於 流 於 紙 上 談 兵 4. Linux 實 機 練 習, 很 容 易 學 生 操 作 錯 誤, 而 造 成 系 統 損 壞 例 如 : 硬 碟 分 割 格 式 化 及 管 理 的 練 習 5. 實 機 練 習 結 束 或 操 作 不 當 造 成 當 機, 系 統 必 須 可 以 迅 速 還 原, 才 能 重 複 練 習 6. 系 統 必 須 可 以 批 次 快 速 修 改 或 更 新 7. 系 統 必 須 可 以 依 據 學 生 實 際 操 作 狀 況, 批 次 進 行 檢 查 或 評 分 8. 虛 擬 機 練 習 所 需 伺 服 器 資 源, 例 如 :LDAP 網 路 帳 號 YUM repository 資 料 庫 伺 服 器 NFS 分 享 NTP 校 時 伺 服 器 ISCSI 硬 碟 分 享 內 部 網 域 DNS 伺 服 器 FTP 資 源 下 載... 等 環 境 必 須 架 設 好, 才 能 提 供 虛 擬 機 做 各 種 狀 況 的 練 習 1.2 系 統 設 計 1. Linux 教 學 系 統 設 計 (a) 客 製 化 Linux 系 統 (b) Linux 伺 服 器 架 設 (c) 虛 擬 機 設 計 De-Yu Wang CSIE CYUT 1
1.3. NAT 設計 CHAPTER 1. 實機練習系統 2. Linux 教學系統安裝 (a) E517 電腦教室 方便學生上課使用 (b) 個人隨身碟 插上隨身碟 以安裝光碟開機 不需要任何設定 自動安 裝於隨身碟 不會影響電腦中的硬碟 (c) LiveCD 以 LiveCD 光碟開機 開機後即可使用 只是所有操作與設定 都是暫存 重新開機後即回到原始狀態 1.3 NAT 設計 1. NAT 架設?? 電腦教室網路設置 管控學生上課上網?? 2. 在 Linux 一行命令即可完成設定 在 Windows Honda 老師亦幫忙撰寫批 次檔 控制方式 3. 任何設定皆不管控老師機 老師機可可自由上網 4. 學生機上網方式 (a) 自由上網 (b) 不能上網 (c) 限制只能上學內網 (d) 限制只能上某一網站 (e) 限制只能上 依老師設定 的部分網站 (f) 只有某一學生機可自由上網 5. 不管老師做任何網路設定 下課後系統自動恢復成所有電腦皆可自由上網 以避免因老師忘了復原 而影響下節上課的老師 De-Yu Wang CSIE CYUT 2
1.4. 虛擬機管理界面 CHAPTER 1. 實機練習系統 虛擬機管理界面 1.4 1. 設計虛擬機管理 GUI 程式 方便學生管理虛擬機 程式包含虛擬機重安裝 還原 重新啟動及終端界面等四個功能 (a) Rebuild KVM 重新安裝 KVM 虛擬機 約 10 幾分鐘 (b) Revert KVM 還原 KVM 虛擬機 約幾秒鐘到幾分鐘 請耐心等侯 不 要在還原過程按管理界面的其他功能 以免造成虛擬機損壞 (c) Reboot KVM 重新啟動 KVM 虛擬機 (d) KVM Console 打開 KVM 虛擬機終端畫面 2. 系統桌面中黑色背景視窗為 KVM 虛擬機操作界面 原始 KVM 虛擬機主機 名稱為 111111 因已練習過 主機也已被設定成 kvm8 點擊 Revert KVM 幾秒後就可還原回原始狀態重新練習 3. 在終端機以指令 virt-view 直接開啟虛擬機 出現錯誤訊息 伱 [dywang@dywh ~]$ sudo virt-viewer kvmusb No protocol specified 伳 Cannot open display: Run virt-viewer --help to see a full list of available command line options De-Yu Wang CSIE CYUT 3
1.5. 系 統 管 理 與 評 分 CHAPTER 1. 實 機 練 習 系 統 4. 先 檢 查 Xwindow 認 證 變 數 $XAUTHORITY 存 不 存 在? [dywang@dywh ~]$ echo $XAUTHORITY 5. 變 數 XAUTHORITY 不 存 在, 必 須 先 設 定 XAUTHORITY=~/.Xauthority 後 再 使 用 sudo 啟 動 虛 擬 機, 才 能 正 常 啟 動 [dywang@dywh ~]$ XAUTHORITY=~/.Xauthority sudo virt-viewer kvmusb 1.5 系 統 管 理 與 評 分 1. 系 統 管 理 腳 本 程 式 自 動 掃 瞄 目 前 開 機 的 電 腦, 選 擇 要 進 行 的 工 作, 輸 入 密 碼 後 即 可 自 動 完 成 伱 [root@dywh ~]# e517sshpass.sh myip=104 伳 hosts=103,105 q(quit) iscsi halt reboot c(clear) l(lvm) rhcsa rhce 伵 > t(mounttest) k(kvmreboot) v(kvmrevert) s(servicerestart) > vi1 c1 lpvar c999 sh999 hp(hostpatch)? c999 伷 keyin remote host root password: 2. 預 設 工 作 項 目 : (a) q(quit): 退 出, 無 動 作 (b) iscsi: 學 生 機 ISCSI 硬 碟 分 享 架 設 (c) halt: 學 生 機 關 機 (d) reboot: 學 生 機 重 新 啟 動 (e) c(clear): 登 入 學 生 機 後 清 除 部 分 資 料, 此 部 分 保 留 修 改 彈 性, 目 前 入 作 為 限 制 學 生 機 互 相 登 入 之 限 制, 以 防 代 作 答 情 況 (f) l(lvm): 硬 碟 分 割 格 式 化 自 動 掛 掛 評 分 (g) rhcsa:rhcsa 考 照 練 習 總 評 分 (h) rhce:rhce 考 照 練 習 總 評 分 (i) t(mounttest): 測 試 學 生 機 是 否 有 掛 載 隨 身 碟 或 光 碟 De-Yu Wang CSIE CYUT 4
1.6. 證 照 考 試 CHAPTER 1. 實 機 練 習 系 統 (j) k(kvmreboot): 學 生 機 KVM 虛 擬 機 重 新 啟 動 (k) v(kvmrevert): 學 生 機 KVM 虛 擬 機 還 原 (l) s(servicerestart): 啟 動 學 生 機 主 機 服 務 (m) vi1:vi 編 輯 器 實 機 練 習 評 分 (n) c1:c 語 言 第 一 支 程 式 練 習 評 分 (o) lpvar:shell 變 數 變 化 練 習 評 分 (p) c999:c 語 言 程 式 實 機 練 習 評 分 (q) sh999:shell script 程 式 練 習 評 分 (r) hp(hostpatch): 學 生 機 網 路 修 正 後 重 新 啟 動 網 路 1.6 證 照 考 試 1. 證 照 考 試 是 手 段, 不 是 目 的 為 的 是 讓 學 生 藉 由 實 機 考 照 的 訓 練, 熟 悉 Linux 系 統 管 理 及 伺 服 器 架 設 2. 經 紅 帽 原 廠 認 證 講 師, 可 以 提 供 學 生 最 新 的 Linux 技 術 3. 經 紅 帽 原 廠 認 證 考 官, 可 以 主 持 RHCSA, RHCE 認 證 考 試, 學 生 可 以 在 自 已 最 熟 悉 的 環 境 考 試 4. 暑 期 證 照 班 歡 迎 參 加 1.7 虛 擬 機 設 定 1. 上 課 前 請 先 確 定 三 件 事 : (a) E517 教 室 位 置, 靠 窗 為 第 一 排, 確 認 自 己 電 腦 位 置 為?-? 例 如 :1-1 (b) 確 認 自 己 的 電 腦 IP 以 下 例 子 為 192.168.1.140 伱 [dywang@dywhd2 ~]$ ifconfig grep 192 inet addr:192.168.1.140 Bcast:192.168.1.255 Mask :255.255.255.0 伳 inet addr:192.168.122.1 Bcast:192.168.122.255 Mask:255.255.255.0 (c) 在 deyu.eang 主 機 一 般 帳 號 dywang 家 目 錄, 生 學 號 姓 名 檔 sid 以 下 例 子 學 號 123456, 姓 名 ABC 伱 [dywang@dywhd2 ~]$ echo 123456 ABC > sid [dywang@dywhd2 ~]$ cat sid 伳 123456 ABC De-Yu Wang CSIE CYUT 5
1.7. 虛 擬 機 設 定 CHAPTER 1. 實 機 練 習 系 統 2. 虛 擬 機 環 境 說 明 : (a) 網 段 deyu.wang(192.168.122.0/24),my111.wang(192.168.111.0/24) (b) server 主 機 deyu.wang IP 192.168.122.1 192.168.111.1 (c) 虛 擬 機 主 機 名 稱 kvmx.deyu.wang IP 192.168.122.X,X 為 虛 擬 機 編 號, 例 如 5 或 7 (d) 虛 擬 機 root 密 碼 無 法 取 得, 統 一 重 新 設 定 為 123qwe (e) 虛 擬 機 網 路 設 定 : 伱 IP Address: 192.168.122.X Netmask: 255.255.255.0 伳 Gateway: 192.168.122.1 Name server: 192.168.122.1 (f) repo server: http://dywang.csie.cyut.edu.tw/centos7. (g) kernel packages: 網 路 下 載 核 心 RPM 檔 http://dywang.csie.cyut.edu.tw/kernel/centos7. (h) LDAP server 設 定 : i. 系 統 deyu.wang ii. base DN 為 dc=deyu,dc=wang iii. 證 書 ftp://deyu.wang/pub/cacert.pem. De-Yu Wang CSIE CYUT 6
CHAPTER 2. RHEL V6 VS. V7 開 機 Chapter 2 rhel v6 vs. v7 開 機 2.1 系 統 維 護 1. Linux 出 現 開 機 問 題 或 忘 記 root 密 碼 時, 必 須 進 入 維 護 模 式 2.2 v6 變 更 密 碼 1. v6 開 關 機 層 級 分 為 0,1,2,3,4,5,6 等 層 級, 維 護 模 式 是 在 開 機 時 在 grub 的 kernel 參 數 中 指 定 開 機 進 入 單 人 模 式, 也 就 是 層 級 1, 就 可 免 root 密 碼 進 入 系 統 互 動 式 命 令 模 式 2. v6 變 更 root 密 碼 方 式 一 : (a) 出 現 grub boot loader 開 機 選 單 時, 立 即 碰 觸 鍵 盤 任 意 鍵,boot loader 會 暫 停 (b) 按 下 e, 編 輯 選 單 (c) 移 動 上 下 鍵 至 核 心 設 定 行 kernel /vmlinuz-2.6.32-71.el6.x86_64 ro root=/dev/mapper/ vgsrv-root... quiet (d) 按 下 e, 進 入 編 輯 模 式, 在 quiet 後 空 一 格 加 入 1 (e) 再 按 下 [enter], 結 東 編 輯 模 式 (f) 按 下 b, 重 新 開 機 進 入 單 入 維 護 模 式 (g) 開 機 後 不 必 輸 入 帳 密 就 已 登 入 為 root, 只 要 執 行 passwd 直 接 更 改 root 密 碼 即 可 De-Yu Wang CSIE CYUT 7
2.2. V6 變 更 密 碼 CHAPTER 2. RHEL V6 VS. V7 開 機 伱 [root@kvm8 /]# passwd 3. v6 變 更 root 密 碼 方 式 二 : (a) 出 現 grub boot loader 開 機 選 單 時, 立 即 碰 觸 鍵 盤 任 意 鍵,boot loader 會 暫 停 (b) 按 下 a, 直 接 編 輯 核 心 伱 kernel /vmlinuz-2.6.32-71.el6.x86_64 ro root=/dev/mapper/ vgsrv-root... quiet (c) 在 最 後 加 一 空 格 及 1 (d) 再 按 下 [enter] 重 新 開 機 (e) 開 機 後 不 必 輸 入 帳 密 就 已 登 入 為 root, 只 要 執 行 passwd 直 接 更 改 root 密 碼 即 可 伱 [root@kvm8 /]# passwd 4. 單 人 模 式 變 更 密 碼, 若 出 現 以 下 訊 息, 表 示 SELinux 管 制 密 碼 變 更 伱 [root@kvm8 /]# passwd type=1400 audit(1323777256.565:29): avc: denied { read } for 伳 pid=1912 comm="passwd" path="pipe:[12939]" dev=pipefs ino=12939... 伵... 5. 可 以 使 用 echo 方 式 變 更 密 碼 伱 [root@kvm8 /]# echo "123123" passwd --stdin type=1300 audit(1323777556.699:32): avc: denied { read } for 伳 pid=1916 comm="passwd" path="pipe:[12939]" dev=pipefs ino=12939... 伵... De-Yu Wang CSIE CYUT 8
2.3. V7 開 機 TARGET CHAPTER 2. RHEL V6 VS. V7 開 機 6. 或 先 關 閉 SELinux, 再 變 更 密 碼, 雖 依 然 出 現 謷 告 訊 息, 但 已 可 以 變 更 root 密 碼 伱 [root@kvm8 /]# setenforce 0 關 閉 <== selinux type=1404 audit(1323777769.894:4): enforcing=0 old_enforcing=1 伳 audit=4294967295 ses=4294967295 [root@kvm8 /]# passwd 伵 type=1400 audit(1323777776.973:5): avc: denied { read } for pid=887 comm="passwd" path="pipe:[10230]" dev=pipefs ino=10230 伷... Changing password for user root. 伹 New password: BAD PASSWORD: it does not contain enough DIFFERENT characters 伱 伱 BAD PASSWORD: is too simple Retype new password: 伱 伳 passwd: all authentication tokens updated successfully. 7. 建 議 做 法 是 直 接 在 開 機 選 單 關 閉 SELinux 伱 grub edit> kernel /vmlinuz-2.6.18-92.el5 ro root=label=/ rhgb quiet selinux=0 1 2.3 v7 開 機 target 1. v7 開 機 不 分 層 級, 而 是 分 成 4 個 目 標 target, 其 開 機 結 果 如 下 表 : Target Purpose graphical.target 多 人 模 式, 支 援 圖 形 及 文 字 兩 種 方 式 登 入, 等 效 v6 的 層 級 3 及 5 multi-user.target 多 人 模 式, 只 支 援 文 字 登 入 方 式, 等 效 v6 的 層 級 3 rescue.target sulogin (Single-user login), 單 人 模 式, 等 效 v6 的 層 級 1 emergency.target sulogin, 單 人 模 式, 完 成 initramfs 載 入 且 系 統 根 目 錄 / 掛 載 成 唯 讀, 等 效 v6 開 機 掛 載 不 成 功 時 的 維 修 模 式 2. v7 指 定 target 開 機 : (a) 出 現 grub boot loader 開 機 選 單 時, 立 即 碰 觸 鍵 盤 任 意 鍵,boot loader 會 暫 停 (b) 按 下 e, 編 輯 選 單 De-Yu Wang CSIE CYUT 9
2.4. V7 變 更 密 碼 CHAPTER 2. RHEL V6 VS. V7 開 機 (c) 移 動 上 下 鍵 至 linux16 核 心 命 令 行 伱 linux16 /vmlinuz-3.10.0-123.el7.x86_64 \ root=uuid=449d53d1-84c2-40c0-b05e-d1900591d71b ro \ 伳 rd.lvm.lv=vg_kvm7usb/swap crashkernel=auto \ vconsole.keymap=us crashkernel=auto \ 伵 vconsole.font=latarcyrheb-sun16 \ rd.lvm.lv=vg_kvm7usb/root rhgb quiet LANG=en_US.UTF-8 (d) 在 核 心 命 令 行 最 後 加 入 systemd.unit=desired.target (desired 為 上 表 中 四 種 target 之 一 ) (e) 再 按 下 Ctrl+x 重 新 以 這 個 設 定 開 機 2.4 v7 變 更 密 碼 1. v7 無 論 使 用 那 種 目 標 開 機, 都 必 須 輸 入 帳 號 及 密 碼 才 能 進 入 互 動 式 命 令 模 式 因 此 v7 變 更 root 密 碼, 必 須 先 中 斷 開 機 流 程, 不 要 讓 流 程 完 成 initramfs 載 入 並 控 制 系 統 (a) 出 現 grub boot loader 開 機 選 單 時, 立 即 碰 觸 鍵 盤 任 意 鍵,boot loader 會 暫 停 (b) 按 下 e, 編 輯 選 單 (c) 移 動 上 下 鍵 至 linux16 核 心 命 令 行 linux16 /vmlinuz-3.10.0-123.el7.x86_64 \ 伲 root=uuid=449d53d1-84c2-40c0-b05e-d1900591d71b ro \ rd.lvm.lv=vg_kvm7usb/swap crashkernel=auto \ 伴 vconsole.keymap=us crashkernel=auto \ vconsole.font=latarcyrheb-sun16 \ 伶 rd.lvm.lv=vg_kvm7usb/root rhgb quiet LANG=en_US.UTF-8 (d) 在 核 心 命 令 行 最 後 加 入 rd.break (e) 再 按 下 Ctrl+x 重 新 以 這 個 設 定 開 機 2. 開 機 後 的 互 動 式 命 令 環 境, 並 不 是 正 常 開 機 的 系 統, 正 常 開 機 系 統 掛 載 在 /sysboot, 且 掛 載 成 唯 讀, 必 須 重 新 掛 載 成 可 寫 入, 才 能 變 更 密 碼, 步 驟 如 下 : (a) 重 新 掛 載 /sysroot 成 可 讀 可 寫 De-Yu Wang CSIE CYUT 10
2.5. V7 CONSOLE RESOLUTION CHAPTER 2. RHEL V6 VS. V7 開 機 switch_root:/# mount -oremount,rw /sysroot (b) chroot 工 作 目 錄 到 /sysroot 伱 switch_root:/# chroot /sysroot (c) 設 定 新 的 root 密 碼 伱 sh-4.2# passwd (d) 因 為 在 此 情 況 下,SELinux 並 沒 有 啟 動, 對 所 有 檔 案 的 變 更, 可 能 會 造 成 檔 案 的 context 不 正 確, 為 確 保 開 機 時 重 新 設 定 SELinux context, 必 須 在 根 目 錄 下 產 生 隱 藏 檔.autorelabel 伱 sh-4.2# touch /.autorelabel (e) 退 出 chroot 伱 sh-4.2# exit switch_root:/# (f) 退 出 系 統, 即 重 新 開 機 switch_root:/# exit 3. 忘 記 密 碼 操 作 示 範 2.5 v7 console resolution 1. v7 開 機 預 設 為 文 字 界 面, 且 console 解 析 度 預 設 為 1280x1024, 佔 據 整 個 螢 幕, 且 縮 小 後 字 型 跟 著 縮 小, 使 用 上 很 不 方 便 修 改 終 端 機 解 析 度, 可 以 開 機 時 修 改 kernel 參 數, 加 入 video= XRES x YRES De-Yu Wang CSIE CYUT 11
2.5. V7 CONSOLE RESOLUTION CHAPTER 2. RHEL V6 VS. V7 開 機 (a) 出 現 grub boot loader 開 機 選 單 時, 立 即 碰 觸 鍵 盤 任 意 鍵,boot loader 會 暫 停 (b) 按 下 e, 編 輯 選 單 (c) 移 動 上 下 鍵 至 linux16 核 心 命 令 行 伱 linux16 /vmlinuz-3.10.0-123.el7.x86_64 \ root=uuid=449d53d1-84c2-40c0-b05e-d1900591d71b ro \ 伳 rd.lvm.lv=vg_kvm7usb/swap crashkernel=auto \ vconsole.keymap=us crashkernel=auto \ 伵 vconsole.font=latarcyrheb-sun16 \ rd.lvm.lv=vg_kvm7usb/root rhgb quiet LANG=en_US.UTF-8 (d) 在 核 心 命 令 行 最 後 加 入 video=720x400 (e) 再 按 下 Ctrl+x 重 新 以 這 個 設 定 開 機 2. 不 過 還 是 建 議 直 接 修 改 開 機 選 單 [root@kvm7 ~]# vim /boot/grub2/grub.cfg 伲 [root@kvm7 ~]# grep video= /boot/grub2/grub.cfg linux16 /vmlinuz-3.10.0-123.el7.x86_64 \ 伴 root=uuid=10949263-987a-44e1-b0dc-05ff2d9bc4f9 \ ro rd.lvm.lv=vg_kvm7usb/swap crashkernel=auto vconsole.keymap=us \ 伶 crashkernel=auto vconsole.font=latarcyrheb-sun16 rd.lvm.lv= vg_kvm7usb/root \ rhgb quiet LANG=en_US.UTF-8 video=720x400 3. 變 更 終 端 機 螢 幕 解 析 度 操 作 示 範 De-Yu Wang CSIE CYUT 12
CHAPTER 3. IPV4 網 路 設 定 Chapter 3 IPv4 網 路 設 定 3.1 前 言 1. 網 路 ( 網 路 介 面 ) 卡 由 系 統 daemon NetworkManager 管 理, 包 含 : (a) device: 網 路 卡 (b) connection: 設 定 網 卡 (c) 每 一 個 connection 都 有 一 個 名 字 或 ID 做 為 識 別 (d) 目 錄 /etc/sysconfig/network-scripts 下 ifcfg-name 為 網 卡 name 的 設 定 檔, 可 以 使 用 命 令 nmcli 產 生 或 編 輯 網 卡 連 線 (connection) (e) /etc/sysconfig/network-scripts/ifcfg-name 網 卡 設 定 檔, 還 可 以 跟 v6 版 本 一 樣, 直 接 以 vim 手 動 編 輯 3.2 nmcli 命 令 1. 查 看 device 狀 態, 除 了 lo 以 外, 只 有 一 個 網 路 介 面 ens3 伱 [root@kvm7 ~]# nmcli device status DEVICE TYPE STATE CONNECTION 伳 ens3 ethernet connected ens3 lo loopback unmanaged -- 2. 查 詢 網 路 連 線 狀 態 [root@kvm7 ~]# nmcli connection show 伲 NAME UUID TYPE DEVICE ens3 2e37720d-f8f8-4180-bdb4-de34bf50ca49 802-3-ethernet ens3 De-Yu Wang CSIE CYUT 13
3.3. NMCLI 修 改 網 卡 設 定 CHAPTER 3. IPV4 網 路 設 定 3. 查 詢 網 路 連 線 狀 態, 只 列 出 active 的 網 路 介 面 伱 [root@kvm7 ~]# nmcli connection show --active NAME UUID TYPE DEVICE 伳 ens3 2e37720d-f8f8-4180-bdb4-de34bf50ca49 802-3-ethernet ens3 4. 查 詢 網 路 介 面 ens3 的 ip, 此 網 卡 有 192.168.122.9 及 192.168.122.7 兩 個 ip 伱 [root@kvm7 ~]# ip addr show ens3 2: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 伳 link/ether 52:54:00:b4:0a:a3 brd ff:ff:ff:ff:ff:ff inet 192.168.122.9/24 brd 192.168.122.255 scope global dynamic ens3 伵 valid_lft 2393sec preferred_lft 2393sec inet 192.168.122.7/24 brd 192.168.122.255 scope global secondary ens3 伷 valid_lft forever preferred_lft forever inet6 fe80::5054:ff:feb4:aa3/64 scope link 伹 valid_lft forever preferred_lft forever 3.3 nmcli 修 改 網 卡 設 定 1. 查 看 網 路 設 定, 也 就 是 網 卡 設 定, 目 前 只 有 eth0 一 個 網 路 設 定 伱 [root@777777 ~]# nmcli connection show NAME UUID TYPE DEVICE 伳 eth0 5a0ff824-0615-4fce-86c4-ad3e73e26c61 802-3-ethernet eth0 2. 不 必 刪 除 設 定, 直 接 使 用 modify 選 項 變 更 設 定 設 定 ipv4 位 址 192.168.122.7 遮 罩 255.255.255.0 DNS 192.168.122.1, 最 後 一 定 要 設 定 ipv4.method 為 manual, 將 網 路 連 線 設 定 為 手 動, 也 就 是 自 行 設 定 IP, 不 是 由 DHCP 自 動 取 得, 否 則 原 DHCP 取 得 的 IP 還 會 存 在 De-Yu Wang CSIE CYUT 14
3.4. NMCLI 設 定 網 卡 CHAPTER 3. IPV4 網 路 設 定 伱 [root@777777 ~]# nmcli connection modify eth0 \ ipv4.addresses 192.168.122.7/24 \ 伳 ipv4.gateway 192.168.122.1 \ ipv4.dns 192.168.122.1 \ 伵 ipv4.method manual 3. 重 新 啟 動 網 路 伱 [root@777777 ~]# systemctl restart network.service 4. 查 看 網 卡 設 定, 看 手 動 設 定 是 否 正 確? 伱 [root@777777 ~]# nmcli connection show eth0 egrep -i ipv?4 ipv4.method: manual 伳 ipv4.dns: 192.168.122.1 ipv4.dns-search: 伵 ipv4.addresses: 192.168.122.7/24 ipv4.gateway: 192.168.122.1 伷 ipv4.routes: ipv4.route-metric: -1 伹 ipv4.ignore-auto-routes: no ipv4.ignore-auto-dns: no 伱 伱 ipv4.dhcp-client-id: -- ipv4.dhcp-send-hostname: yes 伱 伳 ipv4.dhcp-hostname: -- ipv4.never-default: no 伱 伵 ipv4.may-fail: yes IP4.ADDRESS[1]: 192.168.122.7/24 伱 伷 IP4.GATEWAY: 192.168.122.1 IP4.DNS[1]: 192.168.122.1 3.4 nmcli 設 定 網 卡 1. 當 使 用 nmcli connection modify 無 法 修 改 ipv4.gateway 時, 可 以 刪 除 目 前 的 connection 再 新 增 查 看 網 卡, 除 了 lo 外, 有 一 張 網 卡 ens3 [root@kvm7 ~]# nmcli device show 伲 GENERAL.DEVICE: ens3 De-Yu Wang CSIE CYUT 15
3.4. NMCLI 設 定 網 卡 CHAPTER 3. IPV4 網 路 設 定 GENERAL.TYPE: ethernet 伴 GENERAL.HWADDR: 52:54:00:B4:0A:A3 GENERAL.MTU: 1500 伶 GENERAL.STATE: 30 (disconnected) GENERAL.CONNECTION: -- 伸 GENERAL.CON-PATH: -- WIRED-PROPERTIES.CARRIER: on 伱 估 GENERAL.DEVICE: lo 伱 伲 GENERAL.TYPE: loopback GENERAL.HWADDR: 00:00:00:00:00:00 伱 伴 GENERAL.MTU: 65536 GENERAL.STATE: 10 (unmanaged) 伱 伶 GENERAL.CONNECTION: -- GENERAL.CON-PATH: -- 伱 伸 IP4.ADDRESS[1]: ip = 127.0.0.1/8, gw = 0.0.0.0 IP6.ADDRESS[1]: ip = ::1/128, gw = :: 2. 查 詢 ens3 網 卡 設 定 為 dhcp 伱 [root@kvm7 ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens3 TYPE=Ethernet 伳 BOOTPROTO=dhcp DEFROUTE=yes 伵 PEERDNS=yes PEERROUTES=yes 伷 IPV4_FAILURE_FATAL=no IPV6INIT=yes 伹 IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes 伱 伱 IPV6_PEERDNS=yes IPV6_PEERROUTES=yes 伱 伳 IPV6_FAILURE_FATAL=no NAME=ens3 伱 伵 UUID=e08e9bff-28d9-4ee3-8215-034a103a474e DEVICE=ens3 伱 伷 ONBOOT=yes 3. 刪 除 ens3 網 卡 的 連 線, 實 際 上 是 刪 除 網 卡 設 定 檔 /etc/sysconfig/networkscript/ifcfg-ens3 伱 [root@kvm7 ~]# nmcli connection delete ens3 [root@kvm7 ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens3 De-Yu Wang CSIE CYUT 16
3.4. NMCLI 設 定 網 卡 CHAPTER 3. IPV4 網 路 設 定 伳 cat: /etc/sysconfig/network-scripts/ifcfg-ens3: No such file or directory 4. 增 加 ens3 網 卡 的 連 線 ip 192.168.122.7, 遮 罩 255.255.255.0, 閘 道 192.168.122.1 伱 [root@kvm7 ~]# nmcli connection add con-name ens3 type ethernet ifname ens3 ip4 192.168.122.7/24 gw4 192.168.122.1 Connection ens3 (69bf76bb-71d3-4704-8b04-f09e21d9796d) successfully added. 5. 實 際 上 是 編 輯 網 卡 設 定 檔 /etc/sysconfig/network-script/ifcfg-ens3 [root@kvm7 ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens3 伲 TYPE=Ethernet BOOTPROTO=none 伴 IPADDR0=192.168.122.7 PREFIX0=24 伶 GATEWAY0=192.168.122.1 DEFROUTE=yes 伸 IPV4_FAILURE_FATAL=no IPV6INIT=yes 伱 估 IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes 伱 伲 IPV6_PEERDNS=yes IPV6_PEERROUTES=yes 伱 伴 IPV6_FAILURE_FATAL=no NAME=ens3 伱 伶 UUID=69bf76bb-71d3-4704-8b04-f09e21d9796d DEVICE=ens3 伱 伸 ONBOOT=yes inactive 6. 成 功 啟 動 ens3 網 卡 的 連 線 伱 [root@kvm7 ~]# nmcli connection up ens3 Connection successfully activated (D-Bus active path: /org/ freedesktop/networkmanager/activeconnection/2) De-Yu Wang CSIE CYUT 17
3.4. NMCLI 設 定 網 卡 CHAPTER 3. IPV4 網 路 設 定 7. 查 看 ens3 ip 與 設 定 相 同 [root@kvm7 ~]# ip addr show ens3 伲 2: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 52:54:00:b4:0a:a3 brd ff:ff:ff:ff:ff:ff 伴 inet 192.168.122.7/24 brd 192.168.122.255 scope global ens3 valid_lft forever preferred_lft forever 伶 inet6 fe80::5054:ff:feb4:aa3/64 scope link valid_lft forever preferred_lft forever 8. 查 看 ens3 連 線 詳 細 狀 況, 其 中 DNS 沒 設 定 伱 [root@kvm7 ~]# nmcli connection show ens3 connection.id: ens3 伳 connection.uuid: 69bf76bb-71d3-4704-8b04- f09e21d9796d connection.interface-name: ens3 伵 connection.type: 802-3-ethernet connection.autoconnect: yes 伷 connection.timestamp: 1408114329 connection.read-only: no 伹 connection.permissions: connection.zone: -- 伱 伱 connection.master: -- connection.slave-type: -- 伱 伳 connection.secondaries: connection.gateway-ping-timeout: 0 伱 伵 802-3-ethernet.port: -- 802-3-ethernet.speed: 0 伱 伷 802-3-ethernet.duplex: -- 802-3-ethernet.auto-negotiate: yes 伱 伹 802-3-ethernet.mac-address: -- 802-3-ethernet.cloned-mac-address: -- 伲 伱 802-3-ethernet.mac-address-blacklist: 802-3-ethernet.mtu: auto 伲 伳 802-3-ethernet.s390-subchannels: 802-3-ethernet.s390-nettype: -- 伲 伵 802-3-ethernet.s390-options: 伲 伷 ipv4.method: ipv4.dns: ipv4.dns-search: manual 伲 伹 ipv4.addresses: { ip = 192.168.122.7/24, gw = 192.168.122.1 } ipv4.routes: 伳 伱 ipv4.ignore-auto-routes: no ipv4.ignore-auto-dns: no De-Yu Wang CSIE CYUT 18
3.4. NMCLI 設 定 網 卡 CHAPTER 3. IPV4 網 路 設 定 伳 伳 ipv4.dhcp-client-id: -- ipv4.dhcp-send-hostname: yes 伳 伵 ipv4.dhcp-hostname: -- ipv4.never-default: no 伳 伷 ipv4.may-fail: yes ipv6.method: auto 伳 伹 ipv6.dns: ipv6.dns-search: 伴 伱 ipv6.addresses: ipv6.routes: 伴 伳 ipv6.ignore-auto-routes: no ipv6.ignore-auto-dns: no 伴 伵 ipv6.never-default: no ipv6.may-fail: yes 伴 伷 ipv6.ip6-privacy: -1 (unknown) ipv6.dhcp-hostname: -- 伴 伹 GENERAL.NAME: ens3 GENERAL.UUID: 69bf76bb-71d3-4704-8b04- f09e21d9796d 伵 伱 GENERAL.DEVICES: ens3 GENERAL.STATE: activated 伵 伳 GENERAL.DEFAULT: yes GENERAL.DEFAULT6: no 伵 伵 GENERAL.VPN: no GENERAL.ZONE: -- 伵 伷 GENERAL.DBUS-PATH: /org/freedesktop/ NetworkManager/ActiveConnection/2 GENERAL.CON-PATH: /org/freedesktop/ NetworkManager/Settings/6 伵 伹 GENERAL.SPEC-OBJECT: -- GENERAL.MASTER-PATH: -- 伶 伱 IP4.ADDRESS[1]: ip = 192.168.122.7/24, gw = 192.168.122.1 IP6.ADDRESS[1]: ip = fe80::5054:ff:feb4: aa3/64, gw = :: 伶 伳 active 9. ens3 連 線 設 定 dns 192.168.122.1 伱 [root@kvm7 ~]# nmcli connection modify ens3 ipv4.dns 192.168.122.1 10. 設 定 dns 後, 可 以 再 次 啟 動 ens3 網 卡 的 連 線, 以 確 保 dns 生 效 De-Yu Wang CSIE CYUT 19
3.5. 主 機 名 稱 設 定 CHAPTER 3. IPV4 網 路 設 定 伱 [root@kvm7 ~]# nmcli connection up ens3 Connection successfully activated (D-Bus active path: /org/ freedesktop/networkmanager/activeconnection/2) 11. 再 查 看 ipv4 的 DNS 為 192.168.122.1 [root@kvm7 ~]# nmcli connection show ens3 grep dns 伲 ipv4.dns: 192.168.122.1 ipv4.dns-search: 伴 ipv4.ignore-auto-dns: no ipv6.dns: 伶 ipv6.dns-search: ipv6.ignore-auto-dns: no 12. 設 定 網 路 連 線 度 操 作 示 範 3.5 主 機 名 稱 設 定 1. 遠 端 連 線 kvm7.deyu.wang 伱 [dywang@dywissd ~]$ ssh root@kvm7.deyu.wang root@kvm7.deyu.wang s password: 伳 Last login: Mon Sep 19 10:51:26 2016 from deyu.wang [root@kvm7 ~]# 2. 查 看 主 機 名 稱 為 kvm7.deyu.wang [root@kvm7 ~]# hostname 伲 kvm7.deyu.wang 3. 設 定 主 機 名 稱 為 kvm7.deyu.wang [root@kvm7 ~]# hostnamectl set-hostname kvm7.deyu.wang De-Yu Wang CSIE CYUT 20
3.6. SSH 相 關 問 題 CHAPTER 3. IPV4 網 路 設 定 4. 查 看 主 機 名 稱 狀 態 伱 [root@kvm7 ~]# hostnamectl status Static hostname: kvm7.deyu.wang 伳 Icon name: computer-vm Chassis: vm 伵 Machine ID: f3b94871dd51b199acef540e56d84246 Boot ID: cebc9dbf16894e2dad62648165f399b5 伷 Virtualization: kvm Operating System: Red Hat Enterprise Linux Server 7.0 (Maipo) 伹 CPE OS Name: cpe:/o:redhat:enterprise_linux:7.0:ga:server Kernel: Linux 3.10.0-123.el7.x86_64 伱 伱 Architecture: x86_64 5. 主 機 名 稱 儲 存 在 /etc/hostname,v6 版 本 則 儲 存 /etc/sysconfig/network 伱 [root@kvm7 ~]# cat /etc/hostname kvm7.deyu.wang 6. 再 將 主 機 名 稱 設 定 為 kvm7.deyu.wang [root@kvm7 ~]# hostnamectl set-hostname kvm7.deyu.wang 7. 查 看 /etc/hostname, 已 變 更 為 kvm7.deyu.wang 伱 [root@kvm7 ~]# cat /etc/hostname kvm7.deyu.wang 8. 設 定 主 機 名 稱 及 遠 端 連 線 操 作 示 範 3.6 SSH 相 關 問 題 3.6.1 fignerprint 1. 遠 端 主 機 重 建 後, 主 機 指 紋 (fignerprint) 會 不 一 樣,ssh 無 法 登 入, 必 須 刪 除 ~/.ssh/known_hosts 中 信 任 主 機 的 紀 錄, 才 能 重 新 記 錄 新 的 遠 端 主 機 若 直 De-Yu Wang CSIE CYUT 21
3.6. SSH 相 關 問 題 CHAPTER 3. IPV4 網 路 設 定 接 刪 除 ~/.ssh/known_hosts 則 檔 案 中 的 所 有 信 任 主 機 紀 錄 都 刪 除 [dywang@dywssd ~]$ ssh root@kvm7.deyu.wang 伲 key_from_blob: remaining bytes in key blob 3 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 伴 @ WARNING: POSSIBLE DNS SPOOFING DETECTED! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 伶 The RSA host key for kvm7.deyu.wang has changed, and the key for the corresponding IP address 192.168.122.7 伸 is unchanged. This could either mean that DNS SPOOFING is happening or the IP address for the host 伱 估 and its host key have changed at the same time. Offending key for IP in /home/dywang/.ssh/known_hosts:32 伱 伲 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @ 伱 伴 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! 伱 伶 Someone could be eavesdropping on you right now (man-in-themiddle attack)! It is also possible that the RSA host key has just been changed. 伱 伸 The fingerprint for the RSA key sent by the remote host is 0b:57:84:7d:e0:62:d8:80:0f:64:58:22:c5:ba:ee:b8. 伲 估 Please contact your system administrator. Add correct host key in /home/dywang/.ssh/known_hosts to get rid of this message. 伲 伲 Offending key in /home/dywang/.ssh/known_hosts:33 Password authentication is disabled to avoid man-in-the-middle attacks. 伲 伴 Keyboard-interactive authentication is disabled to avoid man-inthe-middle attacks. Permission denied (publickey,gssapi-keyex,gssapi-with-mic, password). 2. 原 因 為 客 戶 端 第 一 次 SSH 連 線 時 已 產 生 一 個 認 證, 如 果 伺 服 器 端 重 灌, 認 證 資 訊 當 然 也 會 更 改, 伺 服 器 端 與 客 戶 端 不 同 時, 就 會 跳 出 此 錯 誤 訊 息 解 決 方 式 為 客 戶 端 重 新 產 生 認 證 伱 [root@dywh ~]# ssh-keygen -R 192.168.122.7 -y 3. 如 果 只 是 練 習 系 統, 沒 有 其 他 信 任 主 機, 也 可 以 直 接 刪 除 ~.ssh/known_hosts, 檔 案 中 的 所 有 信 任 主 機 紀 錄 都 刪 除 De-Yu Wang CSIE CYUT 22
3.6. SSH 相 關 問 題 CHAPTER 3. IPV4 網 路 設 定 伱 [dywang@dywssd ~]$ rm -f /home/dywang/.ssh/known_hosts 3.6.2 UseDNS 1. sshd 預 設 使 用 DNS, 也 就 是 連 線 時 會 使 用 DNS 反 查 IP 的 主 機 名 稱 是 否 匹 配 ssh 遠 端 連 線 回 應 很 慢, 很 可 能 是 反 查 時 花 太 多 的 時 間, 這 時 可 server 的 /etc/ssh/sshd_config 設 定 不 使 用 DNS, 連 線 時 只 要 認 證 成 功 就 可 登 入 伱 [root@kvm5 ~]# vim /etc/ssh/sshd_config [root@kvm5 ~]# grep DNS /etc/ssh/sshd_config 伳 UseDNS no 2. 重 新 啟 動 sshd 服 務 伱 [root@kvm5 ~]# systemctl restart sshd.service 3.6.3 GSSAPIAuthentication 1. 當 使 用 SSH 或 SFTP 連 接 某 台 主 機 時, 會 有 一 系 列 的 檢 查 以 保 證 你 能 連 接 到 你 想 連 接 的 主 機 其 中 一 項 是 reverse lookup on the IP address 檢 查 機 器 名 稱 和 你 要 連 接 的 主 機 名 稱 一 致 否, 會 有 以 下 的 錯 誤 訊 息 伱 reverse mapping checking getaddrinfo for xxx.xxx.xxx.xxx [111.110.110.110] failed - POSSIBLE BREAK-IN ATTEMPT! 2. 編 輯 ssh 設 定 檔, 取 消 GSSAPIAuthentication 認 證, 就 不 會 出 現 此 一 訊 息 伱 [root@dywhd1 ~]# vim /etc/ssh/ssh_config [root@dywhd1 ~]# grep GSSAPIAuth /etc/ssh/ssh_config 伳 GSSAPIAuthentication no 3. 如 果 使 用 publickey 認 證 登 入, 認 證 時 間 非 常 久, 必 須 取 消 GSSAPIAuthentication 認 證 De-Yu Wang CSIE CYUT 23
3.6. SSH 相 關 問 題 CHAPTER 3. IPV4 網 路 設 定 伱 [root@dywhd1 ~]# ssh -o GSSAPIAuthentication=no root@kvm7.deyu. wang 3.6.4 IPTABLES 1. 登 入 主 機 163.17.10.3 連 線 時 間 約 10 秒 伱 [root@dywh ~]# time ssh 163.17.10.3 pwd /root 伳 real 0m10.500s 伵 user 0m0.029s sys 0m0.014s 2. 關 閉 163.17.10.3 的 iptables 防 火 牆 後, 連 線 時 間 不 到 1 秒 伲 [root@dywh ~]# time ssh 163.17.10.3 pwd /root 伴 real 0m0.476s user 0m0.027s 伶 sys 0m0.012s 3. 檢 查 為 iptables nat 的 POSTROUTING 問 題 *nat 伲 -A POSTROUTING -s 192.168.122.0/24 -j MASQUERADE COMMIT 4. 修 改 成 如 下 規 則, 重 新 啟 動 iptables 後,ssh 連 線 正 常 伱 *nat -A POSTROUTING -o virbr0 -j MASQUERADE 伳 COMMIT De-Yu Wang CSIE CYUT 24
3.6. SSH 相 關 問 題 CHAPTER 3. IPV4 網 路 設 定 3.6.5 Connection reset by peer 1. 登 入 主 機 kvm7.deyu.wang 出 現 以 下 訊 息 : 伱 [root@dyw219 ~]# ssh kvm7.deyu.wang Read from socket failed: Connection reset by peer 2. 開 啟 kvm7.deyu.wang 終 端 機, 重 新 產 生 ssh key [root@kvm7 ~]# ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key -N 伲 [root@kvm7 ~]# ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key -N 3. 刪 除 client 端 信 任 主 機 紀 錄 [root@dyw219 ~]# sed -i /kvm7/d.ssh/known_hosts 4. 成 功 登 入 伱 [root@dyw219 ~]# ssh kvm7.deyu.wang Warning: Permanently added kvm7.deyu.wang,192.168.122.7 (RSA) to the list of known hosts. 伳 root@kvm7.deyu.wang s password: Last login: Tue Sep 22 13:10:21 2015 from dynamic5.deyu.wang De-Yu Wang CSIE CYUT 25
3.6. SSH 相 關 問 題 CHAPTER 3. IPV4 網 路 設 定 De-Yu Wang CSIE CYUT 26
CHAPTER 4. VI 編 輯 器 Chapter 4 vi 編 輯 器 4.1 vi 與 vim 1. Linux 的 系 統 中 使 用 文 字 編 輯 器 來 編 輯 您 的 Linux 參 數 設 定 檔 2. Linux 與 Unix 系 統 中 的 參 數 檔 幾 乎 都 是 ASCII 碼 的 純 文 字 檔 3. vi 為 文 書 編 輯 器, vim 是 vi 的 進 階 軟 體 4. vim 加 入 了 支 援 正 規 表 示 法 的 搜 尋 架 構 多 檔 編 輯 區 塊 複 製 等 功 能 5. vim 官 方 網 站 亦 稱 vim 為 程 式 開 發 工 具 6. 大 家 來 學 VIM( 一 個 歷 久 彌 新 的 編 輯 器 ) 4.2 vi 的 使 用 1. vi 共 分 為 三 種 模 式, 分 別 是 一 般 模 式 編 輯 模 式 與 指 令 列 命 令 模 式 三 種 i,o,a,r I,O,A,R 編 輯 模 式 一 般 模 式 [Esc] 可 輸 入 任 何 字 元 游 標 移 動 搜 尋 取 代 刪 除 字 元 刪 除 整 列 :, /,? 指 令 列 模 式 複 製 整 列 貼 上 整 列 讀 取 儲 存 檔 案 其 他 額 外 功 能 2. 簡 易 範 例 (a) 使 用 vi 進 入 一 般 模 式 [dywang@dywoffice tmp]$ vim test.txt De-Yu Wang CSIE CYUT 27
4.2. VI 的 使 用 CHAPTER 4. VI 編 輯 器 (b) 按 下 i 進 入 編 輯 模 式, 開 始 編 輯 文 字 (c) 按 下 [Esc] 按 鈕 回 到 一 般 模 式 (d) 在 一 般 模 式 中 按 下 :x 儲 存 後 離 開 vi 3. 常 用 指 令 列 表 一 般 模 式 移 動 游 標 佨 或 向 左 方 向 鍵 游 標 向 左 移 動 一 個 字 元 佪 或 向 下 方 向 鍵 游 標 向 下 移 動 一 個 字 元 佫 或 向 上 方 向 鍵 游 標 向 上 移 動 一 個 字 元 佬 或 向 右 方 向 鍵 游 標 向 右 移 動 一 個 字 元 [Ctrl]+f 螢 幕 向 前 移 動 一 頁 [Ctrl]+b 螢 幕 向 後 移 動 一 頁 [Ctrl]+d 螢 幕 向 前 移 動 半 頁 [Ctrl]+u 螢 幕 向 後 移 動 半 頁 伫 游 標 移 動 到 非 空 白 字 元 的 下 一 列 伭 游 標 移 動 到 非 空 白 字 元 的 上 一 列 n<space> 按 下 數 字 後 再 按 空 白 鍵, 游 標 會 向 右 移 動 這 一 行 的 佮 個 字 元 例 如 20<space> 則 游 標 會 向 後 面 移 動 伲 估 個 字 元 距 離 估 這 是 數 字 估 : 移 動 到 這 一 行 的 最 前 面 字 元 處 $ 移 動 到 這 一 行 的 最 後 面 字 元 處 佈 游 標 移 動 到 這 個 螢 幕 的 最 上 方 那 一 行 位 游 標 移 動 到 這 個 螢 幕 的 中 央 那 一 行 佌 游 標 移 動 到 這 個 螢 幕 的 最 下 方 那 一 行 佇 游 標 移 動 到 這 個 檔 案 的 最 後 一 行 佮 佇 游 標 移 動 到 這 個 檔 案 的 第 佮 行 例 如 伲 估 佇 則 會 移 動 到 檔 案 的 第 伲 估 行 伨 可 配 合 伺 佳 佥 佴 佮 併 伩 n<enter> 游 標 向 下 移 動 佮 行 一 般 模 式 搜 尋 與 取 代 伯 佷 佯 佲 佤 向 游 標 之 後 尋 找 一 個 字 串 名 稱 為 佷 佯 佲 佤 的 字 串 伿 佷 佯 佲 佤 向 游 標 之 前 尋 找 一 個 字 串 名 稱 為 佷 佯 佲 佤 的 字 串 佮 重 複 前 一 個 搜 尋 低 反 向 進 行 前 一 個 搜 尋 動 作 伺 佮 伱 伬 佮 伲 佳 伯 佷 佯 佲 佤 伱 伯 佷 佯 佲 佤 伲 伯 佧 在 第 佮 伱 與 佮 伲 行 之 間 尋 找 佷 佯 佲 佤 伱 這 個 字 串, 並 將 該 字 串 取 代 為 佷 佯 佲 佤 伲 伺 伱 伬 伤 佳 伯 佷 佯 佲 佤 伱 伯 佷 佯 佲 佤 伲 伯 佧 從 第 一 行 到 最 後 一 行 尋 找 佷 佯 佲 佤 伱 字 串, 並 將 該 字 串 取 代 為 佷 佯 佲 佤 伲 伺 伱 伬 伤 佳 伯 佷 佯 佲 佤 伱 伯 佷 佯 佲 佤 伲 伯 佧 佣 從 第 一 行 到 最 後 一 行 尋 找 佷 佯 佲 佤 伱 字 串, 並 將 該 字 串 取 代 為 佷 佯 佲 佤 伲 且 在 取 代 前 顯 示 提 示 字 元 給 使 用 者 確 認 是 否 需 要 取 代 一 般 模 式 刪 除 複 製 與 貼 上 佸 伬 佘 佸 為 向 後 刪 除 一 個 字 元, 佘 為 向 前 刪 除 一 個 字 元 佮 佸 向 後 刪 除 佮 個 字 元 佤 佤 刪 除 游 標 所 在 的 那 一 整 列 佮 佤 佤 刪 除 游 標 所 在 的 向 下 佮 列, 例 如 伲 估 佤 佤 則 是 刪 除 伲 估 列 佤 伱 佇 刪 除 游 標 所 在 到 第 一 行 的 所 有 資 料 De-Yu Wang CSIE CYUT 28
4.2. VI 的 使 用 CHAPTER 4. VI 編 輯 器 佤 佇 刪 除 游 標 所 在 到 最 後 一 行 的 所 有 資 料 佤 佷 刪 除 一 個 字 伨 佤 佥 佬 佥 佴 佥 佷 佯 佲 佤 伩 不 適 用 於 中 文 佹 佹 複 製 游 標 所 在 的 那 一 行 ( 常 用 ) 佮 佹 佹 複 製 游 標 所 在 的 向 下 佮 列, 例 如 伲 估 佹 佹 則 是 複 製 伲 估 列 佹 伱 佇 複 製 游 標 所 在 列 到 第 一 列 的 所 有 資 料 佹 佇 複 製 游 標 所 在 列 到 最 後 一 列 的 所 有 資 料 佰 伬 佐 佰 為 複 製 的 資 料 在 游 標 下 一 行 貼 上, 佐 則 為 貼 在 游 標 上 一 行 佊 將 游 標 所 在 列 與 下 一 列 的 資 料 結 合 成 同 一 列 併 復 原 前 一 個 動 作 [Ctrl]+r 反 復 原 前 一 個 動 作 伮 重 做 上 一 個 動 作 進 入 編 輯 模 式 佩 伬 佉 插 入 : 佩 伨 佉 伩 在 目 前 的 游 標 所 在 處 伨 所 在 行 第 一 個 非 空 白 字 元 處 伩 插 入 輸 入 之 文 字 ; 佡 伬 佁 增 加 : 佡 伨 佁 伩 由 目 前 游 標 所 在 的 下 一 個 伨 最 後 一 個 伩 字 元 處 開 始 輸 入 : 佯 伬 住 插 入 新 的 一 行 : 佯 伨 住 伩 從 游 標 所 在 的 下 伨 上 伩 一 行 插 入 新 的 一 行 ; 佲 伬 佒 取 代 : 佲 會 取 代 游 標 所 在 的 那 一 個 字 元 ; 佒 會 一 直 取 代 游 標 所 在 的 文 字, 直 到 按 下 佅 体 佃 為 止 ; 佅 佳 佣 退 出 編 輯 模 式, 回 到 一 般 模 式 中 指 令 列 命 令 模 式 伺 佷 將 編 輯 的 資 料 寫 入 硬 碟 檔 案 中 伺 佷 伡 若 檔 案 屬 性 為 唯 讀 時, 強 制 寫 入 該 檔 案 伺 佱 離 開 佶 佩 伺 佱 伡 若 曾 修 改 過 檔 案, 又 不 想 儲 存, 使 用 伡 為 強 制 離 開 不 儲 存 檔 案 伺 佷 佱 儲 存 後 離 開, 若 為 伺 佷 佱 伡 則 為 強 制 儲 存 後 離 開 伺 佸 與 佷 佱 相 同 伺 佥 伡 將 檔 案 還 原 到 最 原 始 的 狀 態 佚 佚 若 檔 案 沒 有 更 動, 則 不 儲 存 離 開, 若 檔 案 已 經 經 過 更 動, 則 儲 存 後 離 開 伺 佷 佛 伌 佬 佥 佮 佡 佭 佥 佝 將 編 輯 的 資 料 儲 存 成 另 一 個 檔 案 ( 類 似 另 存 新 檔 ) 伺 佲 佛 伌 佬 佥 佮 佡 佭 佥 佝 在 編 輯 的 資 料 中, 讀 入 另 一 個 檔 案 的 資 料 亦 即 將 伌 佬 佥 佮 佡 佭 佥 這 個 檔 案 內 容 加 到 游 標 所 在 行 後 面 伺 佳 佥 佴 佮 併 顯 示 行 號, 設 定 之 後, 會 在 每 一 行 的 字 首 顯 示 該 行 的 行 號 伺 佳 佥 佴 佮 佯 佮 併 與 佳 佥 佴 佮 併 相 反, 為 取 消 行 號 伺 佮 伱 伬 佮 伲 佷 佛 伌 佬 佥 佮 佡 佭 佥 佝 將 佮 伱 到 佮 伲 的 內 容 儲 存 成 伌 佬 佥 佮 佡 佭 佥 這 個 檔 案 伺 伡 佣 佯 佭 佭 佡 佮 佤 暫 時 離 開 佶 佩 到 指 令 列 模 式 下 執 行 佣 佯 佭 佭 佡 佮 佤 的 顯 示 結 果 例 如 佛 伺 伡 佬 佳 伯 佨 佯 佭 佥 佝 4. vi 編 輯 中 回 復 與 暫 存 檔 (a) 如 果 編 輯 檔 案 為 /home/csie/vitest.txt, 則 同 時 會 有 一 個 暫 存 檔 /home- /csie/.vitest.txt.swp 產 生, 其 為 隱 藏 檔 (b) 結 束 vi 編 輯 時 暫 存 檔 也 會 刪 除 De-Yu Wang CSIE CYUT 29
4.2. VI 的 使 用 CHAPTER 4. VI 編 輯 器 (c) 若 不 知 因 素 導 致 vi 程 式 中 斷, 則 在 下 次 編 輯 該 檔 案 時 會 出 現 是 否 回 復 的 訊 息 練 習 題 1. vi 有 那 三 種 模 式? Sol. 一 般 模 式 編 輯 模 式 與 指 令 列 模 式 2. 在 vi 一 般 模 式 下, 可 以 那 四 個 字 元 鍵 進 行 游 標 向 左 下 上 右 移 動 一 個 字 元? Sol. h j k l 3. 在 vi 一 般 模 式 下, 如 何 使 螢 幕 向 前 移 動 一 頁? Sol. [Ctrl]+f 4. 在 vi 一 般 模 式 下, 如 何 使 螢 幕 向 後 移 動 一 頁? Sol. [Ctrl]+b 5. 在 vi 一 般 模 式 下, 如 何 使 螢 幕 向 前 移 動 半 頁? Sol. [Ctrl]+d 6. 在 vi 一 般 模 式 下, 如 何 使 螢 幕 向 後 移 動 半 頁? Sol. [Ctrl]+u 7. 在 vi 一 般 模 式 下, 如 何 使 游 標 移 動 到 非 空 白 字 元 的 下 一 列? Sol. 按 + 鍵 8. 在 vi 一 般 模 式 下, 如 何 使 游 標 移 動 到 非 空 白 字 元 的 上 一 列? Sol. 按 - 鍵 9. 在 vi 一 般 模 式 下, 如 何 使 游 標 向 右 移 動 這 一 行 的 12 個 字 元? Sol. 按 12<space> 鍵 10. 在 vi 一 般 模 式 下, 如 何 使 游 標 移 動 到 這 一 行 的 最 前 面 字 元 處? Sol. 按 0 鍵 11. 在 vi 一 般 模 式 下, 如 何 使 游 標 移 動 到 這 一 行 的 最 後 面 字 元 處? Sol. 按 $ 鍵 12. 在 vi 一 般 模 式 下, 如 何 使 游 標 移 動 到 這 個 螢 幕 的 最 上 方 那 一 行? Sol. 按 H 鍵 13. 在 vi 一 般 模 式 下, 如 何 使 游 標 移 動 到 這 個 螢 幕 的 中 央 那 一 行? Sol. 按 M 鍵 14. 在 vi 一 般 模 式 下, 如 何 使 游 標 移 動 到 這 個 螢 幕 的 最 下 方 那 一 行? Sol. 按 L 鍵 15. 在 vi 一 般 模 式 下, 如 何 使 游 標 移 動 到 這 個 螢 幕 的 最 後 一 行? Sol. 按 G 鍵 De-Yu Wang CSIE CYUT 30
4.2. VI 的 使 用 CHAPTER 4. VI 編 輯 器 16. 在 vi 一 般 模 式 下, 如 何 使 游 標 移 動 到 這 個 檔 案 的 第 12 行? Sol. 輸 入 12G 17. 在 vi 一 般 模 式 下, 如 何 使 游 標 游 標 向 下 移 動 12 行? Sol. 輸 入 12<Enter> 18. 在 vi 一 般 模 式 下, 如 何 向 游 標 之 後 尋 找 一 個 字 串 名 稱 為 word 的 字 串, 接 著 重 複 搜 尋? Sol. 輸 入 /word, 接 著 按 n 鍵 19. 在 vi 一 般 模 式 下, 如 何 向 游 標 之 後 尋 找 一 個 字 串 名 稱 為 word 的 字 串, 接 著 反 向 重 複 搜 尋? Sol. 輸 入 /word, 接 著 按 N 鍵 20. 在 vi 一 般 模 式 下, 如 何 向 游 標 之 前 尋 找 一 個 字 串 名 稱 為 word 的 字 串, 接 著 重 複 搜 尋? Sol. 輸 入?word, 接 著 按 n 鍵 21. 在 vi 一 般 模 式 下, 如 何 向 游 標 之 前 尋 找 一 個 字 串 名 稱 為 word 的 字 串, 接 著 反 向 重 複 搜 尋? Sol. 輸 入?word, 接 著 按 N 鍵 22. 在 vi 一 般 模 式 下, 如 何 向 游 標 後 刪 除 一 個 字 元? Sol. 按 x 鍵 23. 在 vi 一 般 模 式 下, 如 何 向 游 標 前 刪 除 一 個 字 元? Sol. 按 X 鍵 24. 在 vi 一 般 模 式 下, 如 何 向 游 標 後 刪 除 12 個 字 元? Sol. 按 12x 鍵 25. 在 vi 一 般 模 式 下, 如 何 向 游 標 前 刪 除 12 個 字 元? Sol. 按 12X 鍵 26. 在 vi 一 般 模 式 下, 如 何 刪 除 游 標 所 在 的 那 一 整 列? Sol. 按 dd 27. 在 vi 一 般 模 式 下, 如 何 刪 除 一 個 字?( 不 適 用 於 中 文 ) Sol. 按 dw 28. 在 vi 一 般 模 式 下, 如 何 刪 除 游 標 所 在 的 向 下 12 列? Sol. 按 12dd 29. 在 vi 一 般 模 式 下, 如 何 刪 除 游 標 所 在 到 最 後 一 行 的 所 有 資 料? Sol. 按 d1g 30. 在 vi 一 般 模 式 下, 如 何 複 製 游 標 所 在 的 那 一 行? Sol. 按 yy De-Yu Wang CSIE CYUT 31
4.2. VI 的 使 用 CHAPTER 4. VI 編 輯 器 31. 在 vi 一 般 模 式 下, 如 何 複 製 游 標 所 在 的 向 下 12 列? Sol. 按 12yy 32. 在 vi 一 般 模 式 下, 如 何 複 製 游 標 所 在 列 到 第 一 列 的 所 有 資 料? Sol. 按 y1g 33. 在 vi 一 般 模 式 下, 如 何 複 製 游 標 所 在 列 到 最 後 一 列 的 所 有 資 料? Sol. 按 yg 34. 在 vi 一 般 模 式 下, 如 何 將 複 製 的 資 料 在 游 標 下 一 行 貼 上? Sol. 按 p 35. 在 vi 一 般 模 式 下, 如 何 將 複 製 的 資 料 在 游 標 上 一 行 貼 上? Sol. 按 P 36. 在 vi 一 般 模 式 下, 如 何 將 游 標 所 在 列 與 下 一 列 的 資 料 結 合 成 同 一 列? Sol. 按 J 37. 我 已 經 在 vi 內 進 行 很 多 動 作, 但 現 在 想 要 復 原, 如 何 做? Sol. 一 直 重 複 按 u 即 可 ; 38. 在 vi 的 一 般 模 式 中, 反 復 原 前 一 個 動 作? Sol. [Ctrl]+r 39. 在 vi 的 一 般 模 式 中, 重 做 前 一 個 動 作? Sol.. 40. vi 如 何 由 一 般 模 式 進 入 編 輯 模 式 ( 在 目 前 游 標 處 插 入 輸 入 之 文 字 )? Sol. i 41. vi 如 何 由 一 般 模 式 進 入 編 輯 模 式 ( 所 在 行 第 一 個 非 空 白 字 元 處 插 入 輸 入 之 文 字 )? Sol. I 42. vi 如 何 由 一 般 模 式 進 入 編 輯 模 式 ( 由 目 前 游 標 所 在 的 下 一 個 字 元 處 開 始 輸 入 )? Sol. a 43. vi 如 何 由 一 般 模 式 進 入 編 輯 模 式 ( 由 目 前 游 標 所 在 的 最 後 一 個 字 元 處 開 始 輸 入 )? Sol. A 44. vi 如 何 由 一 般 模 式 進 入 編 輯 模 式 ( 從 游 標 所 在 的 下 一 行 插 入 新 的 一 行 )? Sol. o 45. vi 如 何 由 一 般 模 式 進 入 編 輯 模 式 ( 從 游 標 所 在 的 上 一 行 插 入 新 的 一 行 )? Sol. O 46. vi 如 何 由 一 般 模 式 進 入 編 輯 模 式 ( 會 取 代 游 標 所 在 的 那 一 個 字 元 )? Sol. r De-Yu Wang CSIE CYUT 32
4.2. VI 的 使 用 CHAPTER 4. VI 編 輯 器 47. vi 如 何 由 一 般 模 式 進 入 編 輯 模 式 ( 會 一 直 取 代 游 標 所 在 的 文 字, 直 到 退 出 編 輯 模 式 )? Sol. R 48. vi 如 何 退 出 編 輯 模 式, 回 到 一 般 模 式 中? Sol. 按 下 ESC 49. 在 vi 的 一 般 模 式 中, 輸 入 13 後 按 Enter 與 輸 入 13 後 按 下 G, 代 表 什 麼 意 義? Sol. 向 下 移 動 13 行, 以 及 去 到 第 13 行 50. 在 vi 的 一 般 模 式 中, 先 以 指 令 將 游 標 移 到 第 13 行, 複 製 13 到 17 行, 再 以 指 令 將 游 標 移 到 第 20 行, 最 後 將 資 料 貼 到 20 行 以 後, 如 何 做? Sol. 13G 5yy 20G p 51. 在 vi 的 一 般 模 式 中, 先 以 指 令 將 游 標 移 到 第 50 行, 刪 除 50 到 55 行, 如 何 做? Sol. 50G 6dd 52. 在 vi 的 一 般 模 式 中, 如 何 以 指 令 將 游 標 移 到 第 5 行, 再 連 結 第 5, 6 行? Sol. 5G J 53. 在 vi 的 一 般 模 式, 輸 入 /find 代 表 什 麼 意 義? 另 外, 輸 入 j 又 代 表 什 麼 意 義? 輸 入 5k 代 表 什 麼 Sol. 搜 尋 find 這 個 字 串 ; 向 下 移 動 : 向 上 移 動 5 個 字 元 54. 在 vi 的 一 般 模 式 中, 我 想 要 取 代 目 前 檔 案 第 100 到 200 行 之 間 的 test 成 為 TEST 且 不 詢 問, 要 如 何 做? Sol. :100,200s/test/TEST/g 55. 在 vi 的 一 般 模 式 中, 我 想 要 取 代 目 前 檔 案 第 100 到 200 行 之 間 的 test 成 為 TEST 且 取 代 前 詢 問, 要 如 何 做? Sol. :100,200s/test/TEST/gc 56. 在 vi 的 一 般 模 式 中, 我 想 要 取 代 目 前 檔 案 第 1 到 最 後 一 行 之 間 的 test 成 為 TEST 且 不 詢 問, 要 如 何 做? Sol. :1,$s/test/TEST/g 57. 在 vi 的 一 般 模 式 中, 我 想 要 取 代 目 前 檔 案 第 1 到 最 後 一 行 之 間 的 test 成 為 TEST 且 取 代 前 詢 問, 要 如 何 做? Sol. :1,$s/test/TEST/gc 58. 在 vi 的 一 般 模 式 中, 如 何 儲 存 並 結 束 檔 案 後 離 開? Sol. 在 一 般 模 式 下 執 行 :wq 或 :x 59. 在 vi 的 指 令 列 模 式 中, :q! 代 表 什 麼 意 思? Sol. 不 儲 存, 強 制 離 開 vi De-Yu Wang CSIE CYUT 33
4.2. VI 的 使 用 CHAPTER 4. VI 編 輯 器 60. 在 vi 的 一 般 模 式 當 中, 輸 入 ZZ 代 表 什 麼 意 思? Sol. 若 檔 案 已 更 動, 則 儲 存 後 離 開, 若 未 被 更 動, 則 直 接 離 開 vi 61. 在 vi 的 一 般 模 式 中, 如 何 將 編 輯 的 資 料 寫 入 硬 碟 檔 案 中? Sol. 輸 入 :w 62. 在 vi 的 一 般 模 式 中, 如 何 將 目 前 編 輯 的 檔 案 另 存 為 file1.txt? Sol. 輸 入 :w file1.txt 63. 在 vi 的 一 般 模 式 中, 若 目 前 編 輯 的 檔 案 為 唯 讀 檔, 如 何 強 制 存 回? Sol. 輸 入 :w! 64. 在 vi 的 一 般 模 式 中, 如 何 離 開 vi? Sol. 輸 入 :q 65. 在 vi 的 一 般 模 式 中, 如 何 強 制 離 開 不 儲 存 檔 案? Sol. 輸 入 :q! 66. 在 vi 的 一 般 模 式 中, 如 何 儲 存 後 離 開? Sol. 輸 入 :wq 或 :x 67. 在 vi 的 一 般 模 式 中, 如 何 強 制 儲 存 後 離 開? Sol. 輸 入 :wq! 或 :x! 68. 在 vi 的 一 般 模 式 中, 如 何 將 目 前 編 輯 的 檔 案 還 原 到 原 始 狀 態? Sol. 輸 入 :e! 69. 在 vi 的 一 般 模 式 中, 如 何 設 定 顯 示 行 號? Sol. 輸 入 :set nu 70. 在 vi 的 一 般 模 式 中, 如 何 取 消 設 定 顯 示 行 號? Sol. 輸 入 :set nonu 71. 在 vi 的 一 般 模 式 中, 如 何 讀 取 另 一 檔 案 file.txt? Sol. 輸 入 :r file.txt 72. 在 vi 的 一 般 模 式 中, 如 何 將 10 到 20 的 內 容 儲 存 成 file1.txt 這 個 檔 案? Sol. 輸 入 :10,20 w file1.txt 73. 在 vi 的 一 般 模 式 中, 如 何 將 10 到 最 後 一 行 的 內 容 儲 存 成 file1.txt 這 個 檔 案? Sol. 輸 入 :10,$ w file1.txt 74. 在 vi 的 一 般 模 式 中, 如 何 暫 時 離 開, 執 行 指 令 ls -l? Sol. 輸 入 :! ls -l 75. 在 vi 編 輯 檔 案 file.txt 中, 同 時 會 產 生 一 暫 存 檔, 其 檔 名 為 何? Sol..file.txt.swp De-Yu Wang CSIE CYUT 34
4.3. VIM 的 額 外 功 能 CHAPTER 4. VI 編 輯 器 76. 如 果 要 以 vi 編 輯 檔 案 file.txt 時, 出 現 是 否 回 復 的 訊 息, 表 示 有 那 個 暫 存 檔 存 在? Sol..file.txt.swp 4.3 vim 的 額 外 功 能 1. 如 果 使 用 vi, 在 畫 面 右 下 角 有 目 前 游 標 所 在 行 列 號 碼, 則 vi 已 被 vim 取 代 了 伱 [dywang@dywoffice tmp]$ ll /bin/vi* lrwxrwxrwx 1 root root 20 Oct 17 13:11 /bin/vi -> /etc/ alternatives/vi* 伳 lrwxrwxrwx 1 root root 21 Oct 17 13:11 /bin/vim -> /etc/ alternatives/vim* [dywang@dywoffice tmp]$ ll /etc/alternatives/vi* 伵 lrwxrwxrwx 1 root root 21 Oct 17 13:11 /etc/alternatives/vi -> /usr/bin/vim-enhanced* 伷 lrwxrwxrwx 1 root root 21 Oct 17 13:11 /etc/alternatives/vim -> /usr/bin/vim-enhanced* 2. vim 具 有 顏 色 顯 示 的 功 能, 並 且 還 支 援 許 多 的 程 式 語 法 3. vim /etc/man.config 出 現 訊 息 說 明 : "/etc/man.config" [readonly] 150L, 4900C 1,1 Top (a) 編 輯 檔 案 名 稱 為 /etc/man.config; (b) 檔 案 為 唯 讀 檔 ; (c) 檔 案 共 有 150 行,4900 字 元 ; (d) 目 前 游 標 所 在 位 置 為 第 一 行, 第 一 列 ; (e) 目 前 頁 面 在 最 前 頁 4. 區 塊 選 擇 區 塊 選 擇 的 按 鍵 意 義 v 字 元 選 擇, 會 將 游 標 經 過 的 地 方 反 白 選 擇 V 行 選 擇, 會 將 游 標 經 過 的 反 白 選 擇 [Ctrl]+v 區 塊 選 擇, 可 以 用 長 方 形 的 方 式 選 擇 資 料 y 將 反 白 的 地 方 複 製 起 來 d 將 反 白 的 地 方 刪 除 掉 De-Yu Wang CSIE CYUT 35
4.3. VIM 的 額 外 功 能 CHAPTER 4. VI 編 輯 器 5. 多 檔 案 編 輯 (a) vi 內 使 用 :r filename 可 將 檔 案 filename 的 內 容 在 游 標 處 插 入 (b) 可 於 vim 後 接 多 個 檔 案 來 同 時 開 啟 多 個 檔 案, 例 如 :vim filename1 filename2 filename3 其 相 關 按 鍵 有 : 多 檔 案 編 輯 的 按 鍵 :n 編 輯 下 一 個 檔 案 :N 編 輯 上 一 個 檔 案 :files 列 出 目 前 開 啟 的 所 有 檔 案 6. 多 視 窗 功 能 (a) 在 指 令 列 模 式 輸 入 :sp filename (b) 如 果 省 略 filename 則 兩 視 窗 為 同 一 檔 案 多 視 窗 下 的 按 鍵 功 能 :sp 開 啟 同 一 檔 案 於 新 視 窗 :sp filename 開 啟 檔 案 filename 於 新 視 窗 [Ctrl]+wj 游 標 移 動 到 下 方 的 視 窗 按 法 為 : 先 按 下 [Ctrl] 不 放, 再 下 w 後 放 開 所 有 的 按 鍵, 然 後 再 按 下 j [Ctrl]+wk 游 標 移 動 到 上 方 的 視 窗 按 法 為 同 上 [Ctrl]+wq 結 束 下 方 視 窗, 與 [Ctrl]+w 移 動 到 下 方 視 窗 後, 再 按 下 :q 離 開 相 同 7. vim 環 境 設 定 (a) 個 人 動 作 記 錄 檔 案 :~/.viminfo 例 如 : 編 輯 同 一 檔 案 時, 游 標 會 在 上 次 退 出 時 的 位 置 (b) 整 體 vim 的 設 定 值 放 在 /etc/vimrc (c) 若 要 更 改 vim 設 定, 建 議 自 行 建 立 ~/.vimrc vim 的 環 境 設 定 參 數 :set nu 設 定 行 號 :set nonu 取 消 定 行 號 :set hlsearch 將 搜 尋 的 字 串 反 白 :set autoindent 自 動 縮 排 :set noautoindent 不 自 動 縮 排 :set backup 自 動 儲 存 備 份 備 份 檔 名 為 filename~ :set rule 顯 示 右 下 角 的 狀 態 說 明 :set showmode 顯 示 --insert-- 等 字 眼 在 左 下 角 的 狀 態 列 :set backspace=(012) 2 利 用 backspace 例 退 鍵 除 任 意 字 元 ; 0 或 1 僅 可 刪 除 剛 剛 輸 入 的 字 元 :set all 顯 示 目 前 所 有 的 環 境 參 數 設 定 值 :syntax (off on) 是 否 依 據 程 式 相 關 語 法 顯 示 不 同 顏 色 De-Yu Wang CSIE CYUT 36
4.3. VIM 的 額 外 功 能 CHAPTER 4. VI 編 輯 器 練 習 題 1. 在 vim 的 一 般 模 式 中, 如 何 將 游 標 經 過 的 地 方 反 白 選 擇? Sol. 按 v 2. 在 vim 的 一 般 模 式 中, 如 何 將 游 標 經 過 的 反 白 選 擇? Sol. 按 V 3. 在 vim 的 一 般 模 式 中, 如 何 進 入 區 塊 選 擇 ( 長 方 形 ) 環 境? Sol. [Ctrl]+v 4. 在 vim 的 一 般 模 式 中, 區 塊 選 擇 後, 要 將 反 白 的 區 塊 複 製, 需 按 什 麼 鍵? Sol. y 5. 在 vim 的 一 般 模 式 中, 區 塊 選 擇 後, 要 將 反 白 的 區 塊 刪 除, 需 按 什 麼 鍵? Sol. d 6. vim 在 多 檔 編 輯 時, 如 何 列 出 開 啟 的 所 有 檔 案? Sol. :files 7. vim 如 何 將 檔 案 filename 的 內 容 在 游 標 處 插 入? Sol. :r filename 8. 如 何 在 啟 動 vim 時, 同 時 編 輯 file1 與 file2 兩 個 檔 案? Sol. vim file1 file2 9. vim 在 多 檔 案 編 輯 時, 如 何 編 輯 下 一 個 檔 案? Sol. 按 :n 10. vim 在 多 檔 案 編 輯 時, 如 何 編 輯 上 一 個 檔 案? Sol. 按 :N 11. vim 如 何 開 啟 同 一 檔 案 於 新 視 窗? Sol. :sp 12. vim 如 何 開 啟 檔 案 filename 於 新 視 窗? Sol. :sp filename 13. vim 在 多 視 窗 下, 如 何 將 檔 游 標 移 動 到 上 方 的 視 窗? Sol. 先 按 [Ctrl] 不 放, 再 按 w 後, 放 開 所 有 按 鍵, 再 按 下 k 14. vim 在 多 視 窗 下, 如 何 將 檔 游 標 移 動 到 下 方 的 視 窗? Sol. 先 按 [Ctrl] 不 放, 再 按 w 後, 放 開 所 有 按 鍵, 再 按 下 j 15. vim 個 人 動 作 記 錄 檔 案 為 何 ( 請 寫 出 目 錄 / 檔 名 )? Sol. ~/.viminfo 16. 整 體 vim 的 設 定 檔 案 為 何 ( 請 寫 出 目 錄 / 檔 名 )? Sol. /etc/vimrc 17. 若 要 更 改 vim 設 定, 可 以 在 自 己 的 家 目 錄 建 立 那 個 檔 案? Sol. ~/.vimrc De-Yu Wang CSIE CYUT 37
4.4. VI 實 機 練 習 題 CHAPTER 4. VI 編 輯 器 4.4 vi 實 機 練 習 題 4.4.1 練 習 一 1. 在 自 己 的 家 目 錄 建 立 一 個 新 的 目 錄 zzz 2. 進 入 目 錄 zzz 3. 下 載 檔 案 viex1.txt, 並 重 新 命 名 為 vi1.txt 4. 使 用 vi 或 vim 編 輯 vi1.txt, 執 行 以 下 動 作 : (a) 先 到 第 10 行 (b) 複 製 3 行 (c) 再 到 第 20 行, 往 下 貼 上 (d) 再 到 最 後 一 行, 往 下 產 生 一 行 空 白 行 方 式 進 入 " 插 入 " 模 式 進 行 編 輯 (e) 加 入 文 字 ABCDEabcde (f) 換 行 再 加 入 1234567890 (g) 搜 尋 字 串 "MANPATH", 並 將 其 取 代 為 "manpath" (h) 存 檔 後 退 出 4.4.2 練 習 二 1. 在 自 己 的 家 目 錄 建 立 一 個 新 的 目 錄 zzz 2. 進 入 目 錄 zzz 3. 下 載 檔 案 viex2.txt, 並 重 新 命 名 為 vi2.txt 4. 使 用 vi 或 vim 編 輯 vi2.txt, 執 行 以 下 動 作 : (a) 先 到 第 5 行 (b) 刪 除 3 行 (c) 再 到 第 30 行, 往 上 貼 上 (d) 再 到 第 一 行, 往 上 產 生 一 行 空 白 行 方 式 進 入 " 插 入 " 模 式 進 行 編 輯 (e) 加 入 文 字 ABCDEabcde (f) 換 行 再 加 入 1234567890 (g) 從 第 30 行 至 最 後 一 行 搜 尋 字 串 "MANPATH", 並 將 其 取 代 為 "manpath" (h) 存 檔 後 退 出 De-Yu Wang CSIE CYUT 38
4.4. VI 實 機 練 習 題 CHAPTER 4. VI 編 輯 器 4.4.3 練 習 三 1. 在 自 己 的 家 目 錄 建 立 一 個 新 的 目 錄 zzz 2. 進 入 目 錄 zzz 3. 下 載 檔 案 viex3.txt, 並 重 新 命 名 為 vi3.txt 4. 使 用 vi 或 vim 編 輯 vi3.txt, 執 行 以 下 動 作 : (a) 先 到 第 35 行 (b) 將 下 一 行 合 併 至 這 一 行 (c) 再 到 第 20 行, 刪 除 這 一 行 到 第 一 行 的 資 料 (d) 再 到 第 10 行, 在 這 行 的 最 後 加 入 文 字 ABCDEabcde (e) 換 行 再 加 入 1234567890 (f) 從 第 30 行 至 第 55 行 搜 尋 字 串 "man", 並 將 其 取 代 為 "MAN" (g) 存 檔 後 退 出 De-Yu Wang CSIE CYUT 39
4.4. VI 實 機 練 習 題 CHAPTER 4. VI 編 輯 器 De-Yu Wang CSIE CYUT 40
CHAPTER 5. YUM 線 上 升 級 機 制 Chapter 5 YUM 線 上 升 級 機 制 5.1 yum 容 器 設 定 1. 撰 寫 yum 的 套 件 容 器 (repository) 設 定 檔.repo, 以 建 立 yum 安 裝 來 源 伱 [root@kvm7 ~]# vim /etc/yum.repos.d/dywang.repo [dywang] 伳 name=de-yu WANG baseurl=http://dywang.csie.cyut.edu.tw/centos7 伵 gpgcheck=0 enabled=1 伷 # [base: 容 器 的 名 稱, 中 刮 號 一 定 要 存 在, 名 稱 可 以 自 訂 但 不 可 重 複 ] 伹 # : 說 明 這 個 容 器 的 意 義 name # mirrorlist: 列 出 這 個 容 器 可 以 使 用 的 映 射 站 台, 如 果 不 想 使 用, 可 以 註 解 到 這 行 ;= 伱 伱 # baseurl: 指 定 固 定 容 器 的 實 際 網 址 = # enable: 啟 動 容 器 如 果 不 想 啟 動 可 以 使 用 =1 enable =0 伱 伳 # gpgcheck: 指 定 是 否 需 要 查 閱 =1 RPM 檔 案 內 的 數 位 簽 章 # gpgkey: 數 位 簽 章 的 公 鑰 檔 所 在 位 置 = 2. 列 出 yum 使 用 的 所 有 容 器 [root@dywh ~]# yum repolist all 伲 Loaded plugins: fastestmirror, refresh-packagekit Determining fastest mirrors 伴 dywang 1.9 kb 00:00... dywang/primary 920 kb 00:00... 伶 dywang De-Yu Wang CSIE CYUT 41
5.2. YUM 查 詢 功 能 CHAPTER 5. YUM 線 上 升 級 機 制 1803/1803 repo id repo name status 伸 dywang De-Yu Wang enabled: 1,803 repolist: 1,803 3. 容 器 資 料 刪 除 伱 伳 伵 [root@dywh ~]# yum clean [packages headers all] 選 項 與 參 數 :: 將 已 下 載 的 軟 體 檔 案 刪 除 packages headers : 將 下 載 的 軟 體 檔 頭 刪 除 all : 將 所 有 容 器 資 料 都 刪 除 伷 # 刪 除 已 下 載 過 的 所 有 容 器 的 相 關 資 料 含 軟 體 本 身 與 清 單 () [root@dywh ~]# yum clean all 5.2 yum 查 詢 功 能 1. 查 詢 選 項 : [root@dywh ~]# yum [options] [command] [package...] 伲 [option: 主 要 的 搜 尋 選 項 有 :] 查 詢 工 作 項 目 [] 相 關 參 數 : 這 方 面 的 參 數 有 :[] 伴 search : 搜 尋 某 個 套 件 名 稱 或 是 描 述 (description) 的 重 要 關 鍵 字 ; list : 列 出 目 前 yum 所 管 理 的 所 有 的 套 件 名 稱 與 版 本, 有 點 類 似 rpm -;qa 伶 info : 列 出 套 件 的 相 關 訊 息, 類 似 rpm -qai 的 執 行 結 果 ; provides or : 搜 尋 包 含 某 檔 案 的 套 件, 類 似 whatprovides rpm -qf 的 功 能 2. 查 詢 名 稱 或 是 描 述 中 包 含 關 鍵 字 cjk 的 套 件 伱 伳 [root@dywh ~]# yum search cjk Loaded plugins: fastestmirror, refresh-packagekit Loading mirror speeds from cached hostfile ================================= Matched: cjk ================================= De-Yu Wang CSIE CYUT 42
5.2. YUM 查 詢 功 能 CHAPTER 5. YUM 線 上 升 級 機 制 伵 伷 伹 伱 伱 伱 伳 伱 伵 伱 伷 cjkuni-fonts-common.noarch : Common package of CJK Unifonts cjkuni-ukai-fonts.noarch : Chinese Unicode TrueType font in Kai face cjkuni-uming-fonts.noarch : Chinese Unicode TrueType font in Ming face texlive-cjk.noarch : CJK language support poppler-data.noarch : Encoding files texlive-arphic.noarch : Arphic (Chinese) font packages texlive-arphic-fedora-fonts.noarch : Fonts for arphic texlive-dvipdfmx.noarch : An extended version of dvipdfm texlive-garuda-c90.noarch : TeX support (from CJK) for the garuda font in : thailatex texlive-norasi-c90.noarch : TeX support (from CJK) for the norasi font in : thailatex texlive-wadalab.noarch : Wadalab (Japanese) font packages texlive-wadalab-fedora-fonts.noarch : Fonts for wadalab 3. 查 看 套 件 cjkuni-ukai-fonts 的 相 關 訊 息 [root@dywh ~]# yum info cjkuni-ukai-fonts 伲 Loaded plugins: refresh-packagekit, rhnplugin This system is not registered with RHN. 伴 RHN support will be disabled. Available Packages 伶 Name : cjkuni-ukai-fonts Arch : noarch 伸 Version : 0.2.20080216.1 Release : 34.el6 伱 估 Size : 9.4 M Repo : dywang 在 安 裝 來 源 <== 中 尚 未 安 裝, 若 安 裝 會 顯 示 dywanginstalled 伱 伲 Summary : Chinese Unicode TrueType font in Kai face URL : http://www.freedesktop.org/wiki/software/cjkunifonts 伱 伴 License : Arphic Description: 伱 伶 : CJK Unifonts are Unicode TrueType fonts derived from original fonts : made available by Arphic Technology under "Arphic Public License" 伱 伸 : and extended by the CJK Unifonts project. : 伲 估 : CJK Unifonts in Kai face. 4. 列 出 所 有 evince 開 頭 的 套 件 De-Yu Wang CSIE CYUT 43
5.2. YUM 查 詢 功 能 CHAPTER 5. YUM 線 上 升 級 機 制 [root@dywh ~]# yum list evince* 伲 Loaded plugins: fastestmirror, refresh-packagekit Loading mirror speeds from cached hostfile 伴 Installed Packages evince.x86_64 2.30.3-3.fc13 @anaconda-de-yuwang -201208252046.x86_64/6.0 伶 evince-dvi.x86_64 2.30.3-3.fc13 @dywang evince-libs.x86_64 2.30.3-3.fc13 @anaconda-de-yuwang -201208252046.x86_64/6.0 5. 列 出 可 升 級 的 evince 開 頭 的 套 件, 套 件 庫 中 只 有 一 個 版 本, 所 以 查 不 到 更 新 版 本 伱 [root@dywh ~]# yum list updates evince* Loaded plugins: fastestmirror, refresh-packagekit 伳 Loading mirror speeds from cached hostfile Error: No matching Packages to list 6. 列 出 包 含 檔 案 bin/evince 的 所 有 套 件, 例 如 /usr/bin/evince [root@dywh ~]# yum provides *bin/evince 伲 Loaded plugins: fastestmirror, refresh-packagekit Loading mirror speeds from cached hostfile 伴 dywang/filelists 1.3 MB 00:00... evince-2.30.3-3.fc13.x86_64 : Document viewer 伶 Repo : dywang Matched from: 伸 Filename : /usr/bin/evince 伱 估 伱 伲 伱 伴 evince-2.30.3-3.fc13.x86_64 : Document viewer Repo : installed Matched from: Filename : /usr/bin/evince De-Yu Wang CSIE CYUT 44
5.3. YUM 安 裝 升 級 與 移 除 CHAPTER 5. YUM 線 上 升 級 機 制 5.3 yum 安 裝 升 級 與 移 除 1. 安 裝 / 升 級 選 項 伱 [root@www ~]# yum command [packages] command: 伳 install 安 裝 : reinstall 重 新 安 裝 : 伵 update 升 級, 若 要 整 個 系 統 都 升 級, 後 不 接 套 件 : remove 移 除 : 2. 安 裝 伲 伴 伶 伸 [root@dywh ~]# yum install cjkuni-ukai-fonts Setting up Install Process Resolving Dependencies --> Running transaction check ---> Package cjkuni-ukai-fonts.noarch 0:0.2.20080216.1-34.el6 set to be updated --> Finished Dependency Resolution Dependencies Resolved 伱 估 ================================================================================ Package Arch Version Repository Size 伱 伲 ================================================================================ Installing: 伱 伴 cjkuni-ukai-fonts noarch 0.2.20080216.1-34.el6 dywang 9.4 M 伱 伶 Transaction Summary ================================================================================ 伱 伸 Install 1 Package(s) Upgrade 0 Package(s) 伲 估 Total download size: 9.4 M 伲 伲 Installed size: 17 M Is this ok [y/n]: y 伲 伴 Downloading Packages: cjkuni-ukai-fonts-0.2.20080216.1-34.el6.noarch.rpm 9.4 MB 00:41 伲 伶 Running rpm_check_debug De-Yu Wang CSIE CYUT 45
5.3. YUM 安 裝 升 級 與 移 除 CHAPTER 5. YUM 線 上 升 級 機 制 Running Transaction Test 伲 伸 Transaction Test Succeeded Running Transaction 伳 估 Installing : cjkuni-ukai-fonts-0.2.20080216.1-34.el6.noarch 1/1 伳 伲 伳 伴 Installed: cjkuni-ukai-fonts.noarch 0:0.2.20080216.1-34.el6 Complete! 3. 移 除 功 能 :yum [remove] 軟 體 伱 伳 伵 伷 [root@dywh ~]# yum remove cjkuni-ukai-fonts Resolving Dependencies --> Running transaction check ---> Package cjkuni-ukai-fonts.noarch 0:0.2.20080216.1-34.el6 set to be erased --> Finished Dependency Resolution Dependencies Resolved 伹 ============================================================================ Package Arch Version Repository Size 伱 伱 ============================================================================ Removing: 伱 伳 cjkuni-ukai-fonts noarch 0.2.20080216.1-34.el6 @dywang 17 M 伱 伵 Transaction Summary ============================================================================ 伱 伷 Remove 1 Package(s) Reinstall 0 Package(s) 伱 伹 Downgrade 0 Package(s) 伲 伱 伲 伳 伲 伵 伲 伷 Is this ok [y/n]: y Downloading Packages: Running rpm_check_debug Running Transaction Test Transaction Test Succeeded Running Transaction Warning: RPMDB altered outside of yum. kernel-firmware-2.6.32-71.29.1.el6.noarch is a duplicate with kernel-firmware-2.6.32-71.el6.noarch De-Yu Wang CSIE CYUT 46
5.3. YUM 安 裝 升 級 與 移 除 CHAPTER 5. YUM 線 上 升 級 機 制 伲 伹 伳 伱 伳 伳 rhn-check-1.0.0-38.el6.noarch has missing requires of yum-rhnplugin >= ( 0, 0.5.3, 30 ) Erasing : cjkuni-ukai-fonts-0.2.20080216.1-34.el6.noarch 1/1 Removed: cjkuni-ukai-fonts.noarch 0:0.2.20080216.1-34.el6 伳 伵 Complete! De-Yu Wang CSIE CYUT 47
5.3. YUM 安 裝 升 級 與 移 除 CHAPTER 5. YUM 線 上 升 級 機 制 De-Yu Wang CSIE CYUT 48
CHAPTER 6. SELINUX Chapter 6 SELinux 6.1 設 計 原 由 1. 自 主 式 存 取 控 制 (Discretionary Access Control, DAC) (a) 傳 統 的 檔 案 權 限 與 帳 號 關 係 : 依 據 程 序 的 擁 有 者 與 檔 案 資 源 的 rwx 權 限 來 決 定 有 無 存 取 的 能 力 (b) 若 該 程 序 屬 root 權 限, 則 其 可 在 系 統 上 進 任 何 資 源 存 取 (c) 若 某 個 目 錄 權 限 為 777, 則 任 何 帳 號 的 程 序 都 可 任 意 存 取 及 寫 入 2. 系 統 出 現 問 題 (a) 內 部 員 工 的 資 源 誤 用 遠 高 於 外 部 攻 擊 (b) 員 工 資 源 誤 用 : 系 統 管 理 員 為 了 自 己 方 便, 將 防 火 牆 完 全 關 閉 或 某 個 檔 案 目 錄 的 權 限 設 定 為 777 (c) 為 控 管 員 工 資 源 誤 用 問 題, 美 國 國 家 安 全 局 (NSA) 開 發 安 全 增 強 式 Linux(SELinux, Security-Enhanced Linux) 模 組, 並 整 合 到 Linux 核 心 (d) SELinux 是 一 種 強 制 存 取 控 制 (mandatory access control, MAC) 的 實 現 3. 強 制 存 取 控 制 (a) 針 對 特 定 的 程 序 與 特 定 的 檔 案 資 源 進 行 權 限 的 控 管 (b) WWW server 啟 動 的 程 序 為 httpd,selinux 預 設 僅 能 在 /var/www 目 錄 下 存 取 檔 案 6.2 啟 動 關 閉 與 觀 察 1. SELinux 開 機 啟 動 模 式 De-Yu Wang CSIE CYUT 49
6.2. 啟 動 關 閉 與 觀 察 CHAPTER 6. SELINUX 伱 [root@kvm7 ~]# vim /etc/selinux/config [root@kvm7 ~]# cat /etc/selinux/config 伳 # This file controls the state of SELinux on the system. 伵 # SELINUX= can take one of these three values: # enforcing - SELinux security policy is enforced. 伷 # permissive - SELinux prints warnings instead of enforcing. # disabled - No SELinux policy is loaded. 伹 SELINUX=enforcing # SELINUXTYPE= can take one of three two values: 伱 伱 # targeted - Targeted processes are protected, # minimum - Modification of targeted policy. Only selected processes are protected. 伱 伳 # mls - Multi Level Security protection. SELINUXTYPE=targeted 2. 關 察 目 前 SELinux 狀 態 [root@kvm7 ~]# sestatus 伲 SELinux status: enabled SELinuxfs mount: /sys/fs/selinux 伴 SELinux root directory: /etc/selinux Loaded policy name: targeted 伶 Current mode: enforcing Mode from config file: enforcing 伸 Policy MLS status: enabled Policy deny_unknown status: allowed 伱 估 Max kernel policy version: 28 3. 改 變 SELinux 模 式 [root@kvm7 ~]# getenforce 伲 Enforcing [root@kvm7 ~]# setenforce 0 伴 [root@kvm7 ~]# getenforce Permissive 伶 [root@kvm7 ~]# setenforce 1 [root@kvm7 ~]# getenforce 伸 Enforcing De-Yu Wang CSIE CYUT 50
6.3. SELINUX CONTEXTS CHAPTER 6. SELINUX 6.3 SELinux Contexts 1. Display Contexts [root@deyu ~]# ps axz grep sshd 伲 system_u:system_r:sshd_t:s0-s0:c0.c1023 2054? Ss 0:00 /usr/ sbin/sshd #user:role:type:range 伴 #for a process, the type is also called the domain of the process 伶 [root@deyu ~]# ls -Z anaconda-ks.cfg -rw-------. root root system_u:object_r:admin_home_t:s0 anacondaks.cfg 2. 安 裝 套 件 伱 [root@kvm5 ~]# yum install httpd -y 3. 啟 動 httpd 服 務, 並 設 定 開 機 啟 動 伱 [root@deyu ~]# systemctl enable httpd.service ln -s /usr/lib/systemd/system/httpd.service /etc/systemd/ system/multi-user.target.wants/httpd.service 伳 [root@deyu ~]# systemctl start httpd 4. File s context depends on where it was created 伱 [root@deyu ~]# cal > ~/index.html [root@deyu ~]# cal > /var/www/html/index.html 伳 [root@deyu ~]# ls -Z ~/index.html /var/www/html/index.html -rw-r--r--. root root unconfined_u:object_r:admin_home_t:s0 /root /index.html 伵 -rw-r--r--. root root unconfined_u:object_r:httpd_sys_content_t: s0 /var/www/html/index.html [root@deyu ~]# ls -Zd ~ /var/www/html 伷 dr-xr-x---. root root system_u:object_r:admin_home_t:s0 /root drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 / var/www/html De-Yu Wang CSIE CYUT 51
6.3. SELINUX CONTEXTS CHAPTER 6. SELINUX 5. 測 試 httpd 檔 案 [root@deyu ~]# curl http://127.0.0.1/index.html 伲 December 2011 Su Mo Tu We Th Fr Sa 伴 1 2 3 4 5 6 7 8 9 10 伶 11 12 13 14 15 16 17 18 19 20 21 22 23 24 伸 25 26 27 28 29 30 31 伱 估 伱 伲 [root@deyu ~]# mv index.html /var/www/html/index.html mv: overwrite /var/www/html/index.html? y [root@deyu ~]# curl http://127.0.0.1/index.html 伱 伴 <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html><head> 伱 伶 <title>403 Forbidden</title> </head><body> 伱 伸 <h1>forbidden</h1> <p>you don t have permission to access /index.html 伲 估 on this server.</p> <hr> 伲 伲 <address>apache/2.2.15 (CentOS) Server at 127.0.0.1 Port 80</ address> </body></html> 6. Change index.html SELinux security context 伱 [root@deyu ~]# ls -Z /var/www/html/index.html -rw-r--r--. root root unconfined_u:object_r:admin_home_t:s0 /var/ www/html/index.html 伳 [root@deyu ~]# chcon -t httpd_sys_content_t /var/www/html/index. html [root@deyu ~]# ls -Z /var/www/html/index.html 伵 -rw-r--r--. root root unconfined_u:object_r:httpd_sys_content_t: s0 /var/www/html/index.html [root@deyu ~]# curl http://127.0.0.1/index.html 伷 December 2011 Su Mo Tu We Th Fr Sa 伹 1 2 3 4 5 6 7 8 9 10 伱 伱 11 12 13 14 15 16 17 18 19 20 21 22 23 24 伱 伳 25 26 27 28 29 30 31 De-Yu Wang CSIE CYUT 52
6.3. SELINUX CONTEXTS CHAPTER 6. SELINUX 7. Restore the context of index.html 伱 伳 伵 [root@deyu ~]# cal > ~/index.html [root@deyu ~]# mv index.html /var/www/html/index.html mv: overwrite /var/www/html/index.html? y [root@deyu ~]# restorecon -Rv /var/www/html/index.html restorecon reset /var/www/html/index.html context unconfined_u: object_r:admin_home_t:s0->system_u:object_r: httpd_sys_content_t:s0 伷 [root@deyu ~]# curl http://127.0.0.1/index.html December 2011 伹 Su Mo Tu We Th Fr Sa 1 2 3 伱 伱 4 5 6 7 8 9 10 11 12 13 14 15 16 17 伱 伳 18 19 20 21 22 23 24 25 26 27 28 29 30 31 De-Yu Wang CSIE CYUT 53
6.3. SELINUX CONTEXTS CHAPTER 6. SELINUX De-Yu Wang CSIE CYUT 54
CHAPTER 7. FDISK 硬 碟 分 割 Chapter 7 fdisk 硬 碟 分 割 7.1 前 言 1. 在 v6 執 行 fdisk 命 令, 建 議 使 用 -uc 選 項, 否 則 分 割 硬 碟 時 總 會 出 現 分 割 區 間 夾 著 一 個 無 法 使 用 的 section, 造 成 分 割 困 擾 2. 在 v6 使 用 fdisk 存 好 分 割 表 後, 總 是 要 重 新 開 機, 分 割 表 才 能 生 效, 即 使 使 用 partprobe, kpartx 等 命 令 偵 測 分 割 區 也 沒 用 不 過 後 來 找 到 partx 加 上 -a 選 項 可 以 在 不 重 新 開 機 的 情 況 下, 將 新 的 分 割 表 載 到 核 心 中 3. v7 已 解 決 上 述 兩 項 問 題 7.2 v6 fdisk 使 用 1. fdisk 命 令 分 割 硬 碟, 不 使 用 -uc 選 項 出 現 警 告 訊 息, 且 每 一 個 partition 都 不 是 結 束 於 cylinder 的 邊 界, 這 會 造 成 分 割 時 的 困 擾 伲 伴 伶 伸 伱 估 伱 伲 伱 伴 [root@kvm8 ~]# fdisk /dev/vda WARNING: DOS-compatible mode is deprecated. It s strongly recommended to switch off the mode (command c ) and change display units to sectors (command u ). Command (m for help): p Disk /dev/vda: 4294 MB, 4294967296 bytes 16 heads, 63 sectors/track, 8322 cylinders Units = cylinders of 1008 * 512 = 516096 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x0006a798 De-Yu Wang CSIE CYUT 55
7.2. V6 FDISK 使 用 CHAPTER 7. FDISK 硬 碟 分 割 伱 伶 Device Boot Start End Blocks Id System /dev/vda1 * 3 198 98304 83 Linux 伱 伸 Partition 1 does not end on cylinder boundary. /dev/vda2 198 8056 3960576 8e Linux LVM 伲 估 Partition 2 does not end on cylinder boundary. /dev/vda3 8056 8320 133120 8e Linux LVM 伲 伲 Partition 3 does not end on cylinder boundary. 2. fdisk 命 令 分 割 硬 碟, 使 用 -uc 選 項 伲 伴 伶 伸 伱 估 [root@kvm8 ~]# fdisk -uc /dev/vda Command (m for help): p Disk /dev/vda: 4294 MB, 4294967296 bytes 16 heads, 63 sectors/track, 8322 cylinders, total 8388608 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x0005fdc8 伱 伲 Device Boot Start End Blocks Id System /dev/vda1 * 2048 198655 98304 83 Linux 伱 伴 /dev/vda2 198656 8119807 3960576 8e Linux LVM /dev/vda3 8119808 8386047 133120 8e Linux LVM 伱 伶 Command (m for help): n 伱 伸 Command action e extended 伲 估 p primary partition (1-4) p 伲 伲 Selected partition 4 First sector (8386048-8388607, default 8386048): 伲 伴 Using default value 8386048 Last sector, +sectors or +size{k,m,g} (8386048-8388607, default 8388607): +1M 伲 伶 Command (m for help): p 伲 伸 Disk /dev/vda: 4294 MB, 4294967296 bytes 伳 估 16 heads, 63 sectors/track, 8322 cylinders, total 8388608 sectors Units = sectors of 1 * 512 = 512 bytes 伳 伲 Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes 伳 伴 Disk identifier: 0x0005fdc8 伳 伶 Device Boot Start End Blocks Id System De-Yu Wang CSIE CYUT 56
7.2. V6 FDISK 使 用 CHAPTER 7. FDISK 硬 碟 分 割 /dev/vda1 * 2048 198655 98304 83 Linux 伳 伸 /dev/vda2 198656 8119807 3960576 8e Linux LVM /dev/vda3 8119808 8386047 133120 8e Linux LVM 伴 估 /dev/vda4 8386048 8388095 1024 83 Linux 伴 伲 Command (m for help): w The partition table has been altered! 伴 伴 Calling ioctl() to re-read partition table. 伴 伶 WARNING: Re-reading the partition table failed with error 16: Device or resource busy. 伴 伸 The kernel still uses the old table. The new table will be used at the next reboot or after you run partprobe(8) or kpartx(8) 伵 估 Syncing disks. 3. 依 據 警 告 訊 息 使 用 partprobe 偵 測 新 分 割 區 無 效 [root@kvm8 ~]# partprobe 伲 Warning: WARNING: the kernel failed to re-read the partition table on /dev/vda (Device or resource busy). 伴 As a result, it may not reflect all of your changes until after reboot. 4. 依 據 警 告 訊 息 使 用 kpartx 偵 測 新 分 割 區 無 效, 使 用 partx 偵 測 也 無 效 [root@kvm8 ~]# kpartx /dev/vda 伲 vda1 : 0 196608 /dev/vda 2048 vda2 : 0 7921152 /dev/vda 198656 伴 vda3 : 0 266240 /dev/vda 8119808 vda4 : 0 2048 /dev/vda 8386048 伶 [root@kvm8 ~]# partx /dev/vda # 1: 2048-198655 ( 196608 sectors, 100 MB) 伸 # 2: 198656-8119807 ( 7921152 sectors, 4055 MB) # 3: 8119808-8386047 ( 266240 sectors, 136 MB) 伱 估 # 4: 8386048-8388095 ( 2048 sectors, 1 MB) 5. /dev/vda4 仍 然 沒 有 出 現 De-Yu Wang CSIE CYUT 57
7.2. V6 FDISK 使 用 CHAPTER 7. FDISK 硬 碟 分 割 [root@kvm8 ~]# ll /dev/vda* 伲 brw-rw----. 1 root disk 252, 0 Dec 19 09:25 /dev/vda brw-rw----. 1 root disk 252, 1 Dec 8 14:25 /dev/vda1 伴 brw-rw----. 1 root disk 252, 2 Dec 8 14:25 /dev/vda2 brw-rw----. 1 root disk 252, 3 Dec 8 14:25 /dev/vda3 6. 使 用 partx 加 上 -a 選 項 有 效, 可 以 不 重 新 開 機 將 新 的 分 割 區 /dev/vda4 加 到 分 割 表 中 伱 [root@kvm8 ~]# partx -va /dev/vda device /dev/vda: start 0 size 8388608 伳 gpt: 0 slices dos: 4 slices 伵 # 1: 2048-198655 ( 196608 sectors, 100 MB) # 2: 198656-8119807 ( 7921152 sectors, 4055 MB) 伷 # 3: 8119808-8386047 ( 266240 sectors, 136 MB) # 4: 8386048-8388095 ( 2048 sectors, 1 MB) 伹 BLKPG: Device or resource busy error adding partition 1 伱 伱 BLKPG: Device or resource busy 伱 伳 error adding partition 2 BLKPG: Device or resource busy error adding partition 3 伱 伵 added partition 4 7. 已 經 看 到 /dev/vda4 伱 [root@kvm8 ~]# ll /dev/vda* brw-rw----. 1 root disk 252, 0 Dec 19 09:25 /dev/vda 伳 brw-rw----. 1 root disk 252, 1 Dec 8 14:25 /dev/vda1 brw-rw----. 1 root disk 252, 2 Dec 8 14:25 /dev/vda2 伵 brw-rw----. 1 root disk 252, 3 Dec 8 14:25 /dev/vda3 brw-rw----. 1 root disk 252, 4 Dec 19 09:27 /dev/vda4 8. 格 式 化 /dev/vda4 成 功 伲 伴 [root@kvm8 ~]# mkfs.ext4 /dev/vda4 mke2fs 1.41.12 (17-May-2010) Filesystem label= OS type: Linux De-Yu Wang CSIE CYUT 58
7.3. V7 FDISK 使 用 CHAPTER 7. FDISK 硬 碟 分 割 伶 伸 伱 估 伱 伲 伱 伴 伱 伶 Block size=1024 (log=0) Fragment size=1024 (log=0) Stride=0 blocks, Stripe width=0 blocks 128 inodes, 1024 blocks 51 blocks (4.98%) reserved for the super user First data block=1 Maximum filesystem blocks=1048576 1 block group 8192 blocks per group, 8192 fragments per group 128 inodes per group Writing inode tables: done 伱 伸 Filesystem too small for a journal Writing superblocks and filesystem accounting information: done 伲 估 This filesystem will be automatically checked every 23 mounts or 伲 伲 180 days, whichever comes first. Use tune2fs -c or -i to override. 7.3 v7 fdisk 使 用 1. 查 看 硬 碟 編 號 為 vda [root@kvm7 ~]# lsblk 伲 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT vda 252:0 0 4G 0 disk 伴 vda1 252:1 0 200M 0 part /boot vda2 252:2 0 3.4G 0 part 伶 vg_kvm7usb-swap 253:0 0 124M 0 lvm [SWAP] vg_kvm7usb-root 253:1 0 3.1G 0 lvm / 伸 vda3 252:3 0 130M 0 part vg_kvm7home-vo 253:2 0 80M 0 lvm /home 2. fdisk 命 令 分 割 硬 碟, 不 必 再 使 用 -uc 選 項 伱 伳 伵 [root@kvm7 ~]# fdisk /dev/vda Welcome to fdisk (util-linux 2.23.2). Changes will remain in memory only, until you decide to write them. Be careful before using the write command. De-Yu Wang CSIE CYUT 59
7.3. V7 FDISK 使 用 CHAPTER 7. FDISK 硬 碟 分 割 3. 執 行 m 可 以 列 出 所 有 指 令 伱 Command (m for help): m Command action 伳 a toggle a bootable flag b edit bsd disklabel 伵 c toggle the dos compatibility flag d delete a partition 伷 g create a new empty GPT partition table G create an IRIX (SGI) partition table 伹 l list known partition types m print this menu 伱 伱 n add a new partition o create a new empty DOS partition table 伱 伳 p print the partition table q quit without saving changes 伱 伵 s create a new empty Sun disklabel t change a partition s system id 伱 伷 u change display/entry units v verify the partition table 伱 伹 w write table to disk and exit x extra functionality (experts only) 4. 執 行 p 列 出 分 割 表, 建 議 每 一 動 作 結 束 都 使 用 p 查 看 分 割 表 伱 Command (m for help): p 伳 Disk /dev/vda: 4294 MB, 4294967296 bytes, 8388608 sectors Units = sectors of 1 * 512 = 512 bytes 伵 Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes 伷 Disk label type: dos Disk identifier: 0x000a59f4 伹 Device Boot Start End Blocks Id System 伱 伱 /dev/vda1 * 2048 411647 204800 83 Linux /dev/vda2 411648 7579647 3584000 8e Linux LVM 伱 伳 /dev/vda3 7579648 7845887 133120 8e Linux LVM 5. 執 行 n 新 增 分 割 區,MBR 只 能 有 記 錄 四 個 分 割 區, 若 有 五 個 以 上 分 割 區, 必 De-Yu Wang CSIE CYUT 60
7.3. V7 FDISK 使 用 CHAPTER 7. FDISK 硬 碟 分 割 須 使 用 extended 擴 展 分 割 區 伱 Command (m for help): n Partition type: 伳 p primary (3 primary, 0 extended, 1 free) e extended 伵 Select (default e): Using default response e 伷 Selected partition 4 First sector (7845888-8388607, default 7845888): 伹 Using default value 7845888 Last sector, +sectors or +size{k,m,g} (7845888-8388607, default 8388607): 伱 伱 Using default value 8388607 Partition 4 of type Extended and of size 265 MiB is set 伱 伳 Command (m for help): p 伱 伵 Disk /dev/vda: 4294 MB, 4294967296 bytes, 8388608 sectors 伱 伷 Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes 伱 伹 I/O size (minimum/optimal): 512 bytes / 512 bytes Disk label type: dos 伲 伱 Disk identifier: 0x000a59f4 伲 伳 Device Boot Start End Blocks Id System /dev/vda1 * 2048 411647 204800 83 Linux 伲 伵 /dev/vda2 411648 7579647 3584000 8e Linux LVM /dev/vda3 7579648 7845887 133120 8e Linux LVM 伲 伷 /dev/vda4 7845888 8388607 271360 5 Extended 6. 執 行 n 新 增 分 割 區, 因 MBR 已 記 錄 4 筆 分 割 區, 故 強 制 使 用 logical 分 割 區 伱 Command (m for help): n All primary partitions are in use 伳 Adding logical partition 5 First sector (7847936-8388607, default 7847936): 伵 Using default value 7847936 Last sector, +sectors or +size{k,m,g} (7847936-8388607, default 8388607): +10M 伷 Partition 5 of type Linux and of size 10 MiB is set 伹 伱 伱 Command (m for help): p Disk /dev/vda: 4294 MB, 4294967296 bytes, 8388608 sectors De-Yu Wang CSIE CYUT 61
7.3. V7 FDISK 使 用 CHAPTER 7. FDISK 硬 碟 分 割 Units = sectors of 1 * 512 = 512 bytes 伱 伳 Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes 伱 伵 Disk label type: dos Disk identifier: 0x000a59f4 伱 伷 Device Boot Start End Blocks Id System 伱 伹 /dev/vda1 * 2048 411647 204800 83 Linux /dev/vda2 411648 7579647 3584000 8e Linux LVM 伲 伱 /dev/vda3 7579648 7845887 133120 8e Linux LVM /dev/vda4 7845888 8388607 271360 5 Extended 伲 伳 /dev/vda5 7847936 7868415 10240 83 Linux 7. 執 行 t 改 變 分 割 區 系 統 ID, 設 定 為 82 Linux swap 分 割 區 伱 伳 Command (m for help): t Partition number (1-5, default 5): Hex code (type L to list all codes): L 伵 0 Empty 24 NEC DOS 81 Minix / old Lin bf Solaris 1 FAT12 27 Hidden NTFS Win 82 Linux swap / So c1 DRDOS/sec (FAT- 伷 2 XENIX root 39 Plan 9 83 Linux c4 DRDOS/sec (FAT- 3 XENIX usr 3c PartitionMagic 84 OS/2 hidden C: c6 DRDOS/sec (FAT- 伹 4 FAT16 <32M 40 Venix 80286 85 Linux extended c7 Syrinx 5 Extended 41 PPC PReP Boot 86 NTFS volume set da Non-FS data 伱 伱 6 FAT16 42 SFS 87 NTFS volume set db CP/M / CTOS /. 7 HPFS/NTFS/exFAT 4d QNX4.x 88 Linux plaintext de Dell Utility 伱 伳 8 AIX 4e QNX4.x 2nd part 8e Linux LVM df BootIt 9 AIX bootable 4f QNX4.x 3rd part 93 Amoeba e1 DOS access 伱 伵 a OS/2 Boot Manag 50 OnTrack DM 94 Amoeba BBT e3 DOS R/O b W95 FAT32 51 OnTrack DM6 Aux 9f BSD/OS e4 SpeedStor 伱 伷 c W95 FAT32 (LBA) 52 CP/M a0 IBM Thinkpad hi eb BeOS fs e W95 FAT16 (LBA) 53 OnTrack DM6 Aux a5 FreeBSD ee GPT De-Yu Wang CSIE CYUT 62
7.3. V7 FDISK 使 用 CHAPTER 7. FDISK 硬 碟 分 割 伱 伹 f W95 Ext d (LBA) 54 OnTrackDM6 a6 OpenBSD ef EFI (FAT-12/16/ 10 OPUS 55 EZ-Drive a7 NeXTSTEP f0 Linux/PA-RISC b 伲 伱 11 Hidden FAT12 56 Golden Bow a8 Darwin UFS f1 SpeedStor 12 Compaq diagnost 5c Priam Edisk a9 NetBSD f4 SpeedStor 伲 伳 14 Hidden FAT16 <3 61 SpeedStor ab Darwin boot f2 DOS secondary 16 Hidden FAT16 63 GNU HURD or Sys af HFS / HFS+ fb VMware VMFS 伲 伵 17 Hidden HPFS/NTF 64 Novell Netware b7 BSDI fs fc VMware VMKCORE 18 AST SmartSleep 65 Novell Netware b8 BSDI swap fd Linux raid auto 伲 伷 1b Hidden W95 FAT3 70 DiskSecure Mult bb Boot Wizard hid fe LANstep 1c Hidden W95 FAT3 75 PC/IX be Solaris boot ff BBT 伲 伹 1e Hidden W95 FAT1 80 Old Minix Hex code (type L to list all codes): 82 伳 伱 Changed type of partition Linux to Linux swap / Solaris 伳 伳 Command (m for help): p 伳 伵 Disk /dev/vda: 4294 MB, 4294967296 bytes, 8388608 sectors Units = sectors of 1 * 512 = 512 bytes 伳 伷 Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes 伳 伹 Disk label type: dos Disk identifier: 0x000a59f4 伴 伱 Device Boot Start End Blocks Id System 伴 伳 /dev/vda1 * 2048 411647 204800 83 Linux /dev/vda2 411648 7579647 3584000 8e Linux LVM 伴 伵 /dev/vda3 7579648 7845887 133120 8e Linux LVM /dev/vda4 7845888 8388607 271360 5 Extended 伴 伷 /dev/vda5 7847936 7868415 10240 82 Linux swap / Solaris 8. 執 行 w 儲 存 分 割 表 後 退 出, 一 樣 出 現 警 告 訊 息 伱 伳 伵 Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. De-Yu Wang CSIE CYUT 63
7.3. V7 FDISK 使 用 CHAPTER 7. FDISK 硬 碟 分 割 WARNING: Re-reading the partition table failed with error 16: Device or resource busy. 伷 The kernel still uses the old table. The new table will be used at the next reboot or after you run partprobe(8) or kpartx(8) 伹 Syncing disks. 9. 依 照 警 告 訊 息 執 行 partprobe 及 kpartx 伱 [root@kvm7 ~]# partprobe /dev/vda [root@kvm7 ~]# kpartx /dev/vda 伳 vda1 : 0 409600 /dev/vda 2048 vda2 : 0 7168000 /dev/vda 411648 伵 vda3 : 0 266240 /dev/vda 7579648 vda4 : 0 2 /dev/vda 7845888 伷 vda5 : 0 20480 /dev/vda 7847936 [root@kvm7 ~]# 10. 列 出 分 割 表, 已 出 現 剛 剛 分 割 的 新 分 割 區 [root@kvm7 ~]# lsblk 伲 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT vda 252:0 0 4G 0 disk 伴 vda1 252:1 0 200M 0 part /boot vda2 252:2 0 3.4G 0 part 伶 vg_kvm7usb-swap 253:0 0 124M 0 lvm [SWAP] vg_kvm7usb-root 253:1 0 3.1G 0 lvm / 伸 vda3 252:3 0 130M 0 part vg_kvm7home-vo 253:2 0 80M 0 lvm /home 伱 估 vda4 252:4 0 1K 0 part vda5 252:5 0 10M 0 part 11. 沒 有 重 新 開 機, 直 接 格 式 化 分 割 區 /dev/vda5 為 swap 伱 [root@kvm7 ~]# mkswap /dev/vda5 Setting up swapspace version 1, size = 10236 KiB 伳 no label, UUID=d9b87380-fcf6-4c59-8421-130e3749a0a3 De-Yu Wang CSIE CYUT 64
7.3. V7 FDISK 使 用 CHAPTER 7. FDISK 硬 碟 分 割 12. 建 立 開 機 自 動 掛 載 /dev/vda5 為 swap 伱 [root@kvm7 ~]# vim /etc/fstab /dev/vda5 swap swap defaults 0 0 13. 檢 查 目 前 swap 只 有 dm-0 大 小 為 126972 bytes [root@kvm7 ~]# swapon -s 伲 Filename Type Size Used Priority /dev/dm-0 partition 126972 0-1 14. 重 新 掛 載 /etc/fstab 上 的 swap 分 割 區,v7 不 再 警 告 已 掛 載 的 swap 伱 [root@kvm7 ~]# swapon -a 15. 檢 查 swap 已 出 現 /dev/vda5 的 swap, 大 小 為 10236 bytes 伱 [root@kvm7 ~]# swapon -s Filename Type Size Used Priority 伳 /dev/dm-0 partition 126972 0-1 /dev/vda5 partition 10236 0-2 De-Yu Wang CSIE CYUT 65
7.3. V7 FDISK 使 用 CHAPTER 7. FDISK 硬 碟 分 割 De-Yu Wang CSIE CYUT 66
CHAPTER 8. 邏 輯 捲 軸 管 理 員 Chapter 8 邏 輯 捲 軸 管 理 員 8.1 前 言 1. 何 謂 LVM? LVM (Logical Volume Manager): 邏 輯 捲 軸 管 理 員 LVM 目 的 為 彈 性 進 行 filesystem 的 擴 充 或 縮 小 2. PV, PE, VG, LV 的 意 義 Physical Volume, PV, 實 體 捲 軸 :partition 時 需 要 調 整 系 統 識 別 碼 (system ID) 成 為 8e (LVM 的 識 別 碼 ) Volume Group, VG, 捲 軸 群 組 : 將 許 多 PV 整 合 而 成 Physical Extend, PE, 實 體 延 伸 區 塊 :LVM 最 小 的 儲 存 區 塊 Logical Volume, LV, 邏 輯 捲 軸 : 從 VG 切 割 而 成, 為 最 後 可 被 格 式 化 使 用 之 格 式,LV 的 裝 置 檔 名 通 常 指 定 為 /dev/vgname/lvname 的 樣 式 PE PE PE PE PE PE LV PE PE PE PE PE PE PE PE PE PE PE PE PE PE PE PE PE PE PE PE PE PE PE PE PE PE PE PE PE PE PV PV PV VG De-Yu Wang CSIE CYUT 67
8.2. 邏 輯 捲 軸 管 理 CHAPTER 8. 邏 輯 捲 軸 管 理 員 8.2 邏 輯 捲 軸 管 理 8.2.1 縮 小 LV 標 準 作 法 1. 查 看 要 縮 小 LV vg_kvm7home-vo 掛 載 在 /home, 大 小 為 74M ( 80M ) [root@kvm7 ~]# df -h 伲 Filesystem Size Used Avail Use% Mounted on /dev/mapper/vg_kvm7usb-root 3.1G 1.1G 1.8G 37% / 伴 devtmpfs 487M 0 487M 0% /dev tmpfs 497M 0 497M 0% /dev/shm 伶 tmpfs 497M 6.6M 491M 2% /run tmpfs 497M 0 497M 0% /sys/fs/cgroup 伸 /dev/vda1 197M 107M 90M 55% /boot /dev/mapper/vg_kvm7home-vo 74M 1.6M 68M 3% /home 伱 估 /dev/mapper/vg_mnt-pub 24M 0 24M 0% /mnt/pub 2. 卸 載 LV vg_kvm7home-vo [root@kvm7 ~]# umount /dev/vg_kvm7home/vo 3. 先 resize LV vg_kvm7home-vo 檔 案 系 統 為 30M 伱 [root@kvm7 ~]# resize2fs -f /dev/vg_kvm7home/vo 30M resize2fs 1.42.9 (28-Dec-2013) 伳 Resizing the filesystem on /dev/vg_kvm7home/vo to 30720 (1k) blocks. The filesystem on /dev/vg_kvm7home/vo is now 30720 blocks long. 4. 再 resize LV vg_kvm7home-vo 為 30M, 縮 小 時 此 命 令 一 定 要 在 resize2fs 命 令 之 後 執 行, 放 大 時 則 順 序 相 反 伲 伴 伶 [root@kvm7 ~]# lvresize -L 30M /dev/vg_kvm7home/vo WARNING: Reducing active logical volume to 30.00 MiB THIS MAY DESTROY YOUR DATA (filesystem etc.) Do you really want to reduce vo? [y/n]: y Size of logical volume vg_kvm7home/vo changed from 80.00 MiB (40 extents) to 30.00 MiB (15 extents). Logical volume vo successfully resized De-Yu Wang CSIE CYUT 68
8.2. 邏 輯 捲 軸 管 理 CHAPTER 8. 邏 輯 捲 軸 管 理 員 5. 再 檢 查 LV vg_kvm7home-vo 大 小 為 24M ( 30M ) [root@kvm7 ~]# df -h 伲 Filesystem Size Used Avail Use% Mounted on /dev/mapper/vg_kvm7usb-root 3.1G 1.1G 1.8G 37% / 伴 devtmpfs 487M 0 487M 0% /dev tmpfs 497M 0 497M 0% /dev/shm 伶 tmpfs 497M 6.6M 491M 2% /run tmpfs 497M 0 497M 0% /sys/fs/cgroup 伸 /dev/vda1 197M 107M 90M 55% /boot /dev/mapper/vg_mnt-pub 24M 0 24M 0% /mnt/pub 伱 估 /dev/mapper/vg_kvm7home-vo 25M 784K 23M 4% /home 8.2.2 放 大 LV 標 準 作 法 1. 查 看 要 放 大 LV vg_kvm7home-vo 掛 載 在 /home, 大 小 為 24M ( 30M ) [root@kvm7 ~]# df -h 伲 Filesystem Size Used Avail Use% Mounted on /dev/mapper/vg_kvm7usb-root 3.1G 1.1G 1.8G 37% / 伴 devtmpfs 487M 0 487M 0% /dev tmpfs 497M 0 497M 0% /dev/shm 伶 tmpfs 497M 6.6M 491M 2% /run tmpfs 497M 0 497M 0% /sys/fs/cgroup 伸 /dev/vda1 197M 107M 90M 55% /boot /dev/mapper/vg_mnt-pub 24M 0 24M 0% /mnt/pub 伱 估 /dev/mapper/vg_kvm7home-vo 25M 784K 23M 4% /home 2. 先 resize LV vg_kvm7home-vo 為 100M, 放 大 時 此 命 令 一 定 要 在 resize2fs 命 令 之 前 執 行, 縮 小 時 則 順 序 相 反 [root@kvm7 ~]# lvextend -L 100M /dev/vg_kvm7home/vo 伲 Size of logical volume vg_kvm7home/vo changed from 30.00 MiB (15 extents) to 100.00 MiB (50 extents). Logical volume vo successfully resized De-Yu Wang CSIE CYUT 69
8.2. 邏 輯 捲 軸 管 理 CHAPTER 8. 邏 輯 捲 軸 管 理 員 3. 再 resize LV vg_kvm7home-vo 檔 案 系 統, 不 必 輸 入 大 小, 檔 案 系 統 會 依 已 extend 的 LV resize 伱 [root@kvm7 ~]# resize2fs -f /dev/vg_kvm7home/vo resize2fs 1.42.9 (28-Dec-2013) 伳 Filesystem at /dev/vg_kvm7home/vo is mounted on /home; on-line resizing required old_desc_blocks = 1, new_desc_blocks = 1 伵 The filesystem on /dev/vg_kvm7home/vo is now 102400 blocks long. 4. 再 檢 查 LV vg_kvm7home-vo 大 小 為 93M ( 100M ) 伱 [root@kvm7 ~]# df -h Filesystem Size Used Avail Use% Mounted on 伳 /dev/mapper/vg_kvm7usb-root 3.1G 1.1G 1.8G 37% / devtmpfs 487M 0 487M 0% /dev 伵 tmpfs 497M 0 497M 0% /dev/shm tmpfs 497M 6.6M 491M 2% /run 伷 tmpfs 497M 0 497M 0% /sys/fs/cgroup /dev/vda1 197M 107M 90M 55% /boot 伹 /dev/mapper/vg_mnt-pub 24M 0 24M 0% /mnt/pub /dev/mapper/vg_kvm7home-vo 93M 1.6M 87M 2% /home 8.2.3 單 一 指 令 放 大 縮 小 LV 1. 以 lvresize 指 令 一 次 完 成 放 大 或 縮 小 特 別 注 意!lv 放 大 縮 小 應 先 卸 載, 無 法 卸 載 的 分 割 區, 盡 量 不 要 使 用 此 方 法 做 例 如 根 目 錄 無 法 卸 載, 且 lvm 相 關 命 令 在 /sbin 目 錄 下, 直 接 將 掛 載 根 目 錄 / 的 分 割 區, 做 放 大 縮 小, 風 險 非 常 高, 可 能 造 成 資 料 的 損 壞 2. 先 檢 查 LV vg_kvm7home-vo 大 小 為 93M ( 100M ) [root@kvm7 ~]# df -h 伲 Filesystem Size Used Avail Use% Mounted on /dev/mapper/vg_kvm7usb-root 3.1G 1.1G 1.8G 37% / 伴 devtmpfs 487M 0 487M 0% /dev tmpfs 497M 0 497M 0% /dev/shm 伶 tmpfs 497M 6.6M 491M 2% /run tmpfs 497M 0 497M 0% /sys/fs/cgroup 伸 /dev/vda1 197M 107M 90M 55% /boot /dev/mapper/vg_mnt-pub 24M 0 24M 0% /mnt/pub 伱 估 /dev/mapper/vg_kvm7home-vo 93M 1.6M 87M 2% /home De-Yu Wang CSIE CYUT 70
8.2. 邏 輯 捲 軸 管 理 CHAPTER 8. 邏 輯 捲 軸 管 理 員 3. 以 單 一 指 令 lvresize 將 LV vg_kvm7home-vo 大 小 改 為 40M, 不 用 理 會 是 放 大 還 是 縮 小, 其 中 -r 選 項 是 一 併 執 行 resize2fs 的 命 令 [root@kvm7 ~]# lvresize -L 40M -r /dev/vg_kvm7home/vo 伲 Do you want to unmount "/home"? [Y n] y fsck from util-linux 2.23.2 伴 /dev/mapper/vg_kvm7home-vo: 11/26624 files (9.1% non-contiguous), 9015/102400 blocks resize2fs 1.42.9 (28-Dec-2013) 伶 Resizing the filesystem on /dev/mapper/vg_kvm7home-vo to 40960 (1 k) blocks. The filesystem on /dev/mapper/vg_kvm7home-vo is now 40960 blocks long. 伸 Size of logical volume vg_kvm7home/vo changed from 100.00 MiB (50 extents) to 40.00 MiB (20 extents). 伱 估 Logical volume vo successfully resized 4. 再 檢 查 LV vg_kvm7home-vo 大 小 為 35M ( 40M ) [root@kvm7 ~]# df -h 伲 Filesystem Size Used Avail Use% Mounted on /dev/mapper/vg_kvm7usb-root 3.1G 1.1G 1.8G 37% / 伴 devtmpfs 487M 0 487M 0% /dev tmpfs 497M 0 497M 0% /dev/shm 伶 tmpfs 497M 6.6M 491M 2% /run tmpfs 497M 0 497M 0% /sys/fs/cgroup 伸 /dev/vda1 197M 107M 90M 55% /boot /dev/mapper/vg_mnt-pub 24M 0 24M 0% /mnt/pub 伱 估 /dev/mapper/vg_kvm7home-vo 35M 784K 32M 3% /home 5. 以 單 一 指 令 lvresize 將 LV vg_kvm7home-vo 大 小 改 為 80M, 不 用 理 會 是 放 大 還 是 縮 小, 其 中 -r 選 項 是 一 併 執 行 resize2fs 的 命 令 伲 伴 [root@kvm7 ~]# lvresize -L 80M -r /dev/vg_kvm7home/vo Size of logical volume vg_kvm7home/vo changed from 40.00 MiB (20 extents) to 80.00 MiB (40 extents). Logical volume vo successfully resized resize2fs 1.42.9 (28-Dec-2013) De-Yu Wang CSIE CYUT 71
8.3. 生 邏 輯 捲 冊 CHAPTER 8. 邏 輯 捲 軸 管 理 員 Filesystem at /dev/mapper/vg_kvm7home-vo is mounted on /home; online resizing required 伶 old_desc_blocks = 1, new_desc_blocks = 1 The filesystem on /dev/mapper/vg_kvm7home-vo is now 81920 blocks long. 6. 再 檢 查 LV vg_kvm7home-vo 大 小 為 74M ( 80M ) [root@kvm7 ~]# df -h 伲 Filesystem Size Used Avail Use% Mounted on /dev/mapper/vg_kvm7usb-root 3.1G 1.1G 1.8G 37% / 伴 devtmpfs 487M 0 487M 0% /dev tmpfs 497M 0 497M 0% /dev/shm 伶 tmpfs 497M 6.6M 491M 2% /run tmpfs 497M 0 497M 0% /sys/fs/cgroup 伸 /dev/vda1 197M 107M 90M 55% /boot /dev/mapper/vg_mnt-pub 24M 0 24M 0% /mnt/pub 伱 估 /dev/mapper/vg_kvm7home-vo 74M 1.6M 68M 3% /home 8.3 生 邏 輯 捲 冊 1. 檢 查 硬 碟 分 割 區, 確 認 硬 碟 編 號 為 /dev/vda [root@kvm7 ~]# lsblk 伲 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT vda 252:0 0 4G 0 disk 伴 vda1 252:1 0 200M 0 part /boot vda2 252:2 0 3.4G 0 part 伶 vg_kvm7usb-swap 253:0 0 124M 0 lvm [SWAP] vg_kvm7usb-root 253:1 0 3.1G 0 lvm / 伸 vda3 252:3 0 130M 0 part vg_kvm7home-vo 253:2 0 30M 0 lvm /home 伱 估 vda4 252:4 0 1K 0 part vda5 252:5 0 10M 0 part [SWAP] 2. fdisk /dev/vda 建 立 LVM partitions 伱 [root@kvm7 ~]# fdisk /dev/vda Welcome to fdisk (util-linux 2.23.2). De-Yu Wang CSIE CYUT 72
8.3. 生 邏 輯 捲 冊 CHAPTER 8. 邏 輯 捲 軸 管 理 員 伳 伵 伷 伹 伱 伱 伱 伳 伱 伵 Changes will remain in memory only, until you decide to write them. Be careful before using the write command. Command (m for help): p Disk /dev/vda: 4294 MB, 4294967296 bytes, 8388608 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk label type: dos Disk identifier: 0x000cd485 伱 伷 Device Boot Start End Blocks Id System /dev/vda1 * 2048 411647 204800 83 Linux 伱 伹 /dev/vda2 411648 7579647 3584000 8e Linux LVM /dev/vda3 7579648 7845887 133120 8e Linux LVM 伲 伱 /dev/vda4 7845888 8388607 271360 5 Extended /dev/vda5 7847936 7868415 10240 82 Linux swap / Solaris 伲 伳 Command (m for help): n 伲 伵 All primary partitions are in use Adding logical partition 6 伲 伷 First sector (7870464-8388607, default 7870464): Using default value 7870464 伲 伹 Last sector, +sectors or +size{k,m,g} (7870464-8388607, default 8388607): Using default value 8388607 伳 伱 Partition 6 of type Linux and of size 253 MiB is set 伳 伳 Command (m for help): p 伳 伵 Disk /dev/vda: 4294 MB, 4294967296 bytes, 8388608 sectors Units = sectors of 1 * 512 = 512 bytes 伳 伷 Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes 伳 伹 Disk label type: dos Disk identifier: 0x000cd485 伴 伱 Device Boot Start End Blocks Id System 伴 伳 /dev/vda1 * 2048 411647 204800 83 Linux /dev/vda2 411648 7579647 3584000 8e Linux LVM 伴 伵 /dev/vda3 7579648 7845887 133120 8e Linux LVM /dev/vda4 7845888 8388607 271360 5 Extended 伴 伷 /dev/vda5 7847936 7868415 10240 82 Linux swap / Solaris /dev/vda6 7870464 8388607 259072 83 Linux 伴 伹 Command (m for help): t De-Yu Wang CSIE CYUT 73
8.3. 生 邏 輯 捲 冊 CHAPTER 8. 邏 輯 捲 軸 管 理 員 伵 伱 伵 伳 伵 伵 伵 伷 伵 伹 伶 伱 Partition number (1-6, default 6): Hex code (type L to list all codes): 8e Changed type of partition Linux to Linux LVM Command (m for help): p Disk /dev/vda: 4294 MB, 4294967296 bytes, 8388608 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk label type: dos Disk identifier: 0x000cd485 伶 伳 Device Boot Start End Blocks Id System /dev/vda1 * 2048 411647 204800 83 Linux 伶 伵 /dev/vda2 411648 7579647 3584000 8e Linux LVM /dev/vda3 7579648 7845887 133120 8e Linux LVM 伶 伷 /dev/vda4 7845888 8388607 271360 5 Extended /dev/vda5 7847936 7868415 10240 82 Linux swap / Solaris 伶 伹 /dev/vda6 7870464 8388607 259072 8e Linux LVM 伷 伱 Command (m for help): w The partition table has been altered! 伷 伳 Calling ioctl() to re-read partition table. 伷 伵 WARNING: Re-reading the partition table failed with error 16: Device or resource busy. 伷 伷 The kernel still uses the old table. The new table will be used at the next reboot or after you run partprobe(8) or kpartx(8) 伷 伹 Syncing disks. 3. 載 入 新 的 硬 碟 分 割 表 伱 [root@kvm7 ~]# partprobe /dev/vda [root@kvm7 ~]# kpartx /dev/vda 伳 vda1 : 0 409600 /dev/vda 2048 vda2 : 0 7168000 /dev/vda 411648 伵 vda3 : 0 266240 /dev/vda 7579648 vda4 : 0 2 /dev/vda 7845888 伷 vda5 : 0 20480 /dev/vda 7847936 vda6 : 0 518144 /dev/vda 7870464 4. 檢 查 硬 碟 分 割 區, 確 認 硬 碟 /dev/vda 分 割 區 出 現 vda6 De-Yu Wang CSIE CYUT 74
8.3. 生 邏 輯 捲 冊 CHAPTER 8. 邏 輯 捲 軸 管 理 員 [root@kvm7 ~]# lsblk 伲 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT vda 252:0 0 4G 0 disk 伴 vda1 252:1 0 200M 0 part /boot vda2 252:2 0 3.4G 0 part 伶 vg_kvm7usb-swap 253:0 0 124M 0 lvm [SWAP] vg_kvm7usb-root 253:1 0 3.1G 0 lvm / 伸 vda3 252:3 0 130M 0 part vg_kvm7home-vo 253:2 0 30M 0 lvm /home 伱 估 vda4 252:4 0 1K 0 part vda5 252:5 0 10M 0 part [SWAP] 伱 伲 vda6 252:6 0 253M 0 part 5. 查 看 pv 可 用 指 令 [root@kvm7 ~]# pv [TAB}{TAB] 伲 pvchange pvcreate pvmove pvresize pvscan pvck pvdisplay pvremove pvs 6. 查 看 目 前 只 有 兩 個 PV 伱 [root@kvm7 ~]# pvscan PV /dev/vda2 VG vg_kvm7usb lvm2 [3.41 GiB / 172.00 MiB free] 伳 PV /dev/vda3 VG vg_kvm7home lvm2 [128.00 MiB / 98.00 MiB free] Total: 2 [3.54 GiB] / in use: 2 [3.54 GiB] / in no VG: 0 [0 ] 7. 將 /dev/vda6 建 立 為 PV [root@kvm7 ~]# pvcreate /dev/vda6 伲 Physical volume "/dev/vda6" successfully created 8. 再 查 看 /dev/vda6 是 新 建 立 的 PV, 但 還 沒 有 VG De-Yu Wang CSIE CYUT 75
8.3. 生 邏 輯 捲 冊 CHAPTER 8. 邏 輯 捲 軸 管 理 員 [root@kvm7 ~]# pvscan 伲 PV /dev/vda2 VG vg_kvm7usb lvm2 [3.41 GiB / 172.00 MiB free] PV /dev/vda3 VG vg_kvm7home lvm2 [128.00 MiB / 98.00 MiB free] 伴 PV /dev/vda6 lvm2 [253.00 MiB] Total: 3 [3.79 GiB] / in use: 2 [3.54 GiB] / in no VG: 1 [253.00 MiB] 9. 查 看 vg 可 用 指 令 伱 [root@kvm7 ~]# vg [TAB][TAB] vgcfgbackup vgconvert vgextend vgmknodes vgs 伳 vgcfgrestore vgcreate vgimport vgreduce vgscan vgchange vgdisplay vgimportclone vgremove vgsplit 伵 vgck vgexport vgmerge vgrename 10. 查 看 vgcreate 輔 助 說 明 伱 伳 伵 伷 伹 伱 伱 伱 伳 伱 伵 伱 伷 伱 伹 伲 伱 [root@kvm7 ~]# vgcreate --help vgcreate: Create a volume group vgcreate [-A --autobackup {y n}] [--addtag Tag] [--alloc AllocationPolicy] [-c --clustered {y n}] [--commandprofile ProfileName] [-d --debug] [-h --help] [-l --maxlogicalvolumes MaxLogicalVolumes] [--metadataprofile ProfileName] [-M --metadatatype 1 2] [--[vg]metadatacopies #copies] [-p --maxphysicalvolumes MaxPhysicalVolumes] [-s --physicalextentsize PhysicalExtentSize[bBsSkKmMgGtTpPeE ]] [-t --test] [-v --verbose] [--version] [-y --yes] [ PHYSICAL DEVICE OPTIONS ] De-Yu Wang CSIE CYUT 76
8.3. 生 邏 輯 捲 冊 CHAPTER 8. 邏 輯 捲 軸 管 理 員 伲 伳 VolumeGroupName PhysicalDevicePath [PhysicalDevicePath...] 11. 在 PV /dev/vda6 上 建 立 名 為 vg_mnt PE size 2M 的 VG 伱 [root@kvm7 ~]# vgcreate -s 2M vg_mnt /dev/vda6 Volume group "vg_mnt" successfully created 12. 查 看 lv 可 用 指 令 [root@kvm7 ~]# lv [TAB][TAB] 伲 lvchange lvextend lvmdiskscan lvmsar lvresize lvconvert lvm lvmdump lvreduce lvs 伴 lvcreate lvmchange lvmetad lvremove lvscan lvdisplay lvmconf lvmsadc lvrename 13. 查 看 lv 輔 助 說 明 伱 [root@kvm7 ~]# lvcreate --help lvcreate: Create a logical volume 伳 lvcreate 伵 [-A --autobackup {y n}] [-a --activate [a e l]{y n}] 伷 [--addtag Tag] [--alloc AllocationPolicy] 伹 [-H --cache [--cachemode {writeback writethrough}] 伱 伱 [--cachepool CachePoolLogicalVolume{Name Path}] [-c --chunksize ChunkSize] 伱 伳 [-C --contiguous {y n}] [--commandprofile ProfileName] 伱 伵 [-d --debug] [-h -? --help] 伱 伷 [--errorwhenfull {y n}] [--ignoremonitoring] 伱 伹 [--monitor {y n}] [-i --stripes Stripes [-I --stripesize StripeSize]] 伲 伱 [-k --setactivationskip {y n}] [-K --ignoreactivationskip] 伲 伳 {-l --extents LogicalExtentsNumber[%{VG PVS FREE}] -L --size LogicalVolumeSize[bBsSkKmMgGtTpPeE]} De-Yu Wang CSIE CYUT 77
8.4. 開 機 自 動 掛 載 CHAPTER 8. 邏 輯 捲 軸 管 理 員 伲 伵 伲 伷 伲 伹 伳 伱 伳 伳 伳 伵 伳 伷 伳 伹 伴 伱 伴 伳 伴 伵 伴 伷 [-M --persistent {y n}] [-j --major major] [--minor minor] [--metadataprofile ProfileName] [-m --mirrors Mirrors [--nosync] [{--mirrorlog {disk core mirrored} --corelog}]] [-n --name LogicalVolumeName] [--noudevsync] [-p --permission {r rw}] [--poolmetadatasize MetadataSize[bBsSkKmMgG]] [--poolmetadataspare {y n}]] [--[raid]minrecoveryrate Rate] [--[raid]maxrecoveryrate Rate] [-r --readahead {ReadAheadSectors auto none}] [-R --regionsize MirrorLogRegionSize] [-T --thin [--discards {ignore nopassdown passdown}] [--thinpool ThinPoolLogicalVolume{Name Path}] [-t --test] [--type VolumeType] [-v --verbose] [-W --wipesignatures {y n}] [-Z --zero {y n}] [--version] VolumeGroupName [PhysicalVolumePath...] 14. 在 vg_mnt 上 建 立 名 為 pub, 大 小 為 12 個 PE 的 LV 伱 [root@kvm7 ~]# lvcreate -l 12 -n pub vg_mnt Logical volume "pub" created. 15. 依 照 要 求 ( 此 例 為 vfat ) 格 式 化 vg_mnt-pub [root@kvm7 ~]# mkfs.vfat /dev/vg_mnt/pub 伲 mkfs.fat 3.0.20 (12 Jun 2013) unable to get drive geometry, using default 255/63 8.4 開 機 自 動 掛 載 1. 系 統 掛 載 限 制 : (a) 根 目 錄 / 一 定 要 掛 載 且 最 先 掛 載 De-Yu Wang CSIE CYUT 78
8.4. 開 機 自 動 掛 載 CHAPTER 8. 邏 輯 捲 軸 管 理 員 (b) 其 它 掛 載 點 (mount points) 必 須 為 自 已 建 立 的 目 錄 (c) 所 有 mount points 在 同 一 時 間 之 內, 只 能 掛 載 一 次 (d) 所 有 partitions 在 同 一 時 間 之 內, 只 能 掛 載 一 次 (e) 若 要 卸 載, 必 須 先 將 工 作 目 錄 移 到 mount point ( 及 其 子 目 錄 ) 之 外 2. 建 立 vg_mnt-pub 掛 載 目 錄 ( 此 例 為 /mnt/pub) 伱 [root@kvm7 ~]# mkdir /mnt/pub 3. 編 輯 /etc/fstab 設 定 開 機 自 動 掛 載 vg_mnt-pub 於 /mnt/pub 伱 [root@kvm7 ~]# vim /etc/fstab [root@kvm7 ~]# cat /etc/fstab 伳 # # /etc/fstab 伵 # Created by anaconda on Fri Sep 4 00:41:24 2015 # 伷 # Accessible filesystems, by reference, are maintained under / dev/disk # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info 伹 # /dev/mapper/vg_kvm7usb-root / ext4 defaults 1 1 伱 伱 UUID=2c1876ca-3a87-4352-98f3-0e582b7c3d34 /boot xfs defaults 0 0 /dev/mapper/vg_kvm7home-vo /home ext4 defaults 1 2 伱 伳 /dev/mapper/vg_mnt-pub /mnt/pub vfat defaults 1 2 /dev/mapper/vg_kvm7usb-swap swap swap defaults 0 0 伱 伵 /dev/vda5 swap swap defaults 0 0 4. 重 新 依 /etc/fstab 掛 載 表 掛 載 檔 案 系 統, 如 果 沒 有 錯 誤 訊 息 表 示 正 常 伱 [root@kvm7 ~]# mount -a 5. 查 看 vg_mnt-pub 已 成 功 掛 載 於 /mnt/pub, 且 type 為 vfat De-Yu Wang CSIE CYUT 79
8.5. SULOGIN 解 決 CHAPTER 8. 邏 輯 捲 軸 管 理 員 伱 [root@kvm7 ~]# df -Th Filesystem Type Size Used Avail Use% Mounted on 伳 /dev/mapper/vg_kvm7usb-root ext4 3.1G 1.1G 1.9G 36% / devtmpfs devtmpfs 487M 0 487M 0% /dev 伵 tmpfs tmpfs 497M 0 497M 0% /dev/ shm tmpfs tmpfs 497M 6.6M 491M 2% /run 伷 tmpfs tmpfs 497M 0 497M 0% /sys/ fs/cgroup /dev/vda1 xfs 197M 107M 90M 55% /boot 伹 /dev/mapper/vg_kvm7home-vo ext4 25M 784K 23M 4% /home /dev/mapper/vg_mnt-pub vfat 24M 0 24M 0% /mnt/ pub 6. 檢 查 VG vg_mnt 的 PE size 是 否 如 要 求 ( 此 例 為 2M) [root@kvm7 ~]# vgdisplay vg_mnt grep PE Size 伲 PE Size 2.00 MiB 7. 檢 查 LV vg_mnt-pub 的 LE 是 否 如 要 求 ( 此 例 為 12 個 PE) [root@kvm7 ~]# lvdisplay /dev/vg_mnt/pub grep LE 伲 Current LE 12 8.5 sulogin 解 決 1. 當 開 機 自 動 掛 載 不 成 功 時 會 出 現 以 下 訊 息, 輸 入 root 密 碼 可 進 入 單 人 模 式 維 修, 或 按 Ctrl+d 繼 續 伲 伴 Welcome to emergency mode! After logging in, type "journalctl -xb " to view system logs, "systemctl reboot" to reboot, "systemctl default" to try again to boot into default mode. Give root password for maintenance (or type Control-D to continue): De-Yu Wang CSIE CYUT 80
8.5. SULOGIN 解 決 CHAPTER 8. 邏 輯 捲 軸 管 理 員 2. 進 入 單 人 模 式 後 執 行 mount -a 依 /etc/fstab 掛 載 表 重 新 掛 載, 發 現 device vg_kvm7home-voo 不 存 在 伱 [root@kvm7 ~]# mount -a mount: special device /dev/mapper/vg_kvm7home-voo does not exist 3. 因 為 單 人 模 式 下 根 目 錄 掛 載 成 唯 讀, 無 法 修 改 開 機 掛 載 表, 必 須 重 新 掛 載 成 可 寫 入 [root@kvm7 ~]# mount -oremount,rw / 4. 編 輯 /etc/fstab 將 device vg_kvm7home-voo 改 成 正 確 的 vg_kvm7home-vo 後 存 檔 此 例 只 是 device 打 錯, 實 際 狀 況 若 是 device 無 法 掛 載, 且 一 下 子 無 法 解 決, 建 議 先 將 不 能 掛 載 的 那 行 註 解 不 掛 載, 也 就 是 該 行 最 前 面 加 井 字 號 "#" 伱 [root@kvm7 ~]# vim /etc/fstab [root@kvm7 ~]# grep vo /etc/fstab 伳 /dev/mapper/vg_kvm7home-vo /home ext4 defaults 1 2 5. 再 執 行 mount -a 依 /etc/fstab 掛 載 表 重 新 掛 載, 沒 有 任 何 訊 息 表 示 掛 載 成 功 伱 [root@kvm7 ~]# mount -a 6. 強 調 再 強 調!!mount -a 不 能 出 現 任 何 錯 誤 訊 息 才 能 重 新 開 機, 否 則 一 定 變 成 sulogin 無 法 正 常 開 機 伱 [root@kvm7 ~]# reboot De-Yu Wang CSIE CYUT 81
8.6. 變 更 VG 或 LV 名 稱 CHAPTER 8. 邏 輯 捲 軸 管 理 員 8.6 變 更 VG 或 LV 名 稱 1. 查 看 目 前 掛 載 在 /mnt/pub 的 LV 為 VG vg_mnt 下 的 pub 伱 [root@kvm7 ~]# df -Th Filesystem Type Size Used Avail Use% Mounted on 伳 /dev/mapper/vg_kvm7usb-root ext4 3.1G 1.1G 1.8G 37% / devtmpfs devtmpfs 487M 0 487M 0% /dev 伵 tmpfs tmpfs 497M 0 497M 0% /dev/ shm tmpfs tmpfs 497M 6.6M 491M 2% /run 伷 tmpfs tmpfs 497M 0 497M 0% /sys/ fs/cgroup /dev/vda1 xfs 197M 107M 90M 55% /boot 伹 /dev/mapper/vg_mnt-pub vfat 24M 0 24M 0% /mnt/ pub /dev/mapper/vg_kvm7home-vo ext4 74M 1.6M 68M 3% /home 2. 查 看 變 更 LV 名 稱 指 令 輔 助 說 明 伲 [root@kvm7 ~]# lvrename --help lvrename: Rename a logical volume 伴 lvrename [-A --autobackup {y n}] 伶 [--commandprofile ProfileName] [-d --debug] 伸 [-h -? --help] [--noudevsync] 伱 估 [-t --test] [-v --verbose] 伱 伲 [--version] { OldLogicalVolumePath NewLogicalVolumePath 伱 伴 VolumeGroupName OldLogicalVolumeName NewLogicalVolumeName } 3. 將 VG vg_mnt 下 名 為 pub 的 LV 改 名 為 pubx [root@kvm7 ~]# lvrename vg_mnt pub pubx 伲 Renamed "pub" to "pubx" in volume group "vg_mnt" De-Yu Wang CSIE CYUT 82
8.6. 變 更 VG 或 LV 名 稱 CHAPTER 8. 邏 輯 捲 軸 管 理 員 4. 將 /mnt/pub 卸 解 再 重 新 掛 載 會 出 現 裝 置 不 存 在 的 訊 息 [root@kvm7 ~]# umount /mnt/pub/ 伲 [root@kvm7 ~]# mount -a mount: special device /dev/mapper/vg_mnt-pub does not exist 5. 編 輯 /etc/fstab 將 裝 置 名 稱 由 vg_mnt-pub vg_mnt-pubx 伱 [root@kvm7 ~]# vim /etc/fstab [root@kvm7 ~]# grep mnt /etc/fstab 伳 /dev/mapper/vg_mnt-pubx /mnt/pub vfat defaults 1 2 6. 重 新 依 /etc/fstab 掛 載 設 定 成 功 掛 載 vg_mnt-pubx, 目 前 的 VG 名 稱 為 vg_mnt 伱 [root@kvm7 ~]# mount -a [root@kvm7 ~]# df -Th 伳 Filesystem Type Size Used Avail Use% Mounted on /dev/mapper/vg_kvm7usb-root ext4 3.1G 1.1G 1.8G 37% / 伵 devtmpfs devtmpfs 487M 0 487M 0% /dev tmpfs tmpfs 497M 0 497M 0% /dev/ shm 伷 tmpfs tmpfs 497M 6.6M 491M 2% /run tmpfs tmpfs 497M 0 497M 0% /sys/ fs/cgroup 伹 /dev/vda1 xfs 197M 107M 90M 55% /boot /dev/mapper/vg_kvm7home-vo ext4 74M 1.6M 68M 3% /home 伱 伱 /dev/mapper/vg_mnt-pubx vfat 24M 0 24M 0% /mnt/ pub 7. 查 看 變 更 VG 名 稱 指 令 輔 助 說 明 伱 伳 伵 [root@kvm7 ~]# vgrename --help vgrename: Rename a volume group vgrename [-A --autobackup y n] De-Yu Wang CSIE CYUT 83
8.6. 變 更 VG 或 LV 名 稱 CHAPTER 8. 邏 輯 捲 軸 管 理 員 伷 伹 伱 伱 伱 伳 [--commandprofile ProfileName] [-d --debug] [-h --help] [-t --test] [-v --verbose] [--version] OldVolumeGroupPath NewVolumeGroupPath OldVolumeGroupName NewVolumeGroupName 8. 將 VG vg_mnt 改 名 為 vg_mntx 伱 [root@kvm7 ~]# vgrename vg_mnt vg_mntx Volume group "vg_mnt" successfully renamed to "vg_mntx" 9. 將 /mnt/pub 卸 解 再 重 新 掛 載 會 出 現 裝 置 不 存 在 的 訊 息 [root@kvm7 ~]# umount /mnt/pub/ 伲 [root@kvm7 ~]# mount -a mount: special device /dev/mapper/vg_mnt-pubx does not exist 10. 編 輯 /etc/fstab 將 裝 置 名 稱 由 vg_mnt-pubx vg_mntx-pubx 伱 [root@kvm7 ~]# vim /etc/fstab [root@kvm7 ~]# grep mnt /etc/fstab 伳 /dev/mapper/vg_mntx-pubx /mnt/pub vfat defaults 1 2 11. 重 新 依 /etc/fstab 掛 載 設 定 成 功 掛 載 vg_mntx-pubx 伱 [root@kvm7 ~]# mount -a [root@kvm7 ~]# df -Th 伳 Filesystem Type Size Used Avail Use% Mounted on /dev/mapper/vg_kvm7usb-root ext4 3.1G 1.1G 1.8G 37% / 伵 devtmpfs devtmpfs 487M 0 487M 0% /dev tmpfs tmpfs 497M 0 497M 0% /dev/ shm De-Yu Wang CSIE CYUT 84
8.7. 變 更 PE 大 小 CHAPTER 8. 邏 輯 捲 軸 管 理 員 伷 tmpfs tmpfs 497M 6.6M 491M 2% /run tmpfs tmpfs 497M 0 497M 0% /sys/ fs/cgroup 伹 /dev/vda1 xfs 197M 107M 90M 55% /boot /dev/mapper/vg_kvm7home-vo ext4 74M 1.6M 68M 3% /home 伱 伱 /dev/mapper/vg_mntx-pubx vfat 24M 0 24M 0% /mnt/ pub 8.7 變 更 PE 大 小 1. 查 看 目 前 VG vg_mntx 的 PE 大 小 為 2M 伱 [root@kvm7 ~]# vgdisplay vg_mntx grep PE Size PE Size 2.00 MiB 2. 查 看 vgchange 指 令 輔 助 說 明 伲 伴 伶 伸 伱 估 伱 伲 伱 伴 伱 伶 伱 伸 伲 估 伲 伲 伲 伴 伲 伶 [root@kvm7 ~]# vgchange --help vgchange: Change volume group attributes vgchange [-A --autobackup {y n}] [--alloc AllocationPolicy] [-P --partial] [--commandprofile ProfileName] [-d --debug] [--detachprofile] [-h --help] [--ignorelockingfailure] [--ignoremonitoring] [--ignoreskippedcluster] [-K --ignoreactivationskip] [--metadataprofile ProfileName] [--monitor {y n}] [--[vg]metadatacopies #copies] [--poll {y n}] [--noudevsync] [--refresh] [--sysinit] [-t --test] [-u --uuid] [-v --verbose] [--version] De-Yu Wang CSIE CYUT 85
8.7. 變 更 PE 大 小 CHAPTER 8. 邏 輯 捲 軸 管 理 員 {-a --activate [a e l]{y n} 伲 伸 [--activationmode {complete degraded partial}] -c --clustered {y n} 伳 估 -x --resizeable {y n} -l --logicalvolume MaxLogicalVolumes 伳 伲 -p --maxphysicalvolumes MaxPhysicalVolumes -s --physicalextentsize PhysicalExtentSize[bBsSkKmMgGtTpPeE] 伳 伴 --addtag Tag --deltag Tag} 伳 伶 [VolumeGroupName...] 3. 變 更 VG vg_mntx 的 PE 大 小 為 1M [root@kvm7 ~]# vgchange -s 1M vg_mntx 4. 再 查 詢 VG vg_mntx 的 PE 大 小 已 改 為 1M 伱 Volume group "vg_mntx" successfully changed [root@kvm7 ~]# vgdisplay vg_mntx grep PE Size 伳 PE Size 1.00 MiB De-Yu Wang CSIE CYUT 86
CHAPTER 9. 帳 號 與 身 份 管 理 Chapter 9 帳 號 與 身 份 管 理 9.1 Linux 的 帳 號 1. 帳 號 與 ID (a) 帳 號 ID: 使 用 者 的 ID(User ID, UID) 與 群 組 的 ID(Group ID, GID) (b) Linux 主 機 只 認 識 UID 及 GID, 不 認 識 我 們 輸 入 的 帳 號 名 稱 (c) /etc/passwd 及 /etc/group 分 別 記 錄 UID 及 GID 的 對 應 2. 如 何 登 入 Linux 主 機?( 系 統 必 須 讀 取 /etc/passwd 與 /etc/shadow) (a) 先 找 尋 /etc/passwd 裡 面 是 否 有 這 個 帳 號? i. 如 果 沒 有 則 跳 出, ii. 如 果 有 則 將 該 帳 號 對 應 的 UID 與 GID 讀 出, 該 帳 號 的 家 目 錄 與 shell 設 定 也 一 併 讀 出 ; (b) 核 對 密 碼 表 : 核 對 輸 入 的 密 碼 與 /etc/shadow 對 應 的 帳 號 與 UID 之 密 碼 是 否 相 符? (c) 如 果 一 切 正 確, 就 進 入 Shell 控 管 的 階 段 3. /etc/passwd 每 一 行 以 : 分 隔, 共 分 為 七 項 伱 [root@dywoffice dywang]# cat /etc/passwd root:x:0:0:root:/root:/bin/bash 伳 bin:x:1:1:bin:/bin:/bin/sh daemon:x:2:2:daemon:/sbin:/bin/sh 伵 adm:x:3:4:adm:/var/adm:/bin/sh test:x:500:100:test:/home/test:/bin/bash (a) 帳 號 名 稱 (root) (b) 密 碼 (x): 不 顯 示 De-Yu Wang CSIE CYUT 87
9.2. LINUX 的 群 組 CHAPTER 9. 帳 號 與 身 份 管 理 (c) UID(0) ID 範 圍 該 ID 使 用 者 特 性 0 系 統 管 理 員, 只 要 將 UID 改 為 0 即 可 成 為 系 統 管 理 員 1 ~ 499 保 留 給 系 統 使 用 的 ID, 除 了 0 之 外, 其 他 的 UID 並 無 不 同, 預 設 1 ~ 99 保 留 給 系 統 預 設 的 帳 號,100 ~ 499 保 留 給 一 些 服 務 使 用 500 ~ 65535 一 般 使 用 者 的 UID 從 500 編 起 (d) GID: 與 /etc/group 有 關 (e) 備 註 說 明 (root) (f) 家 目 錄 (/root) (g) Shell(/bin/bash) 4. 用 戶 id 在 v7 變 動 (a) 在 v6, 一 般 用 戶 UID 從 500 編 起 (b) 在 v7, 一 般 用 戶 UID 從 1000 編 起 9.2 linux 的 群 組 1. /etc/group 每 一 行 以 : 分 隔, 共 分 為 四 項 [root@kvm7 ~]# head -4 /etc/group 伲 root:x:0: bin:x:1: 伴 daemon:x:2: sys:x:3: (a) 群 組 名 稱 (b) 群 組 密 碼 : 密 碼 記 錄 在 /etc/gshadow, 很 少 使 用 群 組 登 入, 故 通 常 不 需 要 設 定 (c) GID (d) 支 援 的 帳 號 名 稱 : 即 群 組 裡 的 所 有 帳 號 2. 初 始 群 組 ( initial group ): (a) 使 用 者 一 登 入 系 統 就 擁 有 的 群 組 權 限, 其 記 錄 在 /etc/passwd 的 第 四 欄 位 (b) 不 需 要 在 /etc/group 的 第 四 個 欄 位 寫 入 該 帳 號 De-Yu Wang CSIE CYUT 88
9.2. LINUX 的 群 組 CHAPTER 9. 帳 號 與 身 份 管 理 3. 有 效 群 組 ( effective group ): (a) 該 帳 號 在 /etc/group 中 所 屬 的 群 組 ( 第 四 個 欄 位 中 包 含 該 帳 號 ) (b) 一 個 帳 號 可 同 時 支 援 初 始 群 組 及 有 效 群 組, 只 要 這 兩 群 組 擁 有 的 功 能 該 帳 號 皆 可 使 用 (c) 新 建 的 檔 案 或 目 錄 依 有 效 群 組 設 定 權 限 4. 查 看 group 開 頭 的 命 令 伱 [root@kvm7 ~]# group [TAB][TAB] groupadd groupdel groupmems groupmod groups 5. 增 加 sharegrp 群 組 [root@kvm7 ~]# groupadd sharegrp 6. 查 詢 sharegrp 群 組 是 否 存 在? 伱 [root@kvm7 ~]# getent group sharegrp sharegrp:x:1000: 7. 刪 除 sharegrp 群 組 [root@kvm7 ~]# groupdel sharegrp 8. 再 查 詢 sharegrp 群 組, 已 不 存 在 伱 [root@kvm7 ~]# getent group sharegrp 9. 再 次 增 加 sharegrp 群 組, 供 下 節 增 加 使 用 者 時 使 用 伱 [root@kvm7 ~]# groupadd sharegrp De-Yu Wang CSIE CYUT 89
9.3. 使 用 者 管 理 CHAPTER 9. 帳 號 與 身 份 管 理 9.3 使 用 者 管 理 1. useradd: 增 加 使 用 者 伱 [root@kvm7 ~]# useradd [-unggmmd] user 參 數 : 伳 -u: 指 定 帳 號 的 UID -n: 群 組 為 users 伵 -g: 後 接 之 群 組 initial, 變 動 group /etc/ passwd -G: 後 接 之 群 組 為 支 援 此 帳 號 之 群 組, 變 動 /etc/ group 伷 -M: 不 要 建 立 使 用 者 家 目 錄 -m: 建 立 使 用 者 家 目 錄 伹 -d: 指 定 某 個 目 錄 為 家 目 錄, 而 不 使 用 預 設 目 錄 -s: 指 定 使 用 的 shell 2. 增 加 用 戶 deyu1, 其 附 屬 群 組 為 sharegrp [root@kvm7 ~]# useradd -G sharegrp deyu1 3. 增 加 用 戶 deyu2, 其 附 屬 群 組 為 sharegrp 伱 [root@kvm7 ~]# useradd -G sharegrp deyu2 4. 增 加 用 戶 deyu3, 此 用 戶 不 能 使 用 互 動 式 shell 登 入 伱 [root@kvm7 ~]# useradd -s /sbin/nologin deyu3 5. 檢 查 用 戶 deyu1 及 deyu2, 附 屬 群 組 為 sharegrp, 用 戶 deyu3 沒 有 附 屬 群 組 伱 伳 伵 [root@kvm7 ~]# id deyu1 uid=1000(deyu1) gid=1001(deyu1) groups=1001(deyu1),1000(sharegrp) [root@kvm7 ~]# id deyu2 uid=1001(deyu2) gid=1002(deyu2) groups=1002(deyu2),1000(sharegrp) [root@kvm7 ~]# id deyu3 De-Yu Wang CSIE CYUT 90
9.4. 設 定 使 用 者 密 碼 CHAPTER 9. 帳 號 與 身 份 管 理 uid=1002(deyu3) gid=1003(deyu3) groups=1003(deyu3) 6. 檢 查 用 戶 deyu3, 使 用 的 shell 為 不 能 登 入 的 /sbin/nologin [root@kvm7 ~]# getent passwd deyu3 伲 deyu3:x:1002:1003::/home/deyu3:/sbin/nologin 7. 新 增 用 戶 deyu4, 並 指 定 其 uid 為 3584 [root@kvm7 ~]# useradd -u 3584 deyu4 8. 檢 查 用 戶 deyu4,uid 為 3584 伱 [root@kvm7 ~]# id deyu4 uid=3584(deyu4) gid=3584(deyu4) groups=3584(deyu4) 9.4 設 定 使 用 者 密 碼 1. 每 個 使 用 者 都 要 使 用 到 /etc/passwd, 因 此 /etc/passwd 的 屬 性 必 須 為 -rw-r--r-- 為 安 全 起 見, 密 碼 移 到 /etc/shadow 2. /etc/shadow 每 一 行 以 : 分 隔, 共 分 為 九 項 [root@dywoffice dywang]# cat /etc/shadow 伲 root:$1$fgy7mcld$ukagcyaet2ugpr8nffsqp1:13341:0:99999:7::: bin:*:13341:0:99999:7::: 伴 daemon:*:13341:0:99999:7::: adm:*:13341:0:99999:7::: 伶 test:$1$uukmfbbi$es3osn8i6kwx29qsc1hzi/:13341:0:99999:7::: (a) 帳 號 名 稱, 要 與 /etc/passwd 相 同 才 可 (b) 密 碼 : 真 正 的 密 碼 但 已 加 密, 密 碼 欄 第 一 個 字 為 * 或 者 是!, 表 示 這 個 帳 號 不 會 被 用 來 登 入 De-Yu Wang CSIE CYUT 91
9.4. 設 定 使 用 者 密 碼 CHAPTER 9. 帳 號 與 身 份 管 理 (c) 上 次 更 動 密 碼 的 日 期, 計 算 Linux 日 期 的 時 間 是 以 1970 年 1 月 1 日 為 0, 而 1971 年 1 月 1 日 則 為 365 (d) 密 碼 不 可 被 更 動 的 天 數,0 表 示 密 碼 隨 時 可 以 更 動, 如 果 設 定 為 20, 則 20 天 之 內 皆 無 法 改 變 密 碼 (e) 密 碼 需 要 重 新 變 更 的 天 數, 如 果 設 定 為 99999 表 示 密 碼 不 需 要 重 新 輸 入 (f) 密 碼 需 要 變 更 前 的 警 告 期 限 : 如 上 例 則 7 天 之 內 系 統 會 警 告 用 戶 (g) 密 碼 過 期 的 恕 限 時 間 : 當 密 碼 失 效 後,n 天 內 還 可 以 登 入 (h) 帳 號 失 效 日 期 : 計 算 方 式 同 欄 位 3 (i) 保 留 : 看 以 後 有 無 新 功 能 加 入 3. passwd: 設 定 或 變 更 密 碼 [root@kvm7 ~]# passwd [-lunxws] username 參 數 : 伲 -l : 將 username 這 個 帳 號 的 密 碼 鎖 住 (lock), 在 /etc/shadow 內 的 密 伴 碼 欄 -u : 將 -l 的 lock 解 開 -n : 後 面 接 天 數 數 字 (), 最 短 天 數 ; 亦 即 是 /etc/shadow 內 的 第 四 欄 ; 伶 -x : 後 面 接 天 數 數 字 (), 最 長 天 數 ; 亦 即 是 /etc/shadow 內 的 第 五 欄 ; -w : 後 面 接 天 數 數 字 (), 警 告 天 數 ; 亦 即 是 /etc/shadow 內 的 第 六 欄 ; 伸 -i : 後 面 接 天 數 數 字 (), 密 碼 過 期 的 恕 限 時 間 ; 亦 即 是 /etc/shadow 內 的 第 七 欄 ; -S : 顯 示 目 前 這 個 username 的 相 關 資 訊 伱 估 --stdin : 經 由 標 準 輸 入 取 得 密 碼, 配 合 管 線 處 理, 可 大 量 更 改 用 戶 密 碼 4. 使 用 --stdin 選 項 變 更 deyu1, deyu2, deyu3 的 登 入 密 碼 [root@kvm7 ~]# echo qweqwe passwd --stdin deyu1 伲 Changing password for user deyu1. passwd: all authentication tokens updated successfully. 伴 [root@kvm7 ~]# echo qweqwe passwd --stdin deyu2 Changing password for user deyu2. 伶 passwd: all authentication tokens updated successfully. [root@kvm7 ~]# echo qweqwe passwd --stdin deyu3 伸 Changing password for user deyu3. passwd: all authentication tokens updated successfully. 伱 估 [root@kvm7 ~]# echo qweqwe passwd --stdin deyu4 Changing password for user deyu4. 伱 伲 passwd: all authentication tokens updated successfully. De-Yu Wang CSIE CYUT 92
9.5. 使 用 者 身 份 切 換 CHAPTER 9. 帳 號 與 身 份 管 理 9.5 使 用 者 身 份 切 換 1. su: 轉 換 用 戶 身 份 [root@kvm7 ~]# su [-lcm] [username] 參 數 : 伲 - : 變 換 身 份 為, 取 得 一 個 新 的 root, 使 用 shell root 的 環 境 設 定 參 數 檔, 如 伴 /root/.bash_profile 等 -l username : 變 換 身 份 為, 且 使 用 username username 的 所 有 相 關 環 境 設 定 檔 伶 -m,-p : 使 用 目 前 的 環 境 設 定, 而 不 重 新 讀 取 新 使 用 者 的 設 定 檔 -c command : 僅 進 行 一 次 指 令 command 2. su - 變 換 身 份 會 使 用 新 用 戶 deyu1 的 環 境 變 數, 所 以 所 在 目 錄 為 deyu1 的 家 錄 伱 [root@kvm7 ~]# su - deyu1 [deyu1@kvm7 ~]$ pwd 伳 /home/deyu1 3. 由 用 戶 deyu1 使 用 su 變 換 身 份 為 root, 使 用 原 用 戶 deyu1 的 環 境 變 數, 所 以 所 在 目 錄 為 deyu1 的 家 錄 伱 [deyu1@kvm7 ~]$ su Password: 伳 [root@kvm7 deyu1]# pwd /home/deyu1 伵 [root@kvm7 deyu1]# exit exit 4. 由 用 戶 deyu1 使 用 su - 變 換 身 份 為 root, 使 用 用 戶 root 的 環 境 變 數, 所 以 所 在 目 錄 為 root 的 家 錄 伲 伴 伶 [deyu1@kvm7 ~]$ su - Password: Last login: Sat Oct [root@kvm7 ~]# pwd /root [root@kvm7 ~]# exit 3 06:53:15 CST 2015 on pts/0 De-Yu Wang CSIE CYUT 93
9.5. 使 用 者 身 份 切 換 CHAPTER 9. 帳 號 與 身 份 管 理 logout 伸 [deyu1@kvm7 ~]$ exit logout 5. 使 用 su 變 換 身 份 為 deyu1, 使 用 用 戶 root 的 環 境 變 數, 所 以 所 在 目 錄 為 root 的 家 錄 伱 [root@kvm7 ~]# su deyu1 [deyu1@kvm7 root]$ pwd 伳 /root [deyu1@kvm7 root]$ exit 伵 exit [root@kvm7 ~]# De-Yu Wang CSIE CYUT 94
CHAPTER 10. LINUX 檔 案 權 限 與 管 理 Chapter 10 Linux 檔 案 權 限 與 管 理 10.1 檔 案 權 限 檔 案 權 限 與 屬 性 為 學 習 Linux 之 重 要 關 卡 在 根 目 錄 "/" 下, 輸 入 指 令 ls -al [dywang@mdk-dyw /]$ ls -al 伲 total 72 drwxr-xr-x 18 root adm 4096 Sep 16 11:11./ 伴 drwxr-xr-x 18 root adm 4096 Sep 16 11:11../ -rw-r--r-- 1 root root 0 Sep 16 11:11.autofsck 伶 drwxr-xr-x 2 root root 4096 Sep 28 12:50 bin/ drwxr-xr-x 3 root root 4096 Sep 16 11:11 boot/ 伸 drwxr-xr-x 26 root root 14420 Oct 1 12:30 dev/ drwxr-xr-x 85 root root 8192 Sep 29 12:59 etc/ 伱 估 drwxr-xr-x 18 root root 4096 Sep 26 12:45 home/ drwxr-xr-x 2 root root 4096 Sep 9 16:14 initrd/ 伱 伲 drwxr-xr-x 11 root root 4096 Sep 28 12:49 lib/ drwxr-xr-x 5 root root 4096 Sep 29 12:59 mnt/ 伱 伴 drwxr-xr-x 2 root root 4096 Jan 5 2004 opt/ dr-xr-xr-x 179 root root 0 Sep 16 11:10 proc/ 伱 伶 -rw------- 1 root root 1024 Sep 9 13:06.rnd drwx------ 16 root root 4096 Oct 1 13:13 root/ 伱 伸 drwxr-xr-x 2 root root 8192 Sep 28 12:50 sbin/ drwxr-xr-x 10 root root 0 Sep 16 11:10 sys/ 伲 估 drwxrwxrwt 23 root root 4096 Oct 1 13:13 tmp/ drwxr-xr-x 12 root root 4096 Sep 9 13:15 usr/ 伲 伲 drwxr-xr-x 23 root root 4096 Sep 9 17:31 var/ 說 明 : total 72: 檔 案 共 72 Blocks De-Yu Wang CSIE CYUT 95
10.2. 改 變 檔 案 權 限 CHAPTER 10. LINUX 檔 案 權 限 與 管 理 各 欄 位 說 明 : 欄 位 一 欄 位 二 欄 位 三 欄 位 四 欄 位 五 欄 位 六 欄 位 七 drwxr-xr-x 3 root root 4096 Sep 16 11:11 boot 檔 案 屬 性 硬 連 結 數 目 擁 有 者 所 有 者 群 組 大 小 建 檔 日 期 檔 名 1. 第 一 欄 位 drwxr-xr-x, 共 有 檔 案 的 10 個 屬 性 : 可 讀 可 寫 可 執 行 無 可 寫 之 屬 性 d rwx r-x r-x 檔 案 擁 有 者 檔 案 所 屬 群 組 其 他 人 檔 案 類 型 之 屬 性 之 屬 性 之 屬 性 10.2 改 變 檔 案 權 限 1. chmod: 改 變 權 限 chmod [ -R ] xyz 檔 案 或 目 錄 伲 chmod [ -R ] u = r 檔 案 或 目 錄 g + w 檔 案 或 目 錄 伴 o - x 檔 案 或 目 錄 a 檔 案 或 目 錄 伶 chmod u=rwx,go=rx 檔 案 或 目 錄 chmod a-x 檔 案 或 目 錄 xyz 為 三 組 rwx 屬 性 數 值 之 加 總 r : 4 w : 2 x : 1 -rwxr-xr-- 之 屬 性 數 值 為 754 符 號 類 型 u : user g : group o : other a : all + : 加 入 - : 除 去 = : 設 定 2. 例 題 : 若 從 光 碟 複 製 某 一 目 錄 abc ( 包 含 次 目 錄 之 所 有 檔 案 ) 至 硬 碟, 則 目 前 使 用 者 雖 為 檔 案 擁 有 者, 但 卻 無 法 修 改 該 檔 案, 請 問 如 何 以 簡 單 的 方 式, De-Yu Wang CSIE CYUT 96
10.3. ACCESS CONTROL LISTS CHAPTER 10. LINUX 檔 案 權 限 與 管 理 讓 使 用 者 可 以 修 改 所 有 檔 案? 伱 chmod u+w -R abc 10.3 Access Control Lists 1. 什 麼 是 ACL (Access Control List)? (a) 提 供 傳 統 的 owner,group,others 的 read,write,execute 權 限 之 外 的 細 部 權 限 設 定 (b) ACL 可 以 針 對 單 一 使 用 者, 單 一 檔 案 或 目 錄 來 進 行 r, w, x 的 權 限 規 範 (c) ACL 主 要 可 以 針 對 以 下 項 目 來 控 制 權 限 : i. 使 用 者 (user): 可 以 針 對 使 用 者 來 設 定 權 限 ; ii. 群 組 (group): 針 對 群 組 為 對 象 來 設 定 其 權 限 ; iii. 預 設 屬 性 (mask): 針 對 在 該 目 錄 下 在 建 立 新 檔 案 / 目 錄 時, 規 範 新 資 料 的 預 設 權 限 2. setfacl: 設 定 ACL 的 狀 態 伱 [root@demo ~]# setfacl [-bkndrlpvh] [{-m -x} acl_spec] [{-M -X} acl_file] file... 選 項 : 伳 -m : 設 定 後 續 的 acl 參 數 給 檔 案 使 用, 不 可 與 -x 合 用 ; -x : 刪 除 後 續 的 acl 參 數, 不 可 與 -m 合 用 ; 伵 -b : 移 除 所 有 的 ACL 設 定 參 數 ; -k : 移 除 預 設 的 ACL 參 數 ; 伷 -R : 遞 迴 設 定, 即 包 括 次 目 錄 都 會 被 設 定 ; acl -d : 設 定 預 設 acl 參 數, 只 對 目 錄 有 效, 在 該 目 錄 新 建 的 資 料 會 引 用 此 預 設 值 伹 acl_spec: [d[efault]:] [u[ser]:]uid [:perms] 伱 伱 [d[efault]:] g[roup]:gid [:perms] [d[efault]:] m[ask][:] [:perms] 伱 伳 [d[efault]:] o[ther][:] [:perms] # d 選 項, 表 示 該 目 錄 預 設 有 設 定 的 acl 規 範, 類 似 umask 的 功 能 3. 先 複 製 測 試 檔 案 De-Yu Wang CSIE CYUT 97
10.3. ACCESS CONTROL LISTS CHAPTER 10. LINUX 檔 案 權 限 與 管 理 [root@kvm7 ~]# cp /etc/fstab /var/tmp/ 4. 查 看 複 製 的 檔 案 擁 有 者, 群 組 皆 為 root, 目 前 權 限 為 644,root 有 讀 取 及 寫 入 的 權 限 伱 [root@kvm7 ~]# ll /var/tmp/fstab -rw-r--r--. 1 root root 694 Oct 15 06:29 /var/tmp/fstab 5. 使 用 getfacl 查 看 /var/tmp/fstab 目 前 的 ACL, 沒 有 其 他 用 戶 有 特 殊 的 權 限 [root@kvm7 ~]# getfacl /var/tmp/fstab 伲 getfacl: Removing leading / from absolute path names # file: var/tmp/fstab 伴 # owner: root # group: root 伶 user::rw- group::r-- 伸 other::r-- 6. 改 變 /var/tmp/fstab 的 ACL, 用 戶 deyu1 有 讀 取 及 寫 入 的 權 限 [root@kvm7 ~]# setfacl -m u:deyu1:rw /var/tmp/fstab 7. 改 變 /var/tmp/fstab 的 ACL, 用 戶 deyu2 沒 有 任 何 權 限 伱 [root@kvm7 ~]# setfacl -m u:deyu2:- /var/tmp/fstab 8. 再 使 用 getfacl 查 看 /var/tmp/fstab 目 前 的 ACL, 其 他 用 戶 deyu1 及 deyu2 有 特 殊 的 權 限 De-Yu Wang CSIE CYUT 98
10.4. 檔 案 的 特 殊 屬 性 CHAPTER 10. LINUX 檔 案 權 限 與 管 理 伱 [root@kvm7 ~]# getfacl /var/tmp/fstab getfacl: Removing leading / from absolute path names 伳 # file: var/tmp/fstab # owner: root 伵 # group: root user::rw- 伷 user:deyu1:rw- user:deyu2:--- 伹 group::r-- mask::rw- 伱 伱 other::r-- 9. 列 出 /var/tmp/fstab 可 以 看 到 權 限 部 分 多 了 個 +, 且 權 限 不 是 原 本 的 \644"? 伱 [root@kvm7 ~]# ll /var/tmp/fstab -rw-rw-r--+ 1 root root 694 Oct 15 06:29 /var/tmp/fstab 10.4 檔 案 的 特 殊 屬 性 1. 檔 案 的 特 殊 屬 性 SUID/SGID/SBIT (a) Set UID (SUID); 設 置 使 文 件 在 執 行 階 段 具 有 文 件 所 有 者 的 權 限 i. SUID 典 型 的 的 例 子 為 /etc/passwd A. 帳 號 與 密 碼 存 放 於 /etc/passwd 與 /etc/shadow 而 /etc/shadow 的 權 限 為 -r--------, 且 擁 有 者 為 root B. 一 般 身 份 使 用 者 要 更 新 自 己 的 密 碼, 執 行 /usr/bin/passwd 卻 可 以 存 取 密 碼 檔 /etc/shadow ii. SUID 僅 可 用 在 二 進 位 制 檔 案 (binary file) 上 (b) Set GID (SGID): 只 對 目 錄 有 效 i. 目 錄 被 設 置 後, 任 何 用 戶 在 此 目 錄 下 建 立 的 文 件, 所 屬 群 組 皆 與 該 目 錄 所 屬 的 群 組 相 同 ii. 可 使 用 在 特 定 的 多 人 團 隊 的 專 案 開 發 上 (c) Sticky Bit (SBIT): 防 刪 除 屬 性, 只 對 目 錄 有 效 i. 在 具 有 SBIT 的 目 錄 下, 使 用 者 若 在 該 目 錄 下 具 有 w 及 x 的 權 限, 則 當 使 用 者 在 該 目 錄 下 建 立 檔 案 或 目 錄 時, 只 有 檔 案 擁 有 者 與 root 才 有 權 力 刪 除 De-Yu Wang CSIE CYUT 99
10.4. 檔 案 的 特 殊 屬 性 CHAPTER 10. LINUX 檔 案 權 限 與 管 理 ii. 典 型 的 例 子 如 /tmp 的 權 限 是 drwxrwxrwt, 任 何 用 戶 都 可 在 /tmp 內 新 增 修 改 檔 案, 但 僅 有 該 檔 案 / 目 錄 建 立 者 與 root 能 夠 刪 除 自 己 的 目 錄 或 檔 案 2. SUID/SGID/SBIT 權 限 的 顯 示 與 設 定 (a) 使 用 ls -l 列 出 檔 案 屬 性, 如 : rwsrw-r-- rwxrwsrwrwxrw-rwt 表 示 設 置 SUID 屬 性 表 示 設 置 SGID 屬 性 表 示 設 置 SBIT 屬 性 (b) 如 果 本 來 在 該 位 上 有 x 屬 性, 則 這 些 特 殊 屬 性 顯 示 為 小 寫 字 母 (s, s, t), 否 則 顯 示 為 大 寫 字 母 (S, S, T) (c) SUID/SGID/SBIT 權 限 設 定 與 一 般 rwx 屬 性 之 設 定 類 似 : 4 為 SUID 2 為 SGID 1 為 SBIT (d) 例 題 : 更 改 並 顯 示 檔 案 foo 的 屬 性 [root@dywhome2 test]# chmod 4755 foo; ll foo 伲 -rwsr-xr-x 1 root root 7 Sep 4 13:25 foo* [root@dywhome2 test]# chmod 6755 foo; ll foo 伴 -rwsr-sr-x 1 root root 7 Sep 4 13:25 foo* [root@dywhome2 test]# chmod 1755 foo; ll foo 伶 -rwxr-xr-t 1 root root 7 Sep 4 13:25 foo* [root@dywhome2 test]# chmod 7666 foo; ll foo 伸 -rwsrwsrwt 1 root root 7 Sep 4 13:25 foo (e) 搜 尋 Linux 系 統 中 SUID 執 行 檔 : [root@kvm7 ~]# find / -perm -4000 2>/dev/null 伲 /usr/bin/umount /usr/bin/xorg 伴 /usr/bin/chsh /usr/bin/gpasswd 伶 /usr/bin/crontab /usr/bin/ksu 伸 /usr/bin/newgrp /usr/bin/su 伱 估 /usr/bin/chfn /usr/bin/passwd 伱 伲 /usr/bin/pkexec /usr/bin/mount 伱 伴 /usr/bin/chage /usr/bin/sudo 伱 伶 /usr/lib/polkit-1/polkit-agent-helper-1 De-Yu Wang CSIE CYUT 100
10.4. 檔 案 的 特 殊 屬 性 CHAPTER 10. LINUX 檔 案 權 限 與 管 理 /usr/sbin/unix_chkpwd 伱 伸 /usr/sbin/usernetctl /usr/sbin/mount.nfs 伲 估 /usr/sbin/userhelper /usr/sbin/pam_timestamp_check 伲 伲 /usr/lib64/dbus-1/dbus-daemon-launch-helper (f) 查 SUID 檔 案 /usr/bin/passwd 的 屬 性 為 -rwsr-xr-x, 其 中 s 就 是 SUID [root@kvm7 ~]# ll /usr/bin/passwd 伲 -rwsr-xr-x. 1 root root 27832 Jun 10 2014 /usr/bin/passw (g) 搜 尋 Linux 系 統 中 SGID 目 錄 : [root@kvm7 ~]# find / -perm -2000 2>/dev/null 伲 /run/log/journal /run/log/journal/7d058ead696f4ccbb7c56b8999cf3a06 伴 /usr/bin/wall /usr/bin/ssh-agent 伶 /usr/bin/write /usr/sbin/postqueue 伸 /usr/sbin/postdrop /usr/sbin/netreport 伱 估 /usr/libexec/openssh/ssh-keysign /usr/libexec/utempter/utempter (h) 查 SGID 目 錄 /usr/log/joural 的 屬 性 為 drwxr-sr-x, 其 中 s 就 是 SGID 伱 [root@kvm7 ~]# ll -d /run/log/journal drwxr-sr-x. 3 root systemd-journal 60 Dec journal 1 10:08 /run/log/ (i) 搜 尋 Linux 系 統 中 SBIT 目 錄 : [root@kvm7 ~]# find / -perm -1000 2>/dev/null 伲 /tmp /tmp/.x11-unix 伴 /tmp/.test-unix /tmp/.ice-unix 伶 /tmp/.xim-unix /tmp/.font-unix De-Yu Wang CSIE CYUT 101
10.5. 特 殊 屬 性 SGID 練 習 CHAPTER 10. LINUX 檔 案 權 限 與 管 理 伸 /dev/mqueue /dev/shm 伱 估 /var/tmp (j) 查 SBIT 目 錄 /tmp 的 屬 性 為 drwxrwxrwt, 其 中 t 就 是 SBIT [root@kvm7 ~]# ll -d /tmp 伲 drwxrwxrwt. 7 root root 4096 Dec 2 09:27 /tmp 10.5 特 殊 屬 性 SGID 練 習 1. 先 建 立 練 習 用 目 錄 /home/shared [root@kvm7 ~]# mkdir /home/shared 2. 檢 查 要 用 的 群 組 sharegrp 存 不 存 在? 伱 [root@kvm7 ~]# grep sharegrp /etc/group 3. 如 果 群 組 sharegrp 不 存 在 先 建 立 伱 [root@kvm7 ~]# groupadd sharpgrp [root@kvm7 ~]# grep sharpgrp /etc/group 伳 sharpgrp:x:1003: 4. 如 果 群 組 sharegrp 名 稱 設 定 錯 誤, 不 要 刪 除, 直 接 改 名 伱 [root@kvm7 ~]# groupmod -n sharegrp sharpgrp [root@kvm7 ~]# grep sharegrp /etc/group 伳 sharegrp:x:1003: 5. 查 看 目 錄 /home/shared, 目 前 擁 有 者 及 群 組 皆 為 root, 擁 有 者 可 讀 可 寫 可 訪 問 此 目 錄, 同 群 組 及 其 他 人 只 能 訪 問 及 讀 取 De-Yu Wang CSIE CYUT 102
10.5. 特 殊 屬 性 SGID 練 習 CHAPTER 10. LINUX 檔 案 權 限 與 管 理 伱 [root@kvm7 ~]# ll -d /home/shared drwxr-xr-x. 2 root root 1024 Nov 17 19:34 /home/shared 6. 改 變 目 錄 /home/shared 群 組 為 sharegrp [root@kvm7 ~]# chgrp sharegrp /home/shared 7. 查 看 目 錄 /home/shared 群 組 為 sharegrp 伱 [root@kvm7 ~]# ll -d /home/shared drwxr-xr-x. 2 root sharegrp 1024 Nov 17 19:34 /home/shared 8. 改 變 目 錄 /home/shared, 群 組 可 讀 可 寫 可 訪 問 此 目 錄, 其 他 人 沒 有 任 何 權 限, 且 設 定 SGID, 讓 用 戶 在 此 目 錄 內 生 的 檔 案, 所 屬 群 組 皆 為 sharegrp [root@kvm7 ~]# chmod 2770 /home/shared 9. 再 查 看 目 錄 /home/shared, 其 屬 性 出 現 drwxrws---, 符 合 要 求 伱 [root@kvm7 ~]# ll -d /home/shared drwxrws---. 2 root sharegrp 1024 Nov 17 19:34 /home/shared De-Yu Wang CSIE CYUT 103
10.5. 特 殊 屬 性 SGID 練 習 CHAPTER 10. LINUX 檔 案 權 限 與 管 理 De-Yu Wang CSIE CYUT 104
CHAPTER 11. 例 行 性 命 令 Chapter 11 例 行 性 命 令 11.1 Linux 的 例 行 性 命 令 1. Linux 工 作 排 程 的 種 類 :at, cron (a) 例 行 性 : 每 隔 一 定 的 週 期 要 執 行 的 工 作 ; cron: 工 作 持 續 例 行 性 的 作 ; (b) 突 發 性 : 只 做 一 次 ; at: 工 作 僅 執 行 一 次 就 從 Linux 系 統 中 的 排 程 中 取 消 2. 常 見 的 例 行 性 工 作 : (a) 進 行 登 錄 檔 的 資 料 輪 替 : 適 時 適 量 將 登 錄 檔 備 份, 並 以 新 開 的 檔 案 進 行 記 錄 (b) rpm 資 料 庫 的 建 立 (c) 建 立 locate 的 資 料 庫 (d) 進 行 程 序 的 分 析 : 刪 除 僵 屍 程 序, 以 保 持 記 憶 體 的 工 作 能 力 (e) 登 錄 檔 視 察 : 解 析 有 問 題 的 紀 錄 檔, 以 維 護 主 機 的 安 全 性 11.2 僅 執 行 一 次 的 工 作 排 程 :at 1. at 的 使 用 限 制 如 下 : (a) 先 在 /etc/at.allow 檔 案 中 尋 找 可 以 使 用 at 指 令 的 使 用 者 (b) 若 無 /etc/at.allow 檔 案, 則 尋 找 /etc/at.deny 檔 案 不 能 使 用 at 指 令 的 使 用 者 (c) 若 上 述 兩 檔 案 皆 不 存 在, 則 只 有 root 可 以 使 用 at 指 令 (d) 預 設 只 有 空 白 的 /etc/at.deny 檔, 即 所 有 人 皆 可 使 用 at 指 令 De-Yu Wang CSIE CYUT 105
11.2. 僅 執 行 一 次 的 工 作 排 程 :AT CHAPTER 11. 例 行 性 命 令 [root@localhost csie]# cat /etc/at.allow 伲 cat: /etc/at.allow: No such file or directory [root@localhost csie]# cat /etc/at.deny 伴 [root@localhost csie]# 2. at: 僅 執 行 一 次 的 工 作 排 程 伱 [root@linux ~]# at [-m] TIME 參 數 : 伳 -m : 當 at 的 工 作 完 成 後, 以 email 的 方 式 通 知 使 用 者 該 工 作 已 完 成 : 時 間 格 式, 定 義 什 麼 時 候 要 進 行 TIME at 這 項 工 作 的 時 間, 格 式 有 : 伵 HH:MM ex> 04:00 在 今 日 的 HH:MM 時 刻 進 行, 若 該 時 刻 已 超 過, 則 明 天 的 HH:MM 進 行 此 工 作 伷 HH:MM YYYY-MM-DD ex> 04:00 2005-12-03 強 制 規 定 在 某 年 某 月 的 某 一 天 的 特 殊 時 刻 進 行 該 工 作 伹 HH:MM[am pm] [Month] [Date] ex> 04pm December 3 強 制 在 某 年 某 月 某 日 的 某 時 刻 進 行 伱 伱 HH:MM[am pm] + number [minutes hours days weeks] ex> now + 5 minutes ex> 04pm + 3 days 某 個 時 間 點 再 加 幾 個 時 間 後 才 進 行 3. 下 達 工 作 排 程 伱 [dywang@dywoffice ~]$ at 17:00 063007 at> echo Hello! 伳 at> <EOT> 輸 入 <==[Ctrl]+, 出 現 結 束 字 樣 d<eot> job 1 at 2007-06-30 17:00 4. 查 看 目 前 的 工 作 排 程 [dywang@dywoffice ~]$ atq 伲 1 2007-06-30 17:00 a dywang 5. 刪 除 工 作 排 程 De-Yu Wang CSIE CYUT 106
11.3. 循 環 執 行 的 工 作 排 程 CHAPTER 11. 例 行 性 命 令 [dywang@dywoffice ~]$ atrm 1 伲 [dywang@dywoffice ~]$ atq [dywang@dywoffice ~]$ 11.3 循 環 執 行 的 工 作 排 程 1. crontab 的 使 用 限 制 如 下 : (a) 先 在 /etc/cron.allow 檔 案 中 尋 找 可 以 使 用 crontab 指 令 的 使 用 者 (b) 若 無 /etc/cron.allow 檔 案, 則 尋 找 /etc/cron.deny 檔 案 不 能 使 用 crontab 指 令 的 使 用 者 (c) 若 上 述 兩 檔 案 皆 不 存 在, 則 只 有 root 可 以 使 用 crontab 指 令 (d) 預 設 只 有 空 白 的 /etc/cron.deny 檔, 即 所 有 人 皆 可 使 用 crontab 指 令 伱 [root@kvm7 ~]# ll /etc/cron [TAB][TAB] cron.d/ cron.deny cron.monthly/ cron.weekly/ 伳 cron.daily/ cron.hourly/ crontab [root@kvm7 ~]# cat /etc/cron.deny 2. crontab: 循 環 執 行 的 工 作 排 程 [test @test test]# crontab [-u user] [-l -e -r] 參 數 說 明 : 伲 -u user : 只 有 root 能 下 達 的 參 數, 視 察 或 編 譯 其 他 使 用 者 的 crontab 內 伴 容 -l : 列 出 crontab 的 內 容 -e : 編 輯 crontab 的 內 容 伶 -r : 刪 除 crontab 的 內 容 3. 編 輯 排 程 [root@dywoffice dywang]# crontab -e 伲 # min(0-59) hours(0-23) day(1-31) month(1-12) dow(0-6) command 0 0 * * 6 /backup/sysbackup De-Yu Wang CSIE CYUT 107
11.3. 循 環 執 行 的 工 作 排 程 CHAPTER 11. 例 行 性 命 令 (a) 五 個 時 間 數 字 參 數 分 別 代 表 : 數 字 代 表 的 意 義 分 鐘 小 時 日 期 月 份 週 範 圍 0-59 0-23 1-31 1-12 0-6 (0 或 7 為 星 期 天 ) (b) 輔 助 字 符 : 特 殊 字 符 代 表 意 義 * 代 表 任 何 時 刻 都 接 受 代 表 分 隔 時 段 例 如 : 在 0300 及 0600 時 工 作, 則 0 3,6 * * * command - 代 表 一 段 時 間 範 圍 內 例 如 : 在 0800 到 1200 之 間 每 小 時 的 20 分 都 進 行 工 作, 則 20 8-12 * * * command /n 每 隔 n 單 位 間 隔 例 如 每 5 分 鐘 進 行 一 次, 則 */5 * * * * command 4. 查 看 排 程 伱 [root@dywoffice dywang]# crontab -l # min(0-59) hours(0-23) day(1-31) month(1-12) dow(0-6) command 伳 0 0 * * 6 /backup/sysbackup 5. 刪 除 排 除 伱 [root@dywoffice dywang]# crontab -r [root@dywoffice dywang]# crontab -l 伳 no crontab for root 6. 例 題 : 如 果 您 ( 帳 號 deyu2) 要 建 立 一 個 自 動 執 行 的 工 作, 在 每 天 17:00 執 行 /bin/echo "closing time", 該 如 何 做? 7. 若 指 定 用 戶 deyu2 編 輯 工 作 排 程, 可 以 先 切 換 到 deyu2, 再 執 行 crontab -e 進 行 編 輯, 完 成 編 輯 後 退 出 回 到 root 身 份 伱 [root@kvm7 ~]# su - deyu2 [deyu2@kvm7 ~]$ crontab -e 伳 no crontab for deyu2 - using an empty one crontab: no changes made to crontab 伵 [deyu2@kvm7 ~]$ exit logout De-Yu Wang CSIE CYUT 108
11.3. 循 環 執 行 的 工 作 排 程 CHAPTER 11. 例 行 性 命 令 8. 建 議 直 接 以 root 身 份 執 行 crontab -e 加 上 -u deyu2 參 數 指 定 編 輯 用 戶 deyu2 的 工 作 排 程, 就 可 以 不 用 切 換 身 份 [root@kvm7 ~]# crontab -e -u deyu2 伲 no crontab for deyu2 - using an empty one crontab: installing new crontab 9. 編 輯 完 用 戶 deyu2 的 工 作 排 程 後, 以 -l 選 項 查 看 排 程 內 容 是 否 正 確 伱 [root@kvm7 ~]# crontab -l -u deyu2 0 17 * * * /bin/echo "closing time" De-Yu Wang CSIE CYUT 109
11.3. 循 環 執 行 的 工 作 排 程 CHAPTER 11. 例 行 性 命 令 De-Yu Wang CSIE CYUT 110
CHAPTER 12. RPM 套 件 下 載 安 裝 Chapter 12 RPM 套 件 下 載 安 裝 12.1 RPM 套 件 1. 何 謂 RPM? (a) RPM 全 名 是 RedHat Package Manager 簡 稱 為 RPM (b) 由 Red Hat 公 司 發 展 出 來, 由 於 RPM 使 用 方 便, 所 以 成 了 目 前 最 熱 門 的 套 件 管 理 程 式 (c) RPM 是 以 資 料 庫 記 錄 的 方 式 來 將 所 需 要 的 套 件 安 裝 到 Linux 主 機 的 一 套 管 理 程 式 (d) RPM 將 要 安 裝 的 套 件 先 編 譯 過, 並 且 打 包 好, 安 裝 時 RPM 會 先 依 照 套 件 裡 的 紀 錄 資 料 查 詢 相 依 屬 性 套 件 是 否 滿 足, 若 滿 足 則 予 以 安 裝, 若 不 滿 足 則 不 予 安 裝 2. RPM 套 件 的 屬 性 相 依 (a) RPM 打 包 套 件 檔 案 時, 會 同 時 加 入 套 件 的 訊 息 例 如 : i. 版 本 ii. 打 包 套 件 者 iii. 相 依 屬 性 的 套 件 iv. 套 件 的 功 能 說 明 v. 套 件 的 所 有 檔 案 與 目 錄 紀 錄 (b) 在 Linux 系 統 上 亦 建 立 一 個 RPM 套 件 資 料 庫 (c) 當 要 安 裝 某 個 以 RPM 型 態 提 供 的 套 件 時, 如 果 資 料 庫 顯 示 其 相 依 套 件 不 存 在, 則 會 顯 示 錯 誤 訊 息 (d) 屬 性 相 依 的 克 服 方 式 i. 手 動 下 載 並 安 裝 好 所 有 相 依 套 件 ii. 利 用 urpmi 安 裝 rpm 套 件 : 自 行 尋 找 未 安 裝 的 相 依 套 件 加 以 安 裝 De-Yu Wang CSIE CYUT 111
12.1. RPM 套 件 CHAPTER 12. RPM 套 件 下 載 安 裝 3. RPM 的 格 式 : name-version-release.architecture.rpm <== RPM 檔 名 格 式 (a) 例 如 檔 案 kernel-3.10.0-229.el7.x86_64 的 意 義 為 : 伱 kernel - 3.10.0-229.el7. x86_64. rpm 套 件 名 稱 套 件 的 版 本 資 訊 釋 出 的 版 本 編 號 適 合 的 硬 體 平 台 附 檔 名 (b) 釋 出 的 版 本 編 號 一 般 都 有 Linux distribution 的 代 號,el7 代 表 RHEL 7 版 本, 安 裝 RPM 套 件, 最 好 選 擇 相 同 環 境 之 檔 案, 即 distirbution 的 簡 寫 與 自 己 的 系 統 環 境 相 同 4. 操 作 硬 體 平 台 之 選 擇 : (a) 平 台 名 稱 說 明 : 平 台 名 稱 適 合 平 台 說 明 i386 幾 乎 適 用 於 所 有 的 x86 平 台 i 是 Intel 相 容 的 CPU,386 是 CPU 的 等 級 i586 586 等 級 的 電 腦, 包 括 pentum 第 一 代 MMX CPU, AMD 的 K5, K6 系 列 等 CPU i686 pentum II 以 後 的 Intel 系 列 CPU, 及 K7 以 後 等 級 的 CPU x86_64 64 位 元 cpu 處 理 器 noarch 沒 有 任 何 硬 體 等 級 上 的 限 制 athlon AMD Athlon 晶 片 (b) i386 可 安 裝 在 586 或 686 的 機 器 ; (c) i686 是 針 對 686 等 級 的 CPU 進 行 最 佳 化 編 譯, 所 以 不 一 定 可 以 使 用 於 386 或 586 的 硬 體 (d) 在 686 的 機 器 上 使 用 i686 的 檔 案 會 比 使 用 i386 的 檔 案, 效 能 可 能 比 較 好 (e) Linux distribution Mandriva 2007.0 釋 出 之 rpm, 平 台 名 稱 為 i586 (f) 目 前 CPU 大 都 已 是 64 位 元, 安 裝 時 可 儘 量 採 用 x86_64 套 件 De-Yu Wang CSIE CYUT 112
12.2. RPM 指 令 CHAPTER 12. RPM 套 件 下 載 安 裝 12.2 rpm 指 令 1. 基 本 功 能 : 套 件 安 裝 升 級 更 新 移 除 查 詢 及 數 位 簽 章 驗 證 及 檢 查 INSTALLING, UPGRADING, AND REMOVING PACKAGES: 伲 rpm {-i --install} [install-options] PACKAGE_FILE... rpm {-U --upgrade} [install-options] PACKAGE_FILE... 伴 rpm {-F --freshen} [install-options] PACKAGE_FILE... rpm {-e --erase} [--allmatches] [--nodeps] [--noscripts] 伶 [--notriggers] [--repackage] [--test] PACKAGE_NAME... QUERYING AND VERIFYING PACKAGES: 伸 rpm {-q --query} [select-options] [query-options] rpm {-V --verify} [select-options] [verify-options] 伱 估 rpm --import PUBKEY... rpm {-K --checksig} [--nosignature] [--nodigest] 伱 伲 PACKAGE_FILE... 2. 一 般 選 項 : 適 用 於 所 有 模 式 -?, --help : 列 出 輔 助 訊 息 伲 --version : 列 出 rpm 版 本 --quiet : 僅 列 出 錯 誤 訊 息 伴 -v : 察 看 更 細 部 的 安 裝 資 訊 -vv : 列 出 大 量 除 錯 訊 息 伶 --pipe CMD : 將 rpm 的 輸 出 以 管 線 處 理 送 到 命 令 CMD 12.3 RPM 套 件 安 裝 1. 安 裝 選 項 以 -i 開 頭 rpm {-i --install} [install-options] PACKAGE_FILE... 伲 install-:options -h : 以 安 裝 資 訊 列 顯 示 安 裝 進 度 伴 --: 不 要 去 檢 查 nodeps rpm 套 件 的 相 依 性 --: 不 要 檢 查 nomd5 rpm 套 件 的 MD5 資 訊 伶 --: 不 想 讓 該 套 件 自 行 啟 用 或 者 自 行 執 行 某 些 系 統 指 令 noscripts --: 直 接 覆 蓋 已 存 在 的 檔 案 replacefiles 伸 --: 重 新 安 裝 某 個 已 經 安 裝 過 的 套 件 replacepkgs --:force--replacefiles 與 --replacepkgs 伱 估 --: 測 試 套 件 是 否 可 以 被 安 裝 到 使 用 者 的 test Linux 環 境 當 中 --prefix : 安 裝 到 新 目 錄 NEWPATH NEWPATH De-Yu Wang CSIE CYUT 113
12.3. RPM 套 件 安 裝 CHAPTER 12. RPM 套 件 下 載 安 裝 2. 安 裝 新 的 核 心 使 用 rpm 安 裝 若 有 相 依 套 件 需 要 安 裝, 則 必 須 先 安 裝 相 依 套 件 後, 才 能 繼 續 安 裝 伱 [root@kvm7 ~]# rpm -ivh http://dywang.csie.cyut.edu.tw/kernel/ centos7/kernel-3.10.0-229.1.2.el7.x86_64.rpm Retrieving http://dywang.csie.cyut.edu.tw/kernel/centos7/kernel -3.10.0-229.1.2.el7.x86_64.rpm 伳 warning: /var/tmp/rpm-tmp.8u8qs3: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY Preparing... # ################################ [100%] 伵 Updating / installing... 1:kernel-3.10.0-229.1.2.el7 # ################################ [100%] 3. 安 裝 新 的 核 心 使 用 yum 安 裝 若 有 相 依 套 件 需 要 安 裝, 會 自 動 從 yum repo server 找 到 適 合 的 相 依 套 件 一 併 安 裝 [root@kvm7 ~]# yum install http://dywang.csie.cyut.edu.tw/kernel/ centos7/kernel-3.10.0-229.1.2.el7.x86_64.rpm 伲 Loaded plugins: fastestmirror, priorities kernel-3.10.0-229.1.2.el7.x86_64.rpm 31 MB 00:09 4. 查 看 目 前 使 用 的 核 心 版 本 為 3.10.0-229.el7.x86_64 伱 [root@kvm7 ~]# uname -r 3.10.0-229.el7.x86_64 5. 查 看 目 前 已 安 裝 的 核 心 有 兩 個 版 本,3.10.0-229.el7.x86_64 及 3.10.0-229.1.2.el7.x86_64 伲 [root@kvm7 ~]# rpm -qa grep kernel kernel-tools-3.10.0-229.el7.x86_64 kernel-3.10.0-229.el7.x86_64 De-Yu Wang CSIE CYUT 114
12.4. RPM 套 件 升 級 與 更 新 CHAPTER 12. RPM 套 件 下 載 安 裝 伴 kernel-3.10.0-229.1.2.el7.x86_64 kernel-tools-libs-3.10.0-229.el7.x86_64 6. 重 新 開 機, 使 用 預 設 選 項 伱 [root@kvm7 ~]# reboot 7. 開 機 後 再 次 登 入 查 看 目 前 使 用 的 核 心 版 本 為 新 的 版 本 3.10.0-229.1.2.el7.x86_64 伱 [root@kvm7 ~]# uname -r 3.10.0-229.1.2.el7.x86_64 12.4 RPM 套 件 升 級 與 更 新 1. 升 級 選 項 以 -U 開 頭, 更 新 選 項 以 -F 開 頭 : rpm {-U --upgrade} [install-options] PACKAGE_FILE... 伲 rpm {-F --freshen} [install-options] PACKAGE_FILE... install-:options 與 安 裝 相 同 2. 升 級 更 新 與 安 裝 之 差 異 : (a) 升 級 後 所 有 舊 版 套 件 皆 被 移 除 ; (b) 若 舊 版 未 安 裝, 則 無 法 更 新, 即 套 件 不 會 被 安 裝 3. 目 前 系 統 未 安 裝 套 件 baghira 情 況 下, 以 選 項 -U 安 裝 : [root@dywoffice rpm]# rpm -Uvh baghira-0.7-2.2006mcnl.i586.rpm 伲 Preparing... # ########################################## [100%] 1:baghira # ########################################## [100%] De-Yu Wang CSIE CYUT 115
12.5. RPM 套 件 移 除 CHAPTER 12. RPM 套 件 下 載 安 裝 4. 目 前 系 統 未 安 裝 套 件 baghira 情 況 下, 以 選 項 -F 安 裝 舊 版 : 伱 [root@dywoffice rpm]# rpm -Fvh baghira-0.7-2.2006mcnl.i586.rpm [root@dywoffice rpm]# rpm -Fvh baghira-0.7-0arn.20060mdk.i586.rpm 5. 目 前 系 統 已 安 裝 套 件 baghira 情 況 下, 以 選 項 -F 升 級 : [root@dywoffice rpm]# rpm -Fvh baghira-0.7-7arn.cvs20051211.20060 mdk.i586.rpm 伲 Preparing... # ########################################## [100%] 1:baghira # ########################################## [100%] 12.5 RPM 套 件 移 除 1. 移 除 選 項 : 伱 rpm {-e --erase} [--allmatches] [--nodeps] [--test] PACKAGE_NAME... 伳 --: 不 要 去 檢 查 nodeps rpm 套 件 的 相 依 性 --: 只 是 測 試, 不 是 真 的 移 除 套 件 常 與 一 般 選 項 test -vv 一 起 使 用 來 除 錯 2. 測 試 是 否 可 移 除 mplayer: [root@dywhome2 rpm]# rpm -e mplayer --test 伲 error: Failed dependencies: mplayer is needed by (installed) kplayer-0.5.3-5mdv2007.0.i586 3. 測 試 不 要 檢 查 rpm 套 件 的 相 依 性 下, 是 否 可 移 除 mplayer: 伱 [root@dywhome2 rpm]# rpm -e mplayer --test --nodeps De-Yu Wang CSIE CYUT 116
12.6. RPM 查 詢 CHAPTER 12. RPM 套 件 下 載 安 裝 4. 移 除 套 件 baghira: 伱 [root@dywhome2 rpm]# rpm -e baghira 12.6 RPM 查 詢 1. 查 詢 已 安 裝 套 件 資 訊 的 選 項 以 -q 開 頭 伱 伳 [root@linux ~]# rpm -qa [root@linux ~]# rpm -q[licdr] 已 安 裝 的 套 件 名 稱 [root@linux ~]# rpm -qf 存 在 於 系 統 上 面 的 某 個 檔 案 伵 -q : 僅 查 詢, 後 面 接 的 套 件 名 稱 是 否 有 安 裝 ; -qa : 列 出 所 有 已 經 安 裝 在 本 機 Linux 系 統 上 面 的 套 件 名 稱 ; 伷 -qi : 列 出 該 套 件 的 詳 細 資 訊 (information), 包 含 開 發 商 版 本 與 說 明 等 ; -ql : 列 出 該 套 件 所 有 的 檔 案 與 目 錄 所 在 完 整 檔 名 (list); 伹 -qc : 列 出 該 套 件 的 所 有 設 定 檔 僅 找 出 在 ( /etc/ 底 下 的 檔 名 ) -qd : 列 出 該 套 件 的 所 有 說 明 檔 僅 找 出 與 ( man 有 關 的 檔 案 ) 伱 伱 -qr : 列 出 與 該 套 件 有 關 的 相 依 套 件 所 含 的 檔 案 (Required ) -qf : 由 後 面 接 的 檔 案 名 稱, 找 出 該 檔 案 屬 於 哪 一 個 已 安 裝 的 套 件 ; 2. 查 詢 未 安 裝 套 件 資 訊 的 選 項 : [root@linux ~]# rpm -qp[licdr] 未 安 裝 的 某 個 檔 案 名 稱 伲 -qp[icdlr: 後 面 接 的 所 有 參 數 以 上 面 的 說 明 一 致 ] 3. 找 出 是 否 有 安 裝 套 件 logrotate? [root@linux ~]# rpm -q logrotate # 不 必 加 上 版 本 伲 logrotate-3.7.1-10 [root@linux ~]# rpm -q logrotating 伴 package logrotating is not installed 4. 列 出 套 件 logrotate 的 所 有 目 錄 與 檔 案 : De-Yu Wang CSIE CYUT 117
12.6. RPM 查 詢 CHAPTER 12. RPM 套 件 下 載 安 裝 [root@linux ~]# rpm -ql logrotate 伲 /etc/cron.daily/logrotate /etc/logrotate.conf 以 下 省 略 伴... 5. 列 出 套 件 logrotate 的 相 關 說 明 資 料 : [root@linux ~]# rpm -qi logrotate 伲 Name : logrotate Relocations: (not relocatable) Version : 3.7.1 Vendor: Red Hat, Inc. 伴 Release : 10 Build Date: Fri Apr 1 03:54:42 2005 Install Date: Sat Jun 25 08:28:26 2005 Build Host: tweety.build. redhat.com 伶 Group : 系 統 環 境 基 礎 / Source RPM: logrotate-3.7.1-10.src.rpm Size : 47825 License: GPL 伸 Signature : DSA/SHA1, Sat May 21 01:34:11 2005, Key ID b44269d04f2a6fd2 Packager : Red Hat, Inc. <http://bugzilla.redhat.com/bugzilla> 伱 估 Summary : 循 環 壓 縮 移 除 以 及 郵 寄 系 統 紀 錄 檔 案 Description : 伱 伲 The logrotate utility is designed to simplify the administration of log files on a system which generates a lot of log files. Logrotate 伱 伴 allows for the automatic rotation, compression, removal, and mailing of log files. Logrotate can be set to handle a log file daily, weekly, 伱 伶 monthly, or when the log file gets to a certain size. Normally, logrotate runs as a daily cron job. 6. 查 詢 mplayer 的 設 定 檔 伱 [root@dywhome2 ~]# rpm -qc mplayer /etc/mplayer/codecs.conf 伳 /etc/mplayer/input.conf /etc/mplayer/menu.conf 伵 /etc/mplayer/mplayer.conf 7. 查 詢 mplayer 的 說 明 檔 De-Yu Wang CSIE CYUT 118
12.6. RPM 查 詢 CHAPTER 12. RPM 套 件 下 載 安 裝 伱 [root@dywhome2 ~]# rpm -qd mplayer /usr/share/doc/mplayer-1.0/authors 伳 /usr/share/doc/mplayer-1.0/changelog /usr/share/doc/mplayer-1.0/copyright 伵 /usr/share/doc/mplayer-1.0/html/cs/advaudio.html /usr/share/doc/mplayer-1.0/html/cs/aspect.html 伷 /usr/share/doc/mplayer-1.0/html/cs/audio-codecs.html /usr/share/doc/mplayer-1.0/html/cs/audio-formats.html 以 下 省 略 伹 -------- 8. 查 詢 logrotate 相 依 套 件 伱 [root@linux ~]# rpm -qr logrotate /bin/sh 伳 config(logrotate) = 3.7.1-10 libc.so.6 以 下 省 略 伵 -------- 9. 查 詢 /bin/sh 是 由 那 個 套 件 提 供? 伱 [root@linux ~]# rpm -qf /bin/sh bash-3.0-31 伳 # 參 數 後 面 接 的 是 檔 案, 不 是 接 套 件 10. 查 詢 套 件 kplayer ( 未 安 裝 ) 之 相 依 套 件? 伱 [root@dywhome2 rpm]# rpm -qpr kplayer-0.5.3-5mdv2007.0.i586.rpm mplayer 伳 kdelibs-common /bin/sh 伵 /bin/sh rpmlib(payloadfileshaveprefix) <= 4.0-1 伷 rpmlib(compressedfilenames) <= 3.0.4-1 libdcop.so.4 伹 libice.so.6 以 下 省 略 -------- De-Yu Wang CSIE CYUT 119
12.6. RPM 查 詢 CHAPTER 12. RPM 套 件 下 載 安 裝 11. 查 詢 套 件 logrotate 設 定 檔 [root@dywhome2 ~]# rpm -qc logrotate 伲 /etc/logrotate.conf /etc/logrotate.d/syslog 12. 若 查 出 logrotate 的 設 定 檔 案 已 被 改 過, 而 要 從 網 路 直 接 重 新 安 裝, 該 如 何 作? 伱 [root@dywhome2 ~]# rpm -ivh http://ftp.isu.edu.tw/pub/linux/ Mandriva\ >/official/2007.0/i586/media/main/release/logrotate-3.7.3-4mdk. i586.rpm\ 伳 > --replacepkgs 13. 如 果 誤 刪 /etc/crontab, 如 何 查 詢 它 屬 於 那 個 套 件, 以 重 新 安 裝? 伱 # 雖 然 檔 案 /etc/crontab 已 不 存 在, 但 /var/lib/rpm 資 料 庫 中 有 記 錄 : [root@dywhome2 ~]# rpm -qf /etc/crontab 伳 crontabs-1.10-6mdk 14. 查 詢 系 統 中 含 player 字 串 的 套 件? 伱 [root@dywhome2 rpm]# rpm -qa grep player mplayer-1.0-1.pre8.13.2mdv2007.0 伳 kplayer-0.5.3-5mdv2007.0 15. 查 詢 rpm 套 件 並 以 --queryformat 選 項 指 定 輸 出 格 式 以 下 例 子 是 以 輸 出 安 裝 時 間 的 時 間 戳 日 期 套 件 名 稱 顯 示, 並 以 時 間 戳 排 序, 最 後 列 出 最 後 10 行 伱 [root@kvm7 ~]# rpm -qa --queryformat %{installtime} (%{ installtime:date}) %{name}\n sort -n tail 1408439342 (Tue 19 Aug 2014 05:09:02 PM CST) keyutils 伳 1408439342 (Tue 19 Aug 2014 05:09:02 PM CST) libevent 1408439342 (Tue 19 Aug 2014 05:09:02 PM CST) quota De-Yu Wang CSIE CYUT 120
12.6. RPM 查 詢 CHAPTER 12. RPM 套 件 下 載 安 裝 伵 1408439343 (Tue 19 Aug 2014 05:09:03 PM CST) libnfsidmap 1408439344 (Tue 19 Aug 2014 05:09:04 PM CST) nfs-utils 伷 1408619268 (Thu 21 Aug 2014 07:07:48 PM CST) apr 1408619269 (Thu 21 Aug 2014 07:07:49 PM CST) apr-util 伹 1408619269 (Thu 21 Aug 2014 07:07:49 PM CST) httpd-tools 1408619270 (Thu 21 Aug 2014 07:07:50 PM CST) mailcap 伱 伱 1408619271 (Thu 21 Aug 2014 07:07:51 PM CST) httpd 16. 上 面 例 子 以 單 引 號 括 起 來 的 輸 出 格 式 是 以 printf 函 式 運 作, 其 中 %{} 大 括 號 內 的 變 數, 大 小 寫 不 分, 可 以 使 用 --querytags 查 詢 所 有 的 變 數 伱 [root@kvm7 ~]# rpm --querytags ARCH 伳 ARCHIVESIZE BASENAMES 伵 BUGURL BUILDARCHS 伷 BUILDHOST BUILDTIME 以 下 省 略 伹 -------- De-Yu Wang CSIE CYUT 121
12.6. RPM 查 詢 CHAPTER 12. RPM 套 件 下 載 安 裝 De-Yu Wang CSIE CYUT 122
CHAPTER 13. LDAP 的 網 路 用 戶 帳 號 Chapter 13 LDAP 的 網 路 用 戶 帳 號 13.1 LDAP 簡 介 1. LDAP (Lightweight Directory Access Protocol): 輕 量 級 目 錄 存 取 協 定, 運 作 於 TCP/IP 四 層 上,LDAP 跟 運 作 於 OSI 七 層 的 重 量 級 協 定 X.500 相 比 之 下 叫 輕 量 級 2. LDAP 目 錄 結 構 組 成 DN,Distinguished Name: 識 別 名 稱,LDAP 中 一 筆 記 錄 的 位 置 RDN,Relative Distinguished Name: 相 對 識 別 名 稱,CN 及 CN 的 值 例 如 :cn=deyu 獨 一 無 二 的 屬 性 CN,Common Name/uid: 顯 示 名 稱, 一 筆 LDAP 記 錄 的 名 字 /ID OU,Organizational Unit: 組 織, 一 筆 LDAP 記 錄 所 屬 組 織 DC,Domain Componet: 網 域 元 件, 一 筆 LDAP 記 錄 所 屬 區 域 3. LDAP DN 例 子 : 在 deyu.wang 網 域 內 people 組 織 中 使 用 者 dywtest 伱 dn: cn=dywtest,ou=people,dc=deyu,dc=wang 13.2 LDAP Client 端 設 定 1. 安 裝 套 件 伱 [root@kvm4 ~]# yum install {openldap,openldap-clients,nss-pamldapd} De-Yu Wang CSIE CYUT 123
13.2. LDAP CLIENT 端 設 定 CHAPTER 13. LDAP 的 網 路 用 戶 帳 號 2. LDAP server 條 件 伱 1. ldap server: deyu.wang 2. base dn: dc=deyu,dc=wang 伳 3. 認 證 證 書 : ftp://deyu.wang/pub/cacert.pem 4. 帳 號 : ldapuser1 伵 5. 密 碼 : 123 3. 以 authconfig 命 令 幫 忙 設 定 LDAP 認 證 伱 [root@kvmr4 ~]# authconfig --help grep ldap --enableldap enable LDAP for user information by default 伳 --disableldap disable LDAP for user information by default --enableldapauth enable LDAP for authentication by default 伵 --disableldapauth disable LDAP for authentication by default --ldapserver=<server> 伷 --ldapbasedn=<dn> default LDAP base DN --enableldaptls, --enableldapstarttls 伹 --disableldaptls, --disableldapstarttls --ldaploadcacert=<url> 伱 伱 [root@kvm4 ~]# authconfig --enableldap --enableldapauth \ 伱 伳 --ldapserver=deyu.wang --ldapbasedn="dc=deyu,dc=wang" -- enableldaptls --enableldapstarttls \ --ldaploadcacert=ftp://deyu.wang/pub/cacert.pem --update 4. 檢 查 要 登 入 的 帳 號 是 否 存 在? [root@kvm4 cacerts]# getent passwd ldapuser1 伲 ldapuser1:{ssha}havrpye5tr88asaugqytocfzt7qhyqjp:1001:1001: ldapuser1:/home/guests/ldapuser1:/bin/bash 5. 登 入 測 試 伲 [root@kvm4 cacerts]# su - ldapuser1 su: warning: cannot change directory to /home/guests/ldapuser1: No such file or directory De-Yu Wang CSIE CYUT 124
13.2. LDAP CLIENT 端 設 定 CHAPTER 13. LDAP 的 網 路 用 戶 帳 號 -bash-4.1$ 6. 若 已 掛 載 NFS 後, 登 入 LDAP 帳 號 已 有 家 目 錄 伱 [root@kvm4 ~]# getent passwd ldapuser1 ldapuser1:{ssha}havrpye5tr88asaugqytocfzt7qhyqjp:1001:1001: ldapuser1:/home/guests/ldapuser1:/bin/bash 伳 [root@kvm4 ~]# su - ldapuser1 [ldapuser1@kvm4 ~]$ pwd 伵 /home/guests/ldapuser1 7. LDAP client 圖 形 界 面 設 定 工 具 伱 [root@kvm4 cacerts]# system-config-authentication 1. Under, "User account database" select LDAP 伳 2. For "base DN", enter dc=deyu,dc=wang 3. For "LDAP Server", enter ldap://deyu.wang 伵 4. Click "Download certificate" and use ftp://deyu.wang/pub/cacert.pem 伷 5. Leave TLS *UNCHECKED* 6. Under "Authentication Method", select LDAP 伹 7. Select Apply and complete firstboot setup De-Yu Wang CSIE CYUT 125
13.2. LDAP CLIENT 端 設 定 CHAPTER 13. LDAP 的 網 路 用 戶 帳 號 De-Yu Wang CSIE CYUT 126
CHAPTER 14. SYSTEMCTL 系 統 服 務 控 制 Chapter 14 systemctl 系 統 服 務 控 制 14.1 前 言 1. v6 PID=1 是 init 2. v7 PID=1 是 systemd, 其 優 點 有 : (a) 平 行 處 理 能 力, 增 加 開 機 速 度 (b) 自 動 服 務 相 依 管 理, 避 免 過 久 的 timeout, 例 如 : 網 路 不 通 時, 就 不 會 像 v6 還 試 圖 連 上 網 路 14.2 systemctl 命 令 1. systemctl 命 令 用 來 管 理 各 種 不 同 型 態 的 systemd 物 件 伱 [root@kvm7 ~]# systemctl -t help Available unit types: 伳 service socket 伵 target device 伷 mount automount 伹 snapshot timer 伱 伱 swap path 伱 伳 slice scope 2. systemctl 輔 助 說 明 De-Yu Wang CSIE CYUT 127
14.2. SYSTEMCTL 命 令 CHAPTER 14. SYSTEMCTL 系 統 服 務 控 制 [root@kvm7 ~]# systemctl --help 伲 systemctl [OPTIONS...] {COMMAND}... 伴 Query or send control commands to the systemd manager. 伶 -h --help Show this help --version Show package version 伸 -t --type=type List only units of a particular type --state=state List only units with particular LOAD or SUB or ACTIVE stat 伱 估 -p --property=name Show only properties by this name -a --all Show all loaded units/properties, including dead/empty 伱 伲 ones. To list all units installed on the system, use the list-unit-files command instead. 伱 伴 --reverse Show reverse dependencies with listdependencies -l --full Don t ellipsize unit names on output 伱 伶 --fail When queueing a new job, fail if conflicting jobs are pending 伱 伸 --irreversible When queueing a new job, make sure it cannot be implicitly 伲 估 cancelled --ignore-dependencies When queueing a new job, ignore all its dependencies 伲 伲 --show-types When showing sockets, explicitly show their type -i --ignore-inhibitors 伲 伴 When shutting down or sleeping, ignore inhibitors --kill-who=who Who to send signal to 伲 伶 -s --signal=signal Which signal to send -H --host=[user@]host 伲 伸 Show information for remote host -P --privileged Acquire privileges before execution 伳 估 -q --quiet Suppress output --no-block Do not wait until operation finished 伳 伲 --no-wall Don t send wall message before halt/poweroff/reboot --no-reload When enabling/disabling unit files, don t reload daemon 伳 伴 configuration --no-legend Do not print a legend (column headers and hints) 伳 伶 --no-pager Do not pipe output into a pager --no-ask-password 伳 伸 --system Do not ask for system passwords Connect to system manager De-Yu Wang CSIE CYUT 128
14.2. SYSTEMCTL 命 令 CHAPTER 14. SYSTEMCTL 系 統 服 務 控 制 伴 估 --user Connect to user service manager --global Enable/disable unit files globally 伴 伲 --runtime Enable unit files only temporarily until next reboot -f --force When enabling unit files, override existing symlinks 伴 伴 When shutting down, execute action immediately --root=path Enable unit files in the specified root directory 伴 伶 -n --lines=integer Number of journal entries to show -o --output=string Change journal output mode (short, shortmonotonic, 伴 伸 verbose, export, json, json-pretty, jsonsse, cat) --plain Print unit dependencies as a list instead of a tree 伵 估 Unit Commands: 伵 伲 list-units List loaded units list-sockets List loaded sockets ordered by address 伵 伴 start [NAME...] Start (activate) one or more units stop [NAME...] Stop (deactivate) one or more units 伵 伶 reload [NAME...] Reload one or more units restart [NAME...] Start or restart one or more units 伵 伸 try-restart [NAME...] Restart one or more units if active reload-or-restart [NAME...] Reload one or more units if possible, 伶 估 otherwise start or restart reload-or-try-restart [NAME...] Reload one or more units if possible, 伶 伲 otherwise restart if active isolate [NAME] Start one unit and stop all others 伶 伴 kill [NAME...] Send signal to processes of a unit is-active [NAME...] Check whether units are active 伶 伶 is-failed [NAME...] Check whether units are failed status [NAME... PID...] Show runtime status of one or more units 伶 伸 show [NAME... JOB...] Show properties of one or more units/jobs or the manager 伷 估 set-property [NAME] [ASSIGNMENT...] Sets one or more properties of a unit 伷 伲 help [NAME... PID...] Show manual for one or more De-Yu Wang CSIE CYUT 129
14.2. SYSTEMCTL 命 令 CHAPTER 14. SYSTEMCTL 系 統 服 務 控 制 伷 伴 伷 伶 units reset-failed [NAME...], or more list-dependencies [NAME] are required Reset failed state for all, one units Recursively show units which or wanted by this unit or by which this unit is required or wanted 伷 伸 Unit File Commands: 伸 估 list-unit-files List installed unit files enable [NAME...] Enable one or more unit files 伸 伲 disable [NAME...] Disable one or more unit files reenable [NAME...] Reenable one or more unit files 伸 伴 preset [NAME...] Enable/disable one or more unit files based on preset configuration 伸 伶 is-enabled [NAME...] Check whether unit files are enabled 伸 伸 mask [NAME...] Mask one or more units unmask [NAME...] Unmask one or more units 伹 估 link [PATH...] Link one or more units files into the search path 伹 伲 get-default Get the name of the default target set-default NAME Set the default target 伹 伴 Job Commands: 伹 伶 list-jobs List jobs cancel [JOB...] Cancel all, one, or more jobs 伹 伸 Snapshot Commands: 伱 估 估 snapshot [NAME] Create a snapshot delete [NAME...] Remove one or more snapshots 伱 估 伲 Environment Commands: 伱 估 伴 show-environment Dump environment set-environment [NAME=VALUE...] Set one or more environment variables 伱 估 伶 unset-environment [NAME...] Unset one or more environment variables 伱 估 伸 Manager Lifecycle Commands: daemon-reload Reload systemd manager configuration 伱 伱 估 daemon-reload Reload systemd manager configuration daemon-reexec Reexecute systemd manager De-Yu Wang CSIE CYUT 130
14.3. 服 務 啟 動 CHAPTER 14. SYSTEMCTL 系 統 服 務 控 制 伱 伱 伲 System Commands: 伱 伱 伴 default Enter system default mode rescue Enter system rescue mode 伱 伱 伶 emergency Enter system emergency mode halt Shut down and halt the system 伱 伱 伸 poweroff Shut down and power-off the system reboot Shut down and reboot the system 伱 伲 估 kexec Shut down and reboot the system with kexec exit Request user instance exit 伱 伲 伲 switch-root [ROOT] [INIT] Change to a different root file system suspend Suspend the system 伱 伲 伴 hibernate Hibernate the system hybrid-sleep Hibernate and suspend the system 14.3 服 務 啟 動 1. 查 看 服 務 postfix 狀 態, 目 前 為 active, 正 在 執 行 中 伱 [root@kvm7 ~]# systemctl status postfix.service postfix.service - Postfix Mail Transport Agent 伳 Loaded: loaded (/usr/lib/systemd/system/postfix.service; enabled) Active: active (running) since Fri 2014-08-15 21:05:20 CST; 1 min 6s ago 伵 Process: 2691 ExecStop=/usr/sbin/postfix stop (code=exited, status=0/success) Process: 2705 ExecStart=/usr/sbin/postfix start (code=exited, status=0/success) 伷 Process: 2703 ExecStartPre=/usr/libexec/postfix/chroot-update ( code=exited, status=0/success) Process: 2700 ExecStartPre=/usr/libexec/postfix/aliasesdb (code =exited, status=0/success) 伹 Main PID: 2777 (master) CGroup: /system.slice/postfix.service 伱 伱 2777 /usr/libexec/postfix/master -w 2778 pickup -l -t unix -u 伱 伳 2779 qmgr -l -t unix -u 伱 伵 Aug 15 21:05:20 kvm7.deyu.wang systemd[1]: Starting Postfix Mail Transport A... De-Yu Wang CSIE CYUT 131
14.3. 服 務 啟 動 CHAPTER 14. SYSTEMCTL 系 統 服 務 控 制 Aug 15 21:05:20 kvm7.deyu.wang postfix/master[2777]: daemon started -- versio... 伱 伷 Aug 15 21:05:20 kvm7.deyu.wang systemd[1]: Started Postfix Mail Transport Agent. Hint: Some lines were ellipsized, use -l to show in full. 2. 關 閉 服 務 postfix [root@kvm7 ~]# systemctl stop postfix.service 3. 查 看 服 務 postfix 狀 態, 目 前 為 inactive, 關 閉 中 伱 [root@kvm7 ~]# systemctl status postfix.service postfix.service - Postfix Mail Transport Agent 伳 Loaded: loaded (/usr/lib/systemd/system/postfix.service; enabled) Active: inactive (dead) since Fri 2014-08-15 21:04:09 CST; 10s ago 伵 Process: 2585 ExecStop=/usr/sbin/postfix stop (code=exited, status=0/success) Process: 1491 ExecStart=/usr/sbin/postfix start (code=exited, status=0/success) 伷 Process: 1486 ExecStartPre=/usr/libexec/postfix/chroot-update ( code=exited, status=0/success) Process: 1235 ExecStartPre=/usr/libexec/postfix/aliasesdb (code =exited, status=0/success) 伹 Main PID: 2134 (code=killed, signal=term) 伱 伱 伱 伳 伱 伵 Aug 15 17:51:48 kvm7.deyu.wang systemd[1]: Starting Postfix Mail Transport A... Aug 15 17:51:50 kvm7.deyu.wang postfix/master[2134]: daemon started -- versio... Aug 15 17:51:50 kvm7.deyu.wang systemd[1]: Started Postfix Mail Transport Agent. Aug 15 21:04:09 kvm7.deyu.wang systemd[1]: Stopping Postfix Mail Transport A... Aug 15 21:04:09 kvm7.deyu.wang systemd[1]: Stopped Postfix Mail Transport Agent. Hint: Some lines were ellipsized, use -l to show in full. 4. 查 看 服 務 postfix 目 前 是 否 啟 動? 結 果 為 inactive De-Yu Wang CSIE CYUT 132
14.4. 開 機 自 動 啟 動 服 務 CHAPTER 14. SYSTEMCTL 系 統 服 務 控 制 [root@kvm7 ~]# systemctl is-active postfix.service 伲 inactive 5. 啟 動 服 務 postfix [root@kvm7 ~]# systemctl start postfix.service 6. 再 查 看 服 務 postfix 目 前 是 否 啟 動? 結 果 為 active 伱 [root@kvm7 ~]# systemctl is-active postfix.service active 7. 也 可 以 用 restart 選 項, 重 新 啟 動 服 務 postfix [root@kvm7 ~]# systemctl restart postfix.service 8. 再 查 看 服 務 postfix 目 前 是 否 啟 動? 結 果 為 active 伱 [root@kvm7 ~]# systemctl is-active postfix.service active 14.4 開 機 自 動 啟 動 服 務 1. 查 看 服 務 postfix 開 機 是 否 自 動 啟 動? 結 果 為 enabled [root@kvm7 ~]# systemctl is-enabled postfix.service 伲 enabled 2. 關 閉 服 務 postfix 開 機 自 動 啟 動 De-Yu Wang CSIE CYUT 133
14.5. 永 久 關 閉 服 務 CHAPTER 14. SYSTEMCTL 系 統 服 務 控 制 [root@kvm7 ~]# systemctl disable postfix.service 伲 rm /etc/systemd/system/multi-user.target.wants/postfix.service 3. 再 查 看 服 務 postfix 開 機 是 否 自 動 啟 動? 結 果 為 disabled [root@kvm7 ~]# systemctl is-enabled postfix.service 伲 disabled 4. 再 啟 動 服 務 postfix 開 機 自 動 啟 動 [root@kvm7 ~]# systemctl enable postfix.service 伲 ln -s /usr/lib/systemd/system/postfix.service /etc/systemd/ system/multi-user.target.wants/postfix.service 5. 再 查 看 服 務 postfix 開 機 是 否 自 動 啟 動? 結 果 為 enabled [root@kvm7 ~]# systemctl is-enabled postfix.service 伲 enabled 14.5 永 久 關 閉 服 務 1. mask 服 務 postfix, 使 這 個 服 務 無 論 開 機 或 手 動 都 無 法 啟 動 [root@kvm7 ~]# systemctl mask postfix.service 伲 ln -s /dev/null /etc/systemd/system/postfix.service 2. 啟 動 服 務 postfix [root@kvm7 ~]# systemctl enable postfix.service De-Yu Wang CSIE CYUT 134
14.6. 失 效 的 服 務 CHAPTER 14. SYSTEMCTL 系 統 服 務 控 制 3. 查 看 服 務 postfix 是 否 啟 動, 結 果 為 masked 伱 [root@kvm7 ~]# systemctl is-enabled postfix.service masked 4. unmask 服 務 postfix, 解 除 這 個 服 務 的 鎖 定 [root@kvm7 ~]# systemctl unmask postfix.service 伲 rm /etc/systemd/system/postfix.service 5. 再 查 看 服 務 postfix 是 否 啟 動, 結 果 為 enabled [root@kvm7 ~]# systemctl is-enabled postfix.service 伲 enabled 14.6 失 效 的 服 務 1. 查 看 失 效 的 服 務 [root@kvm7 ~]# systemctl --failed --type=service 伲 UNIT LOAD ACTIVE SUB DESCRIPTION kdump.service loaded failed failed Crash recovery kernel arming 伴 rhnsd.service loaded failed failed LSB: Starts the Spacewalk Daemon 伶 LOAD = Reflects whether the unit definition was properly loaded. ACTIVE = The high-level unit activation state, i.e. generalization of SUB. 伸 SUB = The low-level unit activation state, values depend on unit type. 伱 估 2 loaded units listed. Pass --all to see loaded but inactive units, too. To show all installed unit files use systemctl list-unit-files. De-Yu Wang CSIE CYUT 135
14.6. 失 效 的 服 務 CHAPTER 14. SYSTEMCTL 系 統 服 務 控 制 De-Yu Wang CSIE CYUT 136
CHAPTER 15. CHRONYD VS. NTPD 校 時 Chapter 15 Chronyd vs. ntpd 校 時 15.1 前 言 1. RHEL/CentOS 7 校 時 新 套 件 chrony 取 代 ntp (a) 更 快 速 以 及 更 精 確 的 同 步 (b) 頻 率 校 正 的 範 圍 較 大 (c) 擁 有 對 於 時 鐘 頻 率 快 速 變 更 的 反 應 速 度 (d) 在 初 始 同 步 後 不 會 發 生 clock stepping Stepping 意 思 是 時 間 突 然 從 不 正 確 的 時 間 一 步 調 到 正 確 時 間 的 合 理 誤 差 時 間, 如 果 誤 差 小 於 128ms 則 以 slewing 擺 動 修 正 (e) 適 用 於 間 歇 性 的 網 路 連 線 2. chrony 不 完 全 支 援 ntp 中 的 所 有 可 用 功 能, 因 此 基 於 相 容 性 上 的 原 因,RHEL/CentOS 依 然 提 供 ntp 套 件, 使 用 時 必 須 明 確 地 移 除 chrony 並 安 裝 ntp 來 代 替 3. Chrony 的 時 間 設 定 演 算 法 擁 有 幾 項 ntp 實 作 所 沒 有 的 優 點 15.2 chronyd 使 用 1. chrony 是 RHEL/CentOS 7 預 設 的 校 時 dameon, 設 定 檔 在 /etc/chrony.conf, 新 增 校 時 伺 服 器 server.deyu.wang, 其 中 iburst 選 項 是 用 來 加 速 初 始 同 步 伱 [root@kvm81 ~]# vim /etc/chrony.conf [root@kvm81 ~]# grep deyu /etc/chrony.conf 伳 server server.deyu.wang iburst De-Yu Wang CSIE CYUT 137
15.2. CHRONYD 使 用 CHAPTER 15. CHRONYD VS. NTPD 校 時 2. 重 新 啟 動 chronyd 伱 [root@kvm81 ~]# systemctl restart chronyd.service 3. chronyd 預 設 開 機 啟 動, 不 放 心 可 再 設 定 一 次 伱 [root@kvm81 ~]# systemctl enable chronyd.service 4. 追 chronyd 校 時 來 源 伺 服 器 伱 [root@kvm81 ~]# chronyc tracking Reference ID : 192.168.122.1 (deyu.wang) 伳 Stratum : 4 Ref time (UTC) : Tue Jan 20 03:01:00 2015 伵 System time : 124520.273437500 seconds slow of NTP time Last offset : 0.000016787 seconds 伷 RMS offset : 11733.896484375 seconds Frequency : 0.074 ppm slow 伹 Residual freq : 0.007 ppm Skew : 0.413 ppm 伱 伱 Root delay : 0.006454 seconds Root dispersion : 0.045809 seconds 伱 伳 Update interval : 59.5 seconds Leap status : Normal 5. 使 用 chronyc 命 令 檢 查 chronyd 校 時 來 源 伺 服 器,server.deyu.wang 已 在 表 列 中 [root@kvm81 ~]# chronyc sources 伲 210 Number of sources = 5 MS Name/IP address Stratum Poll Reach LastRx Last sample 伴 =============================================================================== ^- server.deyu.wang 3 6 177 52-837us[ -831 us] +/- 55ms 伶 ^- ns.rpb.gov.tw 2 6 377 48 +3203us[+3209 us] +/- 426ms ^+ 117-56-73-145.HINET-IP.hi 3 6 377 241-102us[ +142 us] +/- 106ms De-Yu Wang CSIE CYUT 138
15.2. CHRONYD 使 用 CHAPTER 15. CHRONYD VS. NTPD 校 時 伸 ^+ 220-135-58-124.HINET-IP.h 3 6 377 47 +248us[ +248 us] +/- 76ms ^* 123-204-45-116.static.see 3 6 377 50-636us[ -630 us] +/- 67ms 6. chronyc 是 互 動 式 指 令, 若 不 知 道 此 指 令 可 以 使 用 哪 些 command? 可 以 先 進 入 其 互 動 式 模 式 中, 輸 入 help 命 令, 就 可 以 列 出 可 用 的 command 伱 [root@kvm7 ~]# chronyc chrony version 1.29.1 伳 Copyright (C) 1997-2003, 2007, 2009-2013 Richard P. Curnow and others chrony comes with ABSOLUTELY NO WARRANTY. This is free software, and 伵 you are welcome to redistribute it under certain conditions. See the GNU General Public License version 2 for details. 伷 chronyc> help 伹 Commands: accheck <address> : Check whether NTP access is allowed to < address> 伱 伱 activity : Check how many NTP sources are online/offline add peer <address>... : Add a new NTP peer 伱 伳 add server <address>... : Add a new NTP server allow [<subnet-addr>] : Allow NTP access to that subnet as a default 伱 伵 allow all [<subnet-addr>] : Allow NTP access to that subnet and all children burst <n-good>/<n-max> [<mask>/<masked-address>] : Start a rapid set of measurements 伱 伷 clients : Report on clients that have accessed the server cmdaccheck <address> : Check whether command access is allowed to <address> 伱 伹 cmdallow [<subnet-addr>] : Allow command access to that subnet as a default cmdallow all [<subnet-addr>] : Allow command access to that subnet and all children 伲 伱 cmddeny [<subnet-addr>] : Deny command access to that subnet as a default cmddeny all [<subnet-addr>] : Deny command access to that subnet and all children 伲 伳 cyclelogs : Close and re-open logs files delete <address> : Remove an NTP server or peer 伲 伵 deny [<subnet-addr>] : Deny NTP access to that subnet as a default deny all [<subnet-addr>] : Deny NTP access to that subnet and all children De-Yu Wang CSIE CYUT 139
15.2. CHRONYD 使 用 CHAPTER 15. CHRONYD VS. NTPD 校 時 伲 伷 伲 伹 伳 伱 伳 伳 伳 伵 伳 伷 伳 伹 伴 伱 伴 伳 伴 伵 伴 伷 伴 伹 伵 伱 伵 伳 伵 伵 伵 伷 伵 伹 伶 伱 dump : Dump all measurements to save files local off : Disable server capability for unsynchronised clock local stratum <stratum> : Enable server capability for unsynchronised clock makestep : Jump the time to remove any correction being slewed manual off on reset : Disable/enable/reset settime command and statistics manual list : Show previous settime entries maxdelay <address> <new-max-delay> : Modify maximum round-trip valid sample delay for source maxdelayratio <address> <new-max-ratio> : Modify max round-trip delay ratio for source maxdelaydevratio <address> <new-max-ratio> : Modify max roundtrip delay dev ratio for source maxpoll <address> <new-maxpoll> : Modify maximum polling interval of source maxupdateskew <new-max-skew> : Modify maximum skew for a clock frequency update to be made minpoll <address> <new-minpoll> : Modify minimum polling interval of source minstratum <address> <new-min-stratum> : Modify minimum stratum of source offline [<mask>/<masked-address>] : Set sources in subnet to offline status online [<mask>/<masked-address>] : Set sources in subnet to online status password [<new-password>] : Set command authentication password polltarget <address> <new-poll-target> : Modify poll target of source reselect : Reselect synchronisation source rtcdata : Print current RTC performance parameters settime <date/time (e.g. Nov 21, 1997 16:30:05 or 16:30:05)> : Manually set the daemon time sources [-v] : Display information about current sources sourcestats [-v] : Display estimation information about current sources tracking : Display system time information trimrtc : Correct RTC relative to system clock waitsync [max-tries [max-correction [max-skew]]] : Wait until synchronised writertc : Save RTC parameters to file authhash <name>: Set command authentication hash function dns -n +n : Disable/enable resolving IP addresses to hostnames dns -4-6 -46 : Resolve hostnames only to IPv4/IPv6/both addresses timeout <milliseconds> : Set initial response timeout retries <n> : Set maximum number of retries exit quit : Leave the program help : Generate this help De-Yu Wang CSIE CYUT 140
15.2. CHRONYD 使 用 CHAPTER 15. CHRONYD VS. NTPD 校 時 chronyc> 7. 重 新 啟 動 chronycd [root@kvm81 ~]# systemctl restart chronyd.service 8. 以 -l 選 項 查 看 chrony 自 動 校 時 狀 態 及 工 作 紀 錄, 倒 數 第 二 行, 系 統 調 整 時 間 127369.424623 秒 伱 [root@kvm81 ~]# systemctl status chronyd.service -l chronyd.service - NTP client/server 伳 Loaded: loaded (/usr/lib/systemd/system/chronyd.service; enabled) Active: active (running) since Mon 2015-01-19 01:26:00 CST; 1 day 11h ago 伵 Process: 18379 ExecStartPost=/usr/libexec/chrony-helper adddhclient-servers (code=exited, status=0/success) Process: 18376 ExecStart=/usr/sbin/chronyd -u chrony $OPTIONS ( code=exited, status=0/success) 伷 Main PID: 18378 (chronyd) CGroup: /system.slice/chronyd.service 伹 18378 /usr/sbin/chronyd -u chrony 伱 伱 伱 伳 Jan 19 01:26:00 kvm81.deyu.wang systemd[1]: Starting NTP client/ server... Jan 19 01:26:00 kvm81.deyu.wang chronyd[18378]: chronyd version 1.29.1 starting Jan 19 01:26:00 kvm81.deyu.wang chronyd[18378]: Linux kernel major=3 minor=10 patch=0 Jan 19 01:26:00 kvm81.deyu.wang chronyd[18378]: hz=100 shift_hz=7 freq_scale=1.00000000 nominal_tick=10000 slew_delta_tick=833 max_tick_bias=1000 shift_pll=2 伱 伵 Jan 19 01:26:00 kvm81.deyu.wang chronyd[18378]: Frequency 0.008 +/- 0.068 ppm read from /var/lib/chrony/drift Jan 19 01:26:00 kvm81.deyu.wang systemd[1]: Started NTP client/ server. 伱 伷 伱 伹 Jan 19 01:26:08 kvm81.deyu.wang chronyd[18378]: Selected source 120.119.28.1 Jan 19 01:26:08 kvm81.deyu.wang chronyd[18378]: System clock wrong by 127369.424623 seconds, adjustment started Jan 20 12:48:57 kvm81.deyu.wang chronyd[18378]: System clock was stepped by 127369.425 seconds De-Yu Wang CSIE CYUT 141
15.3. NTPD 使 用 CHAPTER 15. CHRONYD VS. NTPD 校 時 9. chronyc 手 動 校 時 伱 [root@kvm81 ~]# date -s 2015-01-19 Mon Jan 19 00:00:00 CST 2015 伳 [root@kvm81 ~]# chronyc -a makestep 伵 200 OK 200 OK [root@kvm81 ~]# date 伷 Tue Jan 20 11:27:29 CST 2015 15.3 ntpd 使 用 1. 沒 移 除 chrony 套 件, 直 接 安 裝 ntp, 啟 動 後 看 似 一 切 正 常, 但 在 重 新 開 機 後, 因 與 chrony 衝 突, 而 無 法 正 常 啟 動 伱 [root@kvm81 ~]# yum install ntp [root@kvm81 ~]# grep deyu.wang /etc/ntp.conf 伳 server deyu.wang [root@kvm81 ~]# systemctl restart ntpd.service 伵 [root@kvm81 ~]# systemctl enable ntpd.service ln -s /usr/lib/systemd/system/ntpd.service /etc/systemd/system /multi-user.target.wants/ntpd.service 伷 [root@kvm81 ~]# ntpq -p remote refid st t when poll reach delay offset jitter 伹 ============================================================================== +deyu.wang 59.124.29.241 3 u 16 64 1 0.129 1.627 0.000 伱 伱 -117-56-223-235. 211.79.171.1 3 u 5 64 1 7.207 3.873 0.294 +220-135-58-124. 118.163.81.62 3 u 4 64 1 20.359-0.722 0.157 伱 伳 *sun.stu.edu.tw 133.100.10.8 2 u 3 64 1 8.500 0.582 0.335 2. 若 要 使 用 ntp, 則 必 須 關 閉 chrony 開 機 啟 動, 也 就 是 disable 伱 [root@kvm81 ~]# systemctl disable chronyd.service rm /etc/systemd/system/multi-user.target.wants/chronyd.service De-Yu Wang CSIE CYUT 142
15.3. NTPD 使 用 CHAPTER 15. CHRONYD VS. NTPD 校 時 3. 或 者 直 接 移 除 chrony, 移 除 時 注 意 其 相 依 套 件 是 否 確 定 要 移 除 [root@kvm81 ~]# yum remove chrony De-Yu Wang CSIE CYUT 143
15.3. NTPD 使 用 CHAPTER 15. CHRONYD VS. NTPD 校 時 De-Yu Wang CSIE CYUT 144
CHAPTER 16. NETWORK FILE SYSTEM, NFS Chapter 16 Network File System, NFS 16.1 NFS 簡 介 1. 讓 遠 端 主 機 可 以 掛 載 使 用 本 機 的 檔 案 系 統 2. 系 統 管 理 員 可 藉 NFS 整 合 網 路 上 的 服 務 器 例 如 : 多 台 主 機 使 用 相 同 的 LDAP 提 供 的 帳 號, 同 一 帳 號 當 然 使 用 相 同 的 家 目 錄, 若 各 主 機 上 都 各 自 建 立 每 一 用 戶 的 家 目 錄, 則 用 戶 的 資 料 將 無 法 同 步 此 時 使 用 NFS 就 可 提 拱 家 目 錄 的 整 合 3. RHEL 6 (CentOS 6) 支 援 NFSv2, NFSv3, NFSv4 4. NFS 需 要 nfslock 及 rpcbind 服 務 但 NFSv4 不 再 使 用 rpcbind 16.2 NFS Client 端 設 定 1. 安 裝 套 件 nfs-utils 伱 [root@kvm7 ~]# yum install nfs-utils 2. 掃 瞄 NFS 伺 服 器 分 享 的 目 錄, 並 瞭 解 是 否 可 以 使 用 (showmount); 伱 [root@kvm7 ~]# showmount -e deyu.wang Export list for deyu.wang: 伳 /home/guests 192.168.122.0/255.255.255.0 3. 建 立 掛 載 NFS 的 掛 載 點 /home/guests, 目 錄 內 沒 有 任 何 檔 案 或 次 目 錄 De-Yu Wang CSIE CYUT 145
16.2. NFS CLIENT 端 設 定 CHAPTER 16. NETWORK FILE SYSTEM, NFS 伱 [root@kvm7 ~]# mkdir /home/guests [root@kvm7 ~]# ll /home/guests 伳 total 0 4. 手 動 掛 載 NFS 於 掛 載 點 /home/guests, 目 錄 內 出 現 ldapuser1 及 ldapuser2 兩 個 目 錄 伱 [root@kvm7 ~]# mount deyu.wang:/home/guests /home/guests [root@kvm7 ~]# ll /home/guests 伳 total 8 drwxr-xr-x. 2 deyu2 deyu1 4096 Apr 23 2014 ldapuser1 伵 drwxr-xr-x. 2 deyu3 deyu2 4096 Apr 23 2014 ldapuser2 5. 查 詢 掛 載 狀 況 伱 [ldapuser1@kvm7 ~]$ df -h Filesystem Size Used Avail Use% Mounted on 伳 /dev/mapper/vg_kvm7usb-root 3.1G 1.2G 1.7G 43% / devtmpfs 488M 0 488M 0% /dev 伵 tmpfs 497M 0 497M 0% /dev/shm tmpfs 497M 6.6M 491M 2% /run 伷 tmpfs 497M 0 497M 0% /sys/fs/cgroup /dev/mapper/vg_mntx-pubx 24M 0 24M 0% /mnt/pub 伹 /dev/mapper/vg_kvm7home-vo 74M 1.6M 68M 3% /home /dev/vda1 197M 150M 47M 77% /boot 伱 伱 deyu.wang:/home/guests 48G 36G 11G 78% /home/guests 6. 切 換 身 份 為 ldapuser1, 已 經 有 自 己 的 家 目 錄 /home/guests/ldapuser1 伱 [root@kvm7 ~]# su - ldapuser1 Last login: Wed Nov 11 10:22:31 CST 2015 on pts/1 伳 [ldapuser1@kvm7 ~]$ pwd /home/guests/ldapuser1 7. 登 出 ldapuser1 De-Yu Wang CSIE CYUT 146
16.3. 自 動 掛 載 AUTOFS 的 使 用 CHAPTER 16. NETWORK FILE SYSTEM, NFS [ldapuser1@kvm7 ~]$ exit 伲 logout 8. 將 掛 載 的 NFS 目 錄 卸 載 [root@kvm7 ~]# umount /home/guests/ 伲 [root@kvm7 ~]# ls /home/g* 9. NFS 特 殊 的 掛 載 參 數 參 數 預 設 內 容 意 義 fg/bg fg 當 執 行 掛 載 時, 該 掛 載 的 行 為 會 在 前 景 (fg) 還 是 在 背 景 (bg) 執 行 soft/hard hard 當 兩 者 之 間 有 任 何 一 部 主 機 離 線,hard RPC 會 持 續 的 呼 叫, 直 到 對 方 恢 復 連 線 為 止 ;soft RPC 會 在 time out 後 重 複 呼 叫, 而 非 持 續 呼 叫 intr 沒 中 斷 使 用 hard 方 式 掛 載 若 加 上 intr, 則 當 RPC 持 續 呼 叫 中, 該 次 呼 叫 可 以 被 中 斷 rsize/wrize1024 讀 出 (rsize) 與 寫 入 (wsize) 的 區 塊 大 小 (block size) 10. 開 機 即 掛 載 NFS [root@kvm7 ~]# vim /etc/fstab 伲 deyu.wang:/home/guests /home/guests nfs nosuid,noexec,nodev,rw,bg,soft 0 0 16.3 自 動 掛 載 autofs 的 使 用 1. 為 何 需 要 自 動 掛 載 autofs? (a) 讓 用 戶 端 在 有 使 用 到 NFS 檔 案 系 統 時 才 掛 載 ; (b) 不 需 要 事 先 建 立 掛 載 點 ; (c) 當 NFS 檔 案 系 統 使 用 完 畢 後, 讓 NFS 自 動 卸 載, 以 避 免 可 能 的 RPC 錯 誤 De-Yu Wang CSIE CYUT 147
16.3. 自 動 掛 載 AUTOFS 的 使 用 CHAPTER 16. NETWORK FILE SYSTEM, NFS 2. 安 裝 套 件, 系 統 應 該 已 經 安 裝 了 [root@kvm7 ~]# rpm -qa grep autofs 伲 autofs-5.0.7-48.el7.x86_64 3. 掃 瞄 NFS 伺 服 器 分 享 的 目 錄, 並 瞭 解 是 否 可 以 使 用 (showmount); [root@kvm7 ~]# showmount -e deyu.wang 伲 Export list for deyu.wang: /home/guests 192.168.122.0/255.255.255.0 4. 確 認 先 載 /home/guests 伱 [root@kvm7 ~]# #mount deyu.wang:/home/guests /home/guests [root@kvm7 ~]# umount /home/guests/ 5. 建 立 主 要 設 定 檔 /etc/auto.master [root@kvm7 ~]# vim /etc/auto.master 伲 /home/guests /etc/auto.dyw 伴 # 預 設 目 錄 <> 資 料 對 應 檔 <> # 預 設 目 錄 : 用 戶 端 要 使 用 /home/guests/, 會 到 資 料 對 應 檔 中 找 次 目 錄 ldapuser1 ldapuser1 的 對 應 伶 # 資 料 對 應 檔 的 檔 名 是 可 以 自 行 設 定 的, 此 例 中 使 用 /etc/auto. guests 6. 建 立 資 料 對 應 檔 內 的 掛 載 資 訊, 若 NFS server 有 限 制 版 本 為 v3, 則 必 須 加 入 參 數 -vers=3 但 -fstype=nfs,-vers=3 無 效,-fstype=nfs 參 數 必 須 刪 除 或 放 -vers=3 之 後, 如 -vers=3,-fstype=nfs 因 實 際 掛 載, 系 統 可 自 動 判 讀 其 為 NFS 檔 案 格 式, 故 建 議 刪 除 -fstype=nfs 參 數 資 料 對 應 檔 格 式 : 本 地 端 目 錄 伲 [] 掛 載 參 數 [-] 伺 服 器 所 提 供 的 目 錄 [] 參 數 : 本 地 端 目 錄 伴 De-Yu Wang CSIE CYUT 148
16.3. 自 動 掛 載 AUTOFS 的 使 用 CHAPTER 16. NETWORK FILE SYSTEM, NFS [] : 指 的 是 在 /etc/auto.master 內 指 定 的 目 錄 之 次 目 錄 掛 載 參 數 伶 [-] : 就 是 rw,bg,soft 等 參 數, 可 有 可 無 ; 伺 服 器 所 提 供 的 目 錄 [] : 例 如 163.17.27.219:/home 等 伸 [root@kvm7 ~]# vim auto.dyw 伱 估 #* -fstype=nfs,-vers=3 deyu.wang:/home/guests/& #* -vers=3,-fstype=nfs deyu.wang:/home/guests/& 伱 伲 * -vers=3 deyu.wang:/home/guests/& ## 本 地 端 目 錄 "*" 表 示 /home/guests 下 的 任 何 次 目 錄 伱 伴 ## 伺 服 器 提 供 的 目 錄 deyu.wang:/home/guests/& 中 "&" 表 示 對 應 到 "*" ## 當 使 用 到 目 錄 /home/guests/, 則 ldapuser1 "*" 及 "&" 即 為 ldapuser1 7. 不 加 任 何 參 數 的 掛 載 [root@kvm7 ~]# vim /etc/auto.dyw 伲 [root@kvm7 ~]# cat /etc/auto.dyw * deyu.wang:/home/guests/& 8. 設 定 開 機 即 啟 動 autofs 伱 [root@kvm7 ~]# systemctl enable autofs ln -s /usr/lib/systemd/system/autofs.service /etc/systemd/ system/multi-user.target.wants/autofs.service 9. 啟 動 autofs 服 務 [root@kvm7 ~]# systemctl start autofs 10. 確 認 目 前 並 沒 有 掛 載 任 何 來 自 deyu.wang NFS 伺 服 器 的 目 錄 伱 [root@kvm7 ~]# df -h Filesystem Size Used Avail Use% Mounted on 伳 /dev/mapper/vg_kvm7usb-root 3.1G 1.2G 1.7G 43% / devtmpfs 488M 0 488M 0% /dev 伵 tmpfs 497M 0 497M 0% /dev/shm tmpfs 497M 6.6M 491M 2% /run De-Yu Wang CSIE CYUT 149
16.3. 自 動 掛 載 AUTOFS 的 使 用 CHAPTER 16. NETWORK FILE SYSTEM, NFS 伷 tmpfs 497M 0 497M 0% /sys/fs/cgroup /dev/mapper/vg_mntx-pubx 24M 0 24M 0% /mnt/pub 伹 /dev/mapper/vg_kvm7home-vo 74M 1.6M 68M 3% /home /dev/vda1 197M 150M 47M 77% /boot 11. 登 入 ldapuser1, 使 用 到 家 目 錄 /home/guests/ldapuser1, 此 時 檔 案 系 統 自 動 掛 載 [root@kvm7 ~]# su - ldapuser1 伲 Last login: Wed Nov 11 10:30:49 CST 2015 on pts/1 [ldapuser1@kvm7 ~]$ pwd 伴 /home/guests/ldapuser1 12. 登 出 ldapuser1 [ldapuser1@kvm7 ~]$ exit 伲 logout 13. 查 看 掛 載 狀 況,/home/guests/ldapuser1 已 被 掛 載 [root@kvm7 ~]# df -h 伲 Filesystem Size Used Avail Use% Mounted on /dev/mapper/vg_kvm7usb-root 3.1G 1.2G 1.7G 43% / 伴 devtmpfs 488M 0 488M 0% /dev tmpfs 497M 0 497M 0% /dev/shm 伶 tmpfs 497M 6.6M 491M 2% /run tmpfs 497M 0 497M 0% /sys/fs/ cgroup 伸 /dev/mapper/vg_mntx-pubx 24M 0 24M 0% /mnt/pub /dev/mapper/vg_kvm7home-vo 74M 1.6M 68M 3% /home 伱 估 /dev/vda1 197M 150M 47M 77% /boot deyu.wang:/home/guests/ldapuser1 48G 36G 11G 78% /home/ guests/ldapuser1 14. 從 遠 端 以 帳 號 ldapuser1 登 入 kvm7.deyu.wang, 看 是 否 可 以 自 動 掛 載 其 家 目 錄 De-Yu Wang CSIE CYUT 150
16.4. NFS 掛 載 非 常 慢 CHAPTER 16. NETWORK FILE SYSTEM, NFS 伱 [test from host deyu.wang] [root@deyu ~]# ssh ldapuser1@kvm7.deyu.wang 伳 ldapuser1@kvm7.deyu.wang s password: [ldapuser1@kvm7 ~]$ pwd 伵 /home/guests/ldapuser1 16.4 NFS 掛 載 非 常 慢 1. 掛 載 很 慢, 但 最 後 是 掛 載 成 功, 往 往 是 NFS server 限 制 掛 載 版 本, 而 client 預 設 掛 載 版 本 掛 載 版 本 不 成 功, 進 而 再 嘗 試 其 他 版 本 的 掛 載 2. 解 決 方 式 : 先 查 server 端 的 的 設 定, 以 下 例 子 是 限 制 不 能 使 用 v2 及 v4 伱 [root@deyu ~]# grep RPCNFS /etc/sysconfig/nfs RPCNFSDARGS="-N 2 -N 4" 3. Client 端 查 詢 掛 載 的 版 本, 確 實 為 v3 [root@kvm7 ~]# nfsstat -m 伲 /home/guests/ldapuser1 from deyu.wang:/home/guests/ldapuser1 Flags: rw,relatime,vers=3,rsize=1048576,wsize=1048576,\ 伴 namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,\ mountaddr=192.168.122.1,mountvers=3,mountport=44465,\ 伶 mountproto=udp,local_lock=none,addr=192.168.122.1 4. Client 預 設 掛 載 版 本 為 v4, 如 果 server 端 不 能 更 動,client 端 自 動 掛 載 就 必 須 指 定 掛 載 版 本 -vers=3, 這 樣 掛 載 就 會 快 速 5. 由 於 NFS v4 已 不 使 用 rpcbind 服 務, 所 以 若 以 v4 版 本 掛 載, 就 可 以 不 管 rpcbind 服 務 是 否 啟 動 ; 反 之, 若 不 是 以 v4 版 本 掛 載, 則 要 確 定 client 端 rpcbind 服 務 是 否 啟 動, 否 則 會 掛 載 不 起 來 De-Yu Wang CSIE CYUT 151
16.4. NFS 掛 載 非 常 慢 CHAPTER 16. NETWORK FILE SYSTEM, NFS De-Yu Wang CSIE CYUT 152
CHAPTER 17. 資 料 導 向 與 管 線 處 理 Chapter 17 資 料 導 向 與 管 線 處 理 17.1 為 何 要 使 用 命 令 輸 出 重 導 向? 1. 儲 存 螢 幕 輸 出 的 資 訊 ; 2. 背 景 執 行 中 的 程 式, 不 希 望 他 干 擾 螢 幕 正 常 的 輸 出 結 果 時 ; 3. 儲 存 系 統 例 行 命 令 ( 例 如 寫 在 /etc/crontab 中 的 檔 案 ) 的 執 行 結 果 ; 4. 將 已 知 的 可 能 錯 誤 訊 息 丟 掉 2> /dev/null ; 5. 錯 誤 訊 息 與 正 確 訊 息 需 要 分 別 輸 出 時 17.2 資 料 流 重 導 向 1. 指 令 執 行 過 程 之 資 料 傳 輸 file standard input command standard output file/device standard error file/device 2. 執 行 cat /etc/crontab /etc/dywang,standard input 與 standard output 同 時 出 現 [dywang@dywhome ~]$ cat /etc/crontab /etc/dywang 伲 # /etc/crontab 存 在, 螢 幕 出 現 以 下 standard output SHELL=/bin/bash 伴 MAILTO=root 伶 HOME=/ De-Yu Wang CSIE CYUT 153
17.2. 資 料 流 重 導 向 CHAPTER 17. 資 料 導 向 與 管 線 處 理 伸 # run-parts 01 * * * * root nice -n 19 run-parts --report /etc/cron.hourly 伱 估 02 4 * * * root nice -n 19 run-parts --report /etc/cron.daily 22 4 * * 0 root nice -n 19 run-parts --report /etc/cron.weekly 伱 伲 42 4 1 * * root nice -n 19 run-parts --report /etc/cron.monthly # /etc/dywang 不 存 在, 螢 幕 出 現 以 下 standard error 伱 伴 cat: /etc/dywang: No such file or directory 3. 傳 送 指 令 (a) 標 準 輸 入 (stdin) : 代 碼 為 0, 使 用 < 或 <<; (b) 標 準 輸 出 (stdout): 代 碼 為 1, 使 用 > 或 >>; (c) 標 準 錯 誤 輸 出 (stderr): 代 碼 為 2, 使 用 2> 或 2>>; >, 1> 標 準 輸 出 至 檔 案, 該 檔 案 被 覆 蓋 或 建 立 >>, 1>> 標 準 輸 出 至 檔 案, 該 檔 案 被 建 立 或 累 加 command 2> 裝 置 或 檔 案 錯 誤 輸 出 至 檔 案, 該 檔 案 被 覆 蓋 或 建 立 2>> 錯 誤 輸 出 至 檔 案, 該 檔 案 被 建 立 或 累 加 < 輸 入 << 結 束 的 輸 入 字 元 4. 檔 案 的 建 立 方 式 [root@linux ~]# ls -l / > ~/rootfile 伲 # 將 ls -l / 要 列 出 到 螢 幕 上 的 資 料 重 新 導 向 到 ~/rootfile 檔 案 (a) 該 檔 案 ( 本 例 中 是 ~/rootfile ) 若 不 存 在, 系 統 會 自 動 建 立 ; (b) 檔 案 存 在 時, 系 統 會 先 將 檔 案 內 容 清 空 再 將 資 料 寫 入 ; (c) 以 > 輸 出 到 一 個 既 存 檔 案 中, 該 檔 案 會 被 覆 蓋 5. 下 達 > 與 >> # 將 目 前 目 錄 下 的 檔 案 資 訊 儲 存 到 list.txt 伲 [root@linux ~]# ls -al > list.txt 伴 # 將 根 目 錄 下 的 資 料 累 加 到 list.txt [root@linux ~]# ls -al / >> list.txt 6. 下 達 2> De-Yu Wang CSIE CYUT 154
17.2. 資 料 流 重 導 向 CHAPTER 17. 資 料 導 向 與 管 線 處 理 伱 [csie@linux ~]$ find /home -name testing find: /home/test1: Permission denied <== Starndard error 伳 find: /home/root: Permission denied <== Starndard error find: /home/masda: Permission denied <== Starndard error 伵 /home/csie/testing <== Starndard output 伷 [csie@linux ~]$ find /home -name testing > list_right 2> list_error [csie@linux ~]$ find /home -name testing > list_right 2> /dev/ null 7. 下 達 2>&1: 標 準 輸 出 與 標 準 錯 誤 輸 出 同 時 寫 入 同 一 個 檔 案 [csie@linux ~]$ find /home -name testing > list 2> list 法 伲 ## 習 題 : 請 問 上 面 命 令 的 執 行 結 果 為 何? [csie@linux ~]$ find /home -name testing > list 2>&1 法 <== 錯 誤 寫 <== 正 確 寫 8. 使 用 grep 命 令 過 濾 檔 案 /usr/share/doc/autofs-5.0.7/readme 中 包 含 configure 字 串 的 所 有 行, 共 有 3 行 伱 [root@kvm7 ~]# grep configure /usr/share/doc/autofs-5.0.7/readme./configure 伳 to configure the system. See README.options for options that you can give configure. 9. grep 命 令 過 濾 檔 案 /usr/share/doc/autofs-5.0.7/readme 中 包 含 configure 字 串 的 3 行 原 先 顥 示 在 螢 幕 上, 現 導 向 到 檔 案 /root/autofs.txt [root@kvm7 ~]# grep configure /usr/share/doc/autofs-5.0.7/readme > /root/autofs.txt 10. 查 看 檔 案 /root/autofs.txt 內 容, 與 grep 命 令 過 濾 檔 案 /usr/share/doc/autofs-5.0.7/readme 中 包 含 configure 字 串 的 3 行 完 全 一 樣 伱 [root@kvm7 ~]# cat /root/autofs.txt./configure De-Yu Wang CSIE CYUT 155
17.3. 管 線 命 令 (PIPE) CHAPTER 17. 資 料 導 向 與 管 線 處 理 伳 to configure the system. See README.options for options that you can give configure. 17.3 管 線 命 令 (pipe) 1. 管 線 命 令 的 處 理 STDOUT STDIN STDOUT STDIN command1 command2 command3 2. 例 題 : 使 用 ls 指 令 輸 出 後 的 內 容, 被 less 讀 取, 並 且 利 用 less 的 功 能 前 後 翻 動 相 關 的 資 訊 [root@linux ~]# ls -al /etc less 3. 參 數 代 換 :xargs 可 以 讀 入 stdin 的 資 料, 並 且 以 空 白 字 元 或 斷 行 字 元 作 為 分 辨, 將 stdin 的 資 料 分 隔 成 為 arguments 伱 [root@linux ~]# xargs [-0epn] command 選 項 : 伳 -0 : 如 果 輸 入 的 stdin 含 有 特 殊 字 元, 例 如, \, 空 白 鍵 等 等 字 元 時, 這 個 -0 參 數 可 以 將 他 還 原 成 一 般 字 元 伵 -e : EOF (end of file) 當 xargs 分 析 到 其 後 接 的 字 串 時, 會 停 止 繼 續 工 作 -p : 在 執 行 每 個 指 令 的 argument 時, 都 會 詢 問 使 用 者 ; 伷 -n : 後 面 接 次 數, 每 次 command 指 令 執 行 時, 要 使 用 幾 個 參 數 看 範 例 三 當 xargs 後 面 沒 有 接 任 何 的 指 令 時, 預 設 是 以 echo 來 進 行 輸 出 17.4 檔 案 的 搜 尋 1. find: 功 能 強 大 的 檔 案 搜 尋 指 令 De-Yu Wang CSIE CYUT 156
17.4. 檔 案 的 搜 尋 CHAPTER 17. 資 料 導 向 與 管 線 處 理 [root@kvm7 ~]# find [PATH] [option] [action] 參 數 : 伲 1. 與 時 間 有 關 的 參 數 : 伴 -atime n : 在 n 天 之 前 的 一 天 之 內 被 access 過 的 檔 案 ; -ctime n : 在 n 天 之 前 的 一 天 之 內 被 change 過 狀 態 的 檔 案 ; 伶 -mtime n : 在 n 天 之 前 的 一 天 之 內 被 modification 過 的 檔 案 ; -newer file : 比 檔 案 file 還 新 的 檔 案 伸 2. 與 使 用 者 或 群 組 名 稱 有 關 的 參 數 : -uid n : 使 用 者 的 帳 號, IDUID=n 的 檔 案 伱 估 -gid n : 群 組 名 稱 的, IDGID=n 的 檔 案 -user name : 使 用 者 帳 號 名 稱 為 name 的 檔 案 伱 伲 -group : 群 組 名 稱 為 name name 的 檔 案 -nouser : 檔 案 的 擁 有 者 不 存 在 的 檔 案 伱 伴 -nogroup : 檔 案 的 擁 有 群 組 不 存 在 的 檔 案 3. 與 檔 案 權 限 及 名 稱 有 關 的 參 數 : 伱 伶 -name : 檔 案 名 稱 為 filename filename 的 檔 案 ; -size [+-]: 比 SIZE SIZE 還 要 大 (+) 或 小 (-) 的 檔 案 SIZE 的 規 格 有 : 伱 伸 c:,byte k:1024 例 如 :bytes-size +50 k -type TYPE : 檔 案 的 類 型 為 TYPE 的 檔 案, 類 型 主 要 有 : 一 般 正 規 檔 案 (f), 裝 置 檔 案 伲 估 (b, c), 目 錄 (d), 連 結 檔 (l), socket (s), 及 FIFO (p) 等 屬 性 伲 伲 -perm mode : 檔 案 屬 性 剛 好 等 於 mode 的 檔 案 -perm -mode : 檔 案 屬 性 必 須 包 含 所 有 mode 的 屬 性 的 檔 案, 權 限 數 值 大 於 等 於 mode 伲 伴 -perm +mode : 檔 案 屬 性 包 含 任 一 mode 的 屬 性 的 檔 案, 例 如 : -perm +755(-rwxr-xr-x), 包 含 屬 性 為 -rw------- 的 伲 伶 檔 案 4. 額 外 可 進 行 的 動 作 : -exec command :-exec 後 再 接 指 令 command 來 處 理 搜 尋 的 結 果 伲 伸 -print : 將 結 果 列 印 到 螢 幕 上 ( 預 設 動 作 ) 2. 先 找 出 系 統 中 屬 於 用 戶 deyu1 的 檔 案, 輸 出 除 了 標 準 輸 出 (stdout) 及 目 錄 外, 還 有 標 準 錯 誤 (stderr) [root@kvm5 ~]# find / -user deyu1 伲 /home/deyu1 /home/deyu1/.bash_history 伴 /home/deyu1/.bashrc /home/deyu1/.bash_profile 伶 /home/deyu1/.bash_logout /groupdir/deyu1.txt 伸 /groupdir/deyu12.txt /groupdir/deyu11.txt 伱 估 /protected/restricted /var/spool/mail/deyu1 伱 伲 find: /proc/13708/task/13708/fd /6: No such file or directory De-Yu Wang CSIE CYUT 157
17.4. 檔 案 的 搜 尋 CHAPTER 17. 資 料 導 向 與 管 線 處 理 find: /proc/13708/task/13708/fdinfo /6: No such file or directory 伱 伴 find: /proc/13708/fd /6: No such file or directory find: /proc/13708/fdinfo /6: No such file or directory 3. 選 項 增 加 type 指 定 f, 也 就 是 一 般 檔 案, 每 一 參 數 都 可 以 使 用 [TAB] 提 示 或 補 齊, 輸 出 已 排 除 目 錄 伱 [root@kvm5 ~]# find / -user deyu1 -t -true -type 伳 [root@kvm5 ~]# find / -user deyu1 -type b c d f l p s 伵 [root@kvm5 ~]# find / -user deyu1 -type f /home/deyu1/.bash_history 伷 /home/deyu1/.bashrc /home/deyu1/.bash_profile 伹 /home/deyu1/.bash_logout /groupdir/deyu1.txt 伱 伱 /groupdir/deyu12.txt /groupdir/deyu11.txt 伱 伳 /var/spool/mail/deyu1 find: /proc/13726/task/13726/fdinfo /6: No such file or directory 伱 伵 find: /proc/13726/fdinfo /6: No such file or directory 4. 將 標 準 錯 誤 導 向 到 /dev/null, 輸 出 已 排 除 錯 誤 訊 息 伱 [root@kvm5 ~]# find / -user deyu1 -type f 2> /dev/n net/ network_throughput nvram 伳 network_latency null [root@kvm5 ~]# find / -user deyu1 -type f 2> /dev/null 伵 /home/deyu1/.bash_history /home/deyu1/.bashrc 伷 /home/deyu1/.bash_profile /home/deyu1/.bash_logout 伹 /groupdir/deyu1.txt /groupdir/deyu12.txt 伱 伱 /groupdir/deyu11.txt /var/spool/mail/deyu1 5. 建 立 要 將 檔 案 復 製 過 去 的 目 標 目 錄 /root/findresults [root@kvm5 ~]# mkdir /root/findresults De-Yu Wang CSIE CYUT 158
17.4. 檔 案 的 搜 尋 CHAPTER 17. 資 料 導 向 與 管 線 處 理 6. 使 用 管 線 命 令 及 xargs 將 find 命 令 的 標 準 輸 出 一 個 一 個 送 給 cp 命 令 做 為 標 準 輸 入, 復 製 到 目 標 目 錄 /root/findresults 伱 [root@kvm5 ~]# find / -user deyu1 -type f 2> /dev/null xargs cp -t /root/findresults/ 7. 查 詢 目 標 目 錄 /root/findresults 內 是 不 是 有 之 前 找 到 的 那 些 檔 案? 伱 [root@kvm5 ~]# ls -a /root/findresults/..bash_history.bash_profile deyu1 deyu12.txt 伳...bash_logout.bashrc deyu11.txt deyu1.txt De-Yu Wang CSIE CYUT 159
17.4. 檔 案 的 搜 尋 CHAPTER 17. 資 料 導 向 與 管 線 處 理 De-Yu Wang CSIE CYUT 160
CHAPTER 18. 正 規 表 示 法 Chapter 18 正 規 表 示 法 18.1 前 言 什 麼 是 正 規 表 示 法 1. 處 理 字 串 的 方 法, 以 行 為 單 位 進 行 字 串 的 處 理 行 為 2. 透 過 一 些 特 殊 符 號 的 輔 助, 讓 使 用 者 輕 易 的 達 到 搜 尋 取 代, 限 定 某 特 定 字 串 的 處 理 程 序 3. 延 伸 的 正 規 表 示 法 : 可 以 作 群 組 的 字 串 或 (or) 及 且 (and) 的 處 理 4. 正 規 表 示 法 與 萬 用 字 元 不 一 樣, 不 可 混 淆 正 規 表 示 法 用 途 1. 系 統 管 理 員 的 可 以 透 過 正 規 表 示 法 的 功 能, 將 登 錄 的 資 訊 進 行 處 理, 僅 取 出 有 問 題 的 資 訊 來 進 行 分 析 2. 一 般 支 援 正 規 表 示 法 的 軟 體 可 利 用 其 進 行 字 串 的 處 理, 例 如 : 郵 件 伺 服 器 以 字 串 的 比 對 來 過 濾 郵 件 3. 軟 體 中 輸 入 欄 位 的 格 式 限 制, 例 如 : 只 能 為 數 字 vi, grep, awk,sed 等 工 具 皆 支 援 正 規 表 示 法 18.2 基 礎 正 規 表 示 法 伱 字 符 重 要 特 殊 字 元 (characters) RE 意 義 與 範 例 伳 ^word 待 搜 尋 的 字 串 (word) 在 行 首 # 範 例 :grep -n ^# re.txt 搜 尋 行 首 為 伵 # 開 始 的 那 一 行 word$ 待 搜 尋 的 字 串 (word) 在 行 尾 De-Yu Wang CSIE CYUT 161
18.2. 基 礎 正 規 表 示 法 CHAPTER 18. 正 規 表 示 法 伷 # 範 例 :grep -n!$ re.txt 將 行 尾 為! 的 那 一 行 列 印 出 來 伹. 代 表 任 意 一 個 字 符, 一 定 是 一 個 任 意 字 符 伱 伱 # 範 例 :grep -n e.e re.txt 搜 尋 的 字 串 可 以 是 (eve) (eae) (eee) (e e), 但 不 能 僅 有 (ee) 亦 即 e 與 e 中 間 一 定 僅 有 一 個 字 元, 而 空 白 字 元 也 是 字 元 伱 伳 \ 跳 脫 字 符, 將 特 殊 符 號 的 特 殊 意 義 去 除 # 範 例 :grep -n \ re.txt 搜 尋 含 有 單 引 號 伱 伵 的 那 一 行 * 重 複 零 個 或 多 個 的 前 一 個 RE 字 符 伱 伷 # 範 例 :grep -n ess* re.txt 找 出 含 有 (es) (ess) (esss) 等 等 的 字 串 伱 伹 \{n,m\} 連 續 n 到 m 個 的 前 一 個 RE 字 符 若 為 \{n\} 則 是 連 續 n 個 的 前 一 個 RE 字 符, 若 是 伲 伱 \{n,\} 則 是 連 續 n 個 以 上 的 前 一 個 RE 字 符 # 範 例 :grep -n go\{2,3\}g re.txt 在 伲 伳 伲 伵 伲 伷 g 與 g 之 間 有 2 個 到 3 個 的 o 存 在 的 字 串, 亦 即 (goog)(gooog) [ ] 在 [ ] 當 中 謹 代 表 一 個 待 搜 尋 的 字 元 # 範 例 :grep -n g[ld] re.txt 搜 尋 含 有 (gl) 或 (gd) 的 那 一 行 # 範 例 :grep -n [0-9] re.txt 搜 尋 含 有 任 意 數 字 的 那 一 行 在 字 元 集 合 伲 伹 [ ] 中 的 減 號 - 是 代 表 兩 個 字 元 之 間 的 所 有 連 續 字 元 : [^]^ 在 [ ] 內 時, 代 表 的 意 義 是 反 向 選 擇 伳 伱 # 範 例 :grep -n oo[^t] re.txt 搜 尋 的 字 串 可 以 是 (oog) (ood) 但 不 能 是 (oot) 以 grep 擷 取 字 串 1. 編 輯 re.txt 純 文 字 檔 伱 [root@test root]# vi re.txt "Open Source" is a good mechanism to develop programs. 伳 apple is my favorite food. Football game is not use feet only. 伵 this dress doesn t fit me. However, this dress is about $ 3183 dollars. 伷 GNU is free air not free beer. Her hair is very beauty. 伹 I cant finish the test. Oh! The soup taste good. 伱 伱 motorcycle is cheap than car. This window is clear. 伱 伳 the symbol * is represented as start. Oh! My god! 伱 伵 The gd software is a library for drafting programs. De-Yu Wang CSIE CYUT 162
18.2. 基 礎 正 規 表 示 法 CHAPTER 18. 正 規 表 示 法 You are the best is mean you are the no. 1. 伱 伷 The world is the same with "glad". I like dog. 伱 伹 google is the best tools for search keyword. goooooogle yes! 伲 伱 go! go! Let s go. # I am csie 2. 搜 尋 特 定 字 串 : 從 檔 案 re.txt 中 取 得 特 定 字 串 the [root@test root]# grep -n the re.txt 伲 8:I can t finish the test. 12:the symbol * is represented as start. 伴 15:You are the best is mean you are the no. 1. 16:The world is the same with "glad". 伶 18:google is the best tools for search keyword. 3. 該 行 沒 有 字 串 the 時, 才 顯 示 在 螢 幕 上 : [root@test root]# grep -vn the re.txt 伲 # 螢 幕 上 出 現 的 行 列 為 除 了 8,12,15,16,18 五 行 之 外 的 其 他 行 列 4. 取 得 不 論 大 小 寫 的 字 串 the: [root@test root]# grep -in the re.txt 伲 8:I can t finish the test. 9:Oh! The soup taste good. 伴 12:the symbol * is represented as start. 14:The gd software is a library for drafting programs. 伶 15:You are the best is mean you are the no. 1. 16:The world is the same with "glad". 伸 18:google is the best tools for search keyword. 5. 利 用 [ ] 來 搜 尋 集 合 字 元 [root@test root]# grep -n t[ae]st re.txt 伲 8:I can t finish the test. 9:Oh! The soup taste good. 伴 # [ ] 裡 面 不 論 有 幾 個 字 元, 都 謹 代 表 某 一 個 字 元 6. 搜 尋 有 oo 的 字 元 : De-Yu Wang CSIE CYUT 163
18.2. 基 礎 正 規 表 示 法 CHAPTER 18. 正 規 表 示 法 [root@test root]# grep -n oo re.txt 伲 1:"Open Source" is a good mechanism to develop programs. 2:apple is my favorite food. 伴 3:Football game is not use feet only. 9:Oh! The soup taste good. 伶 18:google is the best tools for search keyword. 19:goooooogle yes! 7. 不 想 要 oo 前 面 有 g, 可 以 利 用 在 集 合 字 元 的 反 向 選 擇 [^] 伱 [root@test root]# grep -n [^g]oo re.txt 2:apple is my favorite food. 伳 3:Football game is not use feet only. 18:google is the best tools for search keyword. 伵 19:goooooogle yes! 8. oo 前 面 不 想 要 有 小 寫 字 元 : 伱 [root@test root]# grep -n [^a-z]oo re.txt 3:Football game is not use feet only. 9. 要 求 字 串 是 數 字 與 英 文 :[a-za-z0-9] [root@test root]# grep -n [0-9] re.txt 伲 5:However, this dress is about $ 3183 dollars. 15:You are the best is mean you are the no. 1. 10. 行 首 與 行 尾 字 元 ^ $: 伱 [root@test root]# grep -n ^the re.txt 12:the symbol * is represented as start. 伳 [root@test root]# grep -n ^[a-z] re.txt 伵 2:apple is my favorite food. 4:this dress doesn t fit me. 伷 10:motorcycle is cheap than car. 12:the symbol * is represented as start. 伹 18:google is the best tools for search keyword. 19:goooooogle yes! 11. 不 要 開 頭 是 英 文 字 母 : De-Yu Wang CSIE CYUT 164
18.2. 基 礎 正 規 表 示 法 CHAPTER 18. 正 規 表 示 法 [root@test root]# grep -n ^[^a-za-z] re.txt 伲 1:"Open Source" is a good mechanism to develop programs. 20:# I am csie 12. 行 尾 結 束 為 小 數 點 (.) 的 那 一 行 : 伱 [root@test root]# grep -n \.$ re.txt 1:"Open Source" is a good mechanism to develop programs. 伳 2:apple is my favorite food. 3:Football game is not use feet only. 伵 4:this dress doesn t fit me. 10:motorcycle is cheap than car. 伷 11:This window is clear. 12:the symbol * is represented as start. 伹 15:You are the best is mean you are the no. 1. 16:The world is the same with "glad". 伱 伱 17:I like dog. 18:google is the best tools for search keyword. 伱 伳 # 小 數 點 具 有 其 他 意 義, 必 須 要 使 用 跳 脫 字 元 (\) 來 加 以 解 除 其 特 殊 意 義 # 第 5~9 行 最 後 面 也 是?. 13. Windows 的 notepad 會 主 動 加 上 ^M 作 為 斷 行 的 判 斷 [root@test root]# cat -A re.txt 伲 However, this dress is about $ 3183 dollars.^m$ 14. 找 出 哪 一 行 是 空 白 行? [root@test root]# grep -n ^$ re.txt 伲 21: 伴 [root@test root]# cat /etc/syslog.conf [root@test root]# grep -v ^$ /etc/syslog.conf grep -v ^# 15. 任 意 一 個 字 元. 與 重 複 字 元 * 伱 # 代 表 絕 對 有 一 個 任 意 字 元. [root@test root]# grep -n g..d re.txt 伳 1:"Open Source" is a good mechanism to develop programs. 9:Oh! The soup taste good. 伵 16:The world is the same with "glad". De-Yu Wang CSIE CYUT 165
18.2. 基 礎 正 規 表 示 法 CHAPTER 18. 正 規 表 示 法 # 代 表 的 是 重 複 * 0 個 或 多 個 前 面 的 RE 字 符 伷 [root@test root]# grep -n ooo* re.txt 1:"Open Source" is a good mechanism to develop programs. 伹 2:apple is my favorite food. 3:Football game is not use feet only. 伱 伱 9:Oh! The soup taste good. 18:google is the best tools for search keyword. 伱 伳 19:goooooogle yes! 16. 字 串 開 頭 與 結 尾 都 是 g, 但 是 兩 個 g 之 間 僅 能 存 在 至 少 一 個 o 伱 # 亦 即 gog, goog, gooog... 等 [root@test root]# grep -n goo*g re.txt 伳 18:google is the best tools for search keyword. 19:goooooogle yes! 17. 找 出 g 開 頭 與 g 結 尾 的 字 串, 當 中 的 字 元 可 有 可 無 ( 錯 誤 找 法 ) [root@test root]# grep -n g*g re.txt 伲 1:"Open Source" is a good mechanism to develop programs. 3:Football game is not use feet only. 伴 9:Oh! The soup taste good. 13:Oh! My god! 伶 14:The gd software is a library for drafting programs. 16:The world is the same with "glad". 伸 17:I like dog. 18:google is the best tools for search keyword. 伱 估 19:goooooogle yes! # g*g 的 內 容 是 g, gg, ggg, gggg 18. 找 出 g 開 頭 與 g 結 尾 的 字 串, 當 中 的 字 元 可 有 可 無 伱 [root@test root]# grep -n g.*g re.txt 1:"Open Source" is a good mechanism to develop programs. 伳 14:The gd software is a library for drafting programs. 18:google is the best tools for search keyword. 伵 19:goooooogle yes! 19. 要 找 出 任 意 數 字 的 行 列 : 伱 [root@test root]# grep -n [0-9][0-9]* re.txt 5:However, this dress is about $ 3183 dollars. 伳 15:You are the best is mean you are the no. 1. De-Yu Wang CSIE CYUT 166
18.2. 基 礎 正 規 表 示 法 CHAPTER 18. 正 規 表 示 法 # 使 用 grep -n [0-9] re.txt 也 可 以 得 到 相 同 的 結 果 20. 限 定 連 續 RE 字 符 範 圍 {}: 找 到 兩 個 o 的 字 串 [root@test root]# grep -n o\{2\} re.txt 伲 1:"Open Source" is a good mechanism to develop programs. 2:apple is my favorite food. 伴 3:Football game is not use feet only. 9:Oh! The soup taste good. 伶 18:google is the best tools for search keyword. 19:goooooogle yes! 21. 找 出 g 後 面 接 2 到 5 個 o, 然 後 再 接 一 個 g 的 字 串 : 伱 [root@test root]# grep -n go\{2,5\}g re.txt 18:google is the best tools for search keyword. 22. 找 出 2 個 o 以 上 的 goooo...g? 除 了 可 以 是 gooo*g, 也 可 以 是 : [root@test root]# grep -n go\{2,\}g re.txt 伲 18:google is the best tools for search keyword. 19:goooooogle yes! 23. 找 出 2 個 o 以 上 的 goooo...g, 當 找 到 一 筆 即 停 止 伱 [root@test root]# grep -m 1 go\{2,\}g re.txt 18:google is the best tools for search keyword. 伳 19:goooooogle yes! 伱 正 規 表 示 法 的 特 殊 字 元 與 萬 用 字 元 之 差 異 : 字 元 或 代 表 意 義 萬 用 字 元 正 規 表 示 法 的 特 殊 字 元 * 0 至 無 限 多 個 字 元 重 複 0 到 多 個 的 前 一 個 RE 字 符 反 向 選 擇 [!range] [^range] 例 題 : 不 支 援 正 規 表 示 法 的 ls 工 具 中 伳 ls -l * : 代 表 列 出 任 意 檔 名 的 檔 案 ; ls -l a* : 代 表 列 出 以 a 為 開 頭 的 任 何 檔 名 的 檔 案 在 正 規 表 示 法 中 要 找 到 含 有 以 伵 a 為 開 頭 的 檔 案, 必 須 搭 配 支 援 正 規 表 示 法 的 工 具 : grep De-Yu Wang CSIE CYUT 167
18.3. 延 伸 正 規 表 示 法 CHAPTER 18. 正 規 表 示 法 ls grep -n ^a.* 例 題 : 以 正 規 表 示 法 顯 示 行 號 方 式 找 出 目 錄 /etc 以 下 符 合 下 列 條 件 之 檔 案 1. 包 含 boot 或 root 字 串 的 檔 案 2. 包 含 b 開 頭 t 結 尾 之 字 串 的 檔 案 3. b 開 頭 t 結 尾 且 中 間 1 個 o 以 上 之 字 串 的 檔 案 4. 包 含 b 開 頭 t 結 尾 且 中 間 2 至 4 個 o 之 字 串 的 檔 案 5. 包 含 行 首 為 root 之 字 串 的 檔 案 6. 包 含 行 尾 為 root 之 字 串 的 檔 案 例 題 : 想 要 查 出 來 檔 案 中 含 有! 與 > 的 字 行 (! 在 正 規 表 示 法 中 並 不 是 特 殊 字 元 ): 伱 grep -n [!>] re.txt 18.3 延 伸 正 規 表 示 法 grep 支 援 的 是 基 礎 型 的 正 規 表 示 法, 延 伸 正 規 表 示 法 egrep 是 grep -E 的 命 令 別 名 延 伸 型 正 規 表 示 法 之 特 殊 符 號 伱 RE 字 符 意 義 與 範 例 + 重 複 一 個 或 一 個 以 上 的 前 一 個 RE 字 符 伳 # 範 例 :egrep -n go+d re.txt 搜 尋 (god) (good) (goood)... 等 等 的 字 串 伵? 零 個 或 一 個 的 前 一 個 RE 字 符 # 範 例 :egrep -n go?d re.txt 搜 尋 伷 (gd) (god) 這 兩 個 字 串 用 或 ( or ) 的 方 式 找 出 數 個 字 串 伹 # 範 例 :egrep -n gd good dog re.txt 搜 尋 伱 伱 gd good 或 dog 這 三 個 字 串 ( ) 找 出 群 組 字 串 或 作 為 多 個 重 複 群 組 的 判 別 # 範 例 :egrep -n g(la oo)d 搜 尋 伱 伳 (glad) 或 (good) 這 兩 個 字 串 # 範 例 :egrep -n A(xyz)+C re.txt 找 開 頭 是 伱 伵 A 結 尾 是 C, 中 間 有 一 個 以 上 的 "xyz" 字 串 De-Yu Wang CSIE CYUT 168
18.4. 實 機 練 習 題 CHAPTER 18. 正 規 表 示 法 例 題 : 去 除 空 白 行 與 行 首 為 # 的 行 列 伱 # 基 礎 型 的 正 規 表 示 法 需 要 使 用 到 管 線 命 令 來 搜 尋 兩 次 grep -v ^$ re.txt grep -v ^# 伳 # 支 援 延 伸 型 正 規 表 示 法 可 以 簡 化 為 : egrep -v ^$ ^# re.txt 例 題 : 以 延 伸 型 正 規 表 示 法 顯 示 行 號 方 式, 找 出 目 錄 /etc 以 下 符 合 下 列 條 件 之 檔 案 1. 包 含 boot 或 root 字 串 的 檔 案 2. 包 含 b 開 頭 t 結 尾 且 中 間 0 個 或 1 個 o 之 字 串 的 檔 案 3. b 開 頭 t 結 尾 且 中 間 1 個 o 以 上 之 字 串 的 檔 案 18.4 實 機 練 習 題 18.4.1 練 習 一 1. 在 自 己 的 家 目 錄 建 立 一 個 新 的 目 錄 zzz 2. 進 入 目 錄 zzz 3. 下 載 檔 案 re1.txt 4. 使 用 grep 對 re1.txt 執 行 以 下 搜 尋 動 作, 不 需 要 列 印 行 號, 所 有 結 果 依 序 累 加 到 檔 案 result1.txt, 不 要 做 任 何 的 更 動 (a) you 大 小 寫 不 分 (b) tast 或 test (c) oo 前 面 不 是 g, 也 不 是 t (d) 剛 好 四 個 阿 拉 伯 數 字 (e) 兩 個 以 上 阿 拉 伯 數 字 (f) 行 首 是 大 寫 英 文 字 母 (g) 行 尾 不 是. 句 點 18.4.2 練 習 二 1. 在 自 己 的 家 目 錄 建 立 一 個 新 的 目 錄 zzz 2. 進 入 目 錄 zzz 3. 下 載 檔 案 re2.txt De-Yu Wang CSIE CYUT 169
18.4. 實 機 練 習 題 CHAPTER 18. 正 規 表 示 法 4. 使 用 grep 對 re2.txt 執 行 以 下 搜 尋 動 作, 不 需 要 列 印 行 號, 所 有 結 果 依 序 累 加 到 檔 案 result2.txt, 不 要 做 任 何 的 更 動 (a) 開 頭 b 結 尾 是 t, 中 間 1 個 以 上 a 的 字 串 (b) 開 頭 b 結 尾 是 t, 中 間 0 個 或 1 個 a 的 字 串 (c) dog, feet, good 三 個 字 串 (d) boot 或 babt (e) 開 頭 b 結 尾 是 t, 中 間 pqr 重 複 1 次 以 上 De-Yu Wang CSIE CYUT 170
CHAPTER 19. 檔 案 打 包 壓 縮 Chapter 19 檔 案 打 包 壓 縮 19.1 檔 案 的 壓 縮 1. 壓 縮 檔 案 的 附 檔 名.bz2 bzip2 程 式 壓 縮 的 檔 案 ;.gz gzip 程 式 壓 縮 的 檔 案 ;.xz xz 程 式 壓 縮 的 檔 案 ;.tar tar 程 式 只 打 包 的 資 料, 沒 有 壓 縮 ;.tar.bz2 tar 程 式 打 包 的 檔 案, 且 經 過 bzip2 壓 縮.tar.gz (.tgz) tar 程 式 打 包 的 檔 案, 且 經 過 gzip 壓 縮.tar.xz tar 程 式 打 包 的 檔 案, 且 經 過 xz 壓 縮 2. bzip2,bzcat: 以 bzcat 直 接 讀 取.bz2 壓 縮 檔 案 內 容 伲 伴 [root@dywhome2 test]# bzip2 [-d] filename 參 數 : -d 解 壓 縮 : [root@dywhome2 test]# bzcat filename.bz2 伶 # 範 例 : [dywang@dywoffice tmp]$ bzip2 -z test.txt 伸 [dywang@dywoffice tmp]$ bzcat test.txt.bz2 echo Hello Latex! 伱 估 [dywang@dywoffice tmp]$ bzip2 -d test.txt.bz2 3. gzip,zcat: 以 zcat 直 接 讀 取.gz 壓 縮 檔 案 內 容 伲 伴 [root@dywhome2 test]# gzip [-d] filename 參 數 : -d 解 壓 縮 : -# --fast --best:# 為 數 字,--fast 是 1 壓 縮 速 度 最 快 ;--best 是 9 最 佳 壓 縮 比, 預 設 是 6 De-Yu Wang CSIE CYUT 171
19.2. 檔 案 的 壓 縮 與 打 包 CHAPTER 19. 檔 案 打 包 壓 縮 [root@dywhome2 test]# zcat filename.gz 伶 # 範 例 : 伸 [dywang@dywoffice tmp]$ gzip test.txt [dywang@dywoffice tmp]$ zcat test.txt.gz 伱 估 echo Hello Latex! [dywang@dywoffice tmp]$ gzip -d test.txt.gz 伱 伲 [dywang@dywoffice tmp]$ gzip -9 test.txt 19.2 檔 案 的 壓 縮 與 打 包 1. tar 命 令 選 項 [root@linux ~]# tar [-cxtzjvfppn] 檔 案 與 目 錄... 參 數 : 伲 -c : 建 立 一 個 打 包 檔 案 (create); 伴 -x : 解 開 一 個 打 包 檔 案 ; -t : 查 看 tarfile 內 的 檔 案 ;(c/x/t 不 可 同 時 存 在!) 伶 -z : 同 時 用 gzip 壓 縮 ; -j : 同 時 用 bzip2 壓 縮 ; 伸 -J : 同 時 用 xz 壓 縮 ; -v : 壓 縮 的 過 程 中 顯 示 檔 案 ; 伱 估 -f : 使 用 檔 名, 在 f 之 後 要 立 即 接 檔 名! -p : 保 留 檔 案 的 原 來 屬 性 ( 屬 性 不 會 依 據 使 用 者 而 變 ) 伱 伲 -P : 保 留 絕 對 路 徑 ; -N : 比 後 面 接 的 日 期 (yyyy/mm/dd) 還 要 新 的 才 會 被 打 包 ; 伱 伴 --exclude : 排 除 FILE FILE 2. 將 檔 案 txt 打 包 為 txt.tar [root@dywoffice tmp]# tar -cvf txt.tar txt 3. 將 整 個 /etc 目 錄 下 的 檔 案 全 部 打 包 成 為 /tmp/etc.tar 伱 [root@dywoffice tmp]# tar -cvf /tmp/etc.tar /etc <== 僅 打 包, 不 壓 縮 [root@dywoffice tmp]# tar -zcvf /tmp/etc.tar.gz /etc <== 打 包 後, 以 gzip 壓 縮 伳 [root@dywoffice tmp]# tar -jcvf /tmp/etc.tar.bz2 /etc <== 打 包 後, 以 bzip2 壓 縮 [root@dywoffice tmp]# tar -Jcvf /tmp/etc.tar.xz /etc <== 打 包 後, 以 xz 壓 縮 De-Yu Wang CSIE CYUT 172
19.2. 檔 案 的 壓 縮 與 打 包 CHAPTER 19. 檔 案 打 包 壓 縮 4. 查 閱 /tmp/etc.tar.gz 檔 案 內 有 那 些 檔 案? [root@dywoffice tmp]# tar -ztvf /tmp/etc.tar.gz 5. 將 /tmp/etc.tar.gz 檔 案 解 壓 縮 伱 [root@dywoffice tmp]# tar -zxvf /tmp/etc.tar.gz 6. 只 將 /tmp/etc.tar.gz 內 的 etc/passwd 解 開 伱 [root@dywoffice tmp]# tar -zxvf /tmp/etc.tar.gz etc/passwd 7. 將 /home/csie/testdir 內 的 所 有 檔 案 備 份 ( 打 包 壓 縮 ), 並 保 存 其 絕 對 路 徑 伱 [root@dywoffice tmp]# tar -zcvpf testdir.tar.gz /home/csie/ testdir 8. 將 /etc/ 內 的 所 有 檔 案 備 份, 並 保 存 其 權 限 伱 [root@dywoffice tmp]# tar -zcvpf /tmp/etc.tar.gz /etc 9. 在 /home 當 中, 比 2007/11/30 新 的 檔 案 才 備 份 伱 [root@dywoffice tmp]# tar -N 2007/11/30 -zcvf home.tar.gz /home 10. 備 份 /home, 但 不 要 /home/csie/tmp 伱 [root@dywoffice tmp]# tar -zcvf home.tar.gz /home --exclude / home/csie/tmp De-Yu Wang CSIE CYUT 173