單 元 三 Linux 帳 號 與 群 組 管 理 1
Linux 的 帳 號 與 用 戶 組 Linux 屬 於 多 人 多 工 的 作 業 系 統, 可 讓 不 同 的 用 戶 從 本 地 端 登 入 在 網 路 上 則 允 許 使 用 者 利 用 telnet ssh 等 方 式 從 遠 端 登 入 無 論 是 從 本 機 或 由 遠 端 登 入, 使 用 者 都 必 須 在 該 台 主 機 上 擁 有 帳 號 才 行 Linux 中 的 帳 號 主 要 分 成 2 類, 系 統 管 理 者 使 用 者 帳 號 普 通 用 戶 用 戶 帳 號 系 統 管 理 者 帳 號 名 稱 為 root, 具 有 對 系 統 完 全 的 控 制 權, 可 以 對 系 統 做 任 何 的 設 定 及 修 改, 當 然 也 可 以 決 定 哪 些 使 用 者 可 以 進 入 系 統, 並 設 定 所 有 帳 號 的 許 可 權 2
系 統 管 理 者 與 普 通 使 用 者 帳 號 所 謂 家 目 錄, 是 每 個 使 用 者 的 專 屬 目 錄, 個 人 擁 有 的 儲 存 空 間 預 設 只 有 使 用 者 本 人 及 系 統 管 理 者 可 以 進 入 3
如 何 登 錄 Linux 取 得 UID/GID Linux 系 統 上 面 的 使 用 者 如 果 需 要 登 入 主 機 以 取 得 shell 的 環 境 來 工 作 時, 他 需 要 如 何 進 行 呢? 首 先, 他 必 須 要 在 電 腦 前 面 利 用 tty1~tty7 的 終 端 機 提 供 的 login 介 面, 並 輸 入 帳 號 與 口 令 後 才 能 夠 登 入 那 麼 你 輸 入 帳 號 口 令 後, 系 統 幫 你 處 理 了 什 麼 呢? 1. 先 找 尋 /etc/passwd 檔 裡 面 是 否 有 你 輸 入 的 帳 號? 如 果 沒 有 則 跳 出, 如 果 有 的 話 則 將 該 帳 號 對 應 的 UID 與 /etc/group 文 件 中 的 GID 讀 出 來, 另 外, 該 帳 號 的 家 目 錄 與 shell 設 定 也 一 併 讀 出 來 ; 2. 接 着 是 核 對 口 令 這 時 Linux 會 進 入 /etc/shadow 裡 面 找 出 對 應 的 帳 號 與 UID, 然 後 核 對 一 下 你 剛 剛 輸 入 的 口 令 與 裡 頭 的 口 令 是 否 相 符? 3. 如 果 一 切 都 OK 的 話, 就 進 入 Shell 控 管 的 階 段 4
passwd 檔 的 內 容 格 式 /etc/passwd 文 件 中 每 一 個 帳 號 佔 用 一 行, 每 一 行 有 七 個 字 段, 每 個 欄 位 之 間 用 ":" 做 區 隔 欄 位 說 明 如 下 : 1. 帳 號 名 稱 :passwd 檔 的 前 面 放 是 系 統 內 建 帳 號 ( 如 root 帳 號 ) 或 常 駐 服 務 使 用 的 帳 號 ( 如 adm), 一 般 用 戶 的 帳 號 放 在 後 面 帳 號 名 稱 需 為 字 母 數 位 _ - 及. 的 組 合, 且 名 稱 的 開 頭 必 須 是 字 母 或 "_", 名 稱 中 間 亦 不 能 留 有 空 白 字 元 2. 用 戶 口 令 : 本 來 是 一 串 看 似 亂 碼 的 字 串, 啟 用 投 影 口 令 之 後, 只 剩 一 個 x 字 元, 口 令 改 存 放 到 /etc/shadow 文 件 裡 5
passwd 檔 的 內 容 格 式 3. 使 用 者 識 別 項 (User ID): 系 統 使 用 UID 來 判 別 用 戶, 故 必 須 是 唯 一 的 號 碼 編 號 0 是 root 帳 號 的 UID; 編 號 1 499 則 是 系 統 保 留 給 各 種 常 駐 服 務 和 伺 服 器 使 用 的 UID, 我 們 應 避 開 不 要 混 雜 其 中 ; 而 第 一 個 分 配 給 用 戶 的 編 號 從 500 開 始 SuSE 裡 頭, 一 般 用 戶 的 UID, 預 設 是 從 1000 開 始 分 配 的 4. 用 戶 組 識 別 字 (Group ID): 此 欄 是 用 戶 的 主 要 用 户 組 ( primarygroup) 或 稱 为 默 認 用 户 組 的 識 別 字 每 個 帳 號 皆 屬 於 某 一 個 主 要 用 户 組, 而 每 個 用 户 組 也 都 有 一 個 唯 一 的 GID 號 碼 例 如 root 帳 號 所 屬 的 root 用 户 組 識 別 字 為 0, users 用 户 組 的 識 別 字 是 100,FC11,GID 預 設 是 從 500 開 始 分 配 GID 所 對 應 的 組 名, 可 以 在 /etc/group 文 件 中 找 到 5. 使 用 者 相 關 資 訊 : 記 錄 使 用 者 的 姓 名 電 話 與 位 址 等 資 料 這 部 份 可 自 行 加 入, 或 保 留 空 白 6
passwd 檔 的 內 容 格 式 6. 使 用 者 家 目 錄 : 一 般 使 用 者 的 家 目 錄 都 在 /home 底 下, 但 root 的 家 目 錄 則 為 /root 通 常 默 認 的 目 錄 名 稱 和 用 戶 帳 號 相 同, 方 便 管 理 7. 用 戶 環 境 : 使 用 者 登 入 系 統 成 功 後, 預 設 所 使 用 的 shell, 以 這 裡 為 例 就 是 /bin/bash shell 就 是 用 戶 在 文 字 模 式 下 的 環 境, 負 責 解 譯 用 戶 所 輸 入 的 命 令, 讓 系 統 得 以 瞭 解 使 用 者 要 做 甚 麼 事 有 很 多 的 系 統 帳 號 在 這 個 欄 位 是 使 用 /bin/false 程 式, 因 為 這 些 帳 號 平 時 是 無 法 登 入 系 統 的 所 以 如 果 針 對 某 些 一 般 用 户, 您 只 想 提 供 一 些 服 務 給 他 們 ( 如 收 發 email), 不 希 望 讓 這 些 帳 號 來 登 入 系 統 時, 可 以 藉 由 修 改 shell 來 達 到 您 的 目 的 7
UID 的 限 制 id 範 圍 0 ( 系 統 管 理 員 ) 1~499 ( 系 統 帳 號 ) 500~65535 ( 可 登 入 帳 號 ) 該 ID 用 戶 特 性 當 UID 是 0 時, 代 表 這 個 帳 號 是 系 統 管 理 員, 所 以 當 你 要 讓 其 他 的 帳 號 名 稱 也 具 有 root 的 許 可 權 時, 將 該 帳 號 的 UID 改 為 0 即 可 這 也 就 是 說, 一 部 系 統 上 面 的 系 統 管 理 員 不 見 得 只 有 root 不 過, 很 不 建 議 有 多 個 帳 號 的 UID 是 0 保 留 給 系 統 使 用 的 ID, 其 實 除 了 0 之 外, 其 他 的 UID 許 可 權 與 特 性 並 沒 有 不 一 樣 默 認 500 以 下 的 數 位 讓 給 系 統 作 為 保 留 帳 號 只 是 一 個 習 慣 由 於 系 統 上 面 啟 動 的 服 務 希 望 使 用 較 小 的 許 可 權 去 運 作, 因 此 不 希 望 使 用 root 的 身 份 去 執 行 這 些 服 務, 所 以 我 們 就 得 要 提 供 這 些 運 作 中 程 式 的 擁 有 者 帳 號 才 行 這 些 系 統 帳 號 通 常 是 不 可 登 入 的 (/sbin/nologin) 根 據 系 統 帳 號 的 由 來, 通 常 系 統 帳 號 又 約 略 被 區 分 為 兩 種 : 1~99: 由 distributions 自 行 建 立 的 系 統 帳 號 ; 100~499: 若 使 用 者 有 系 統 帳 號 需 求 時, 可 以 使 用 的 帳 號 UID 給 一 般 用 户 用 的 事 實 上, 目 前 的 linux 核 心 (2.6.x 版 ) 已 經 可 以 支 援 到 4294967295 (2^32-1) 這 麼 大 的 UID 號 碼 8
shadow 檔 的 內 容 格 式 Shadow 檔 主 要 是 用 來 存 放 使 用 者 編 碼 後 的 口 令 以 及 口 令 的 相 關 訊 息 因 為 每 個 人 都 可 以 流 覽 /etc/passwd 文 件 裡 面 的 內 容, 而 /etc/shadow 文 件 對 其 他 人 而 言, 是 不 具 任 何 存 取 權 限 的 由 於 /etc/passwd 文 件 並 不 安 全, 因 此 在 安 裝 Linux 時, 系 統 默 认 會 啟 動 投 影 口 令 的 功 能 每 當 我 們 用 useradd 命 令 建 立 用 戶 賬 号 時, 系 統 不 僅 更 動 /etc/passwd, 同 時 還 會 修 改 /etc/shadow 文 件 以 下 便 是 shadow 文 件 部 份 內 容 : 每 個 帳 號 在 shadow 文 件 中 都 有 9 個 欄 位, 總 共 用 8 個 冒 號 (:) 隔 開 9
使 用 useradd 命 令 創 建 帳 號 您 可 以 使 用 adduser 命 令 創 建 帳 號, 其 與 useradd 命 令 的 用 法 完 全 相 同 命 令 語 法 : useradd adduser 及 passwd 只 接 受 全 小 寫 字 母 的 帳 號 名 稱, 只 要 新 建 的 帳 號 中 有 大 寫 字 母, 就 會 出 現 錯 誤 訊 息, 儘 管 系 統 本 身 接 受 大 小 寫 混 用 的 帳 號 名 稱 在 一 個 系 統 當 中, 用 戶 的 帳 號 名 稱 必 須 是 唯 一 的, 假 若 要 創 建 的 帳 號 先 被 他 人 所 佔 用, 則 會 出 現 使 用 者 已 存 在 的 訊 息 : 10
使 用 useradd 命 令 創 建 帳 號 11
使 用 useradd 命 令 創 建 帳 號 12
使 用 useradd 命 令 創 建 帳 號 13
使 用 useradd 命 令 創 建 帳 號 14
使 用 useradd 範 例 15
/etc/group, /etc/gshadow 您 可 以 讓 每 個 用 戶 都 擁 有 自 己 專 屬 的 用 戶 組, 也 能 將 新 增 的 用 戶 統 一 編 到 一 般 用 戶 的 users 用 戶 組 我 們 可 依 不 同 的 性 質 自 行 創 建 用 戶 組, 例 如 staff 與 student 用 戶 組, 或 是 group1 group2 和 group3 用 戶 組, 視 情 況 所 需 而 分 門 別 類 當 檔 或 目 錄 隸 屬 於 不 同 用 戶 組 時, 用 戶 組 的 用 戶 也 會 受 到 用 戶 組 許 可 權 的 限 制 系 統 除 了 root 帳 號 的 root 用 戶 組, 及 一 般 用 戶 的 users 群 組 之 外, 還 有 許 多 其 他 的 用 户 組, 詳 細 內 容 都 記 錄 在 /etc/group 文 件 中 16
/etc/group 文 件 格 式 /etc/group 這 個 檔 就 是 在 記 錄 GID 與 組 名 的 對 應 了 Fedora 11 的 /etc/group 內 容 就 像 這 樣 : 每 個 用 戶 組 在 /etc/group 文 件 中 都 有 4 個 欄 位, 總 共 用 3 個 冒 號 (:) 隔 開 17
group 檔 的 內 容 格 式 用 戶 組 名 : 例 如 root users bin benny... 等 等 口 令 : 設 定 加 入 該 群 組 的 口 令, 通 常 不 會 用 到, 這 個 設 定 通 常 是 給 群 組 管 理 員 使 用 的, 目 前 很 少 有 這 個 機 會 設 定 群 組 管 理 員! 同 樣 的, 口 令 已 經 移 動 到 /etc/gshadow 去, 因 此 這 個 欄 位 只 會 存 在 一 個 x 而 已 群 組 識 別 字 : 就 是 GID 系 統 會 給 每 個 用 户 組 一 個 編 號, 例 如,users 用 户 組 編 號 為 100 用 戶 帳 號 : 當 您 想 讓 某 些 用 戶 能 擁 有 與 此 用 戶 群 組 相 同 的 存 取 權 限 時, 就 可 以 將 這 些 用 戶 名 單 設 定 在 這 裡, 而 這 個 用 戶 群 組 也 被 稱 為 這 些 用 戶 的 次 要 群 組 用 戶 只 能 有 一 個 主 要 用 戶 組, 但 可 以 同 時 是 屬 于 好 幾 個 次 要 用 戶 組 的 成 員 18
主 要 用 戶 組 與 有 效 用 戶 組 用 戶 在 /etc/passwd 裡 的 GID, 是 屬 於 主 要 用 戶 組 的 GID, 在 使 用 者 登 入 系 統 後 未 執 行 newgrp 以 前, 則 其 有 效 群 組 就 是 主 要 用 戶 組, 亦 即 該 用 戶 所 創 建 的 任 何 檔 目 錄, 其 擁 有 用 戶 組 為 這 個 有 效 用 戶 組 假 使 該 用 戶 的 主 要 用 户 組 為 grp1, 同 時 也 屬 於 grp2 用 户 組 的 成 員, 則 在 用 戶 執 行 newgrp grp2 之 後, 其 有 效 用 户 組 會 變 成 grp2, 此 時 用 戶 所 創 建 的 資 料, 其 擁 有 用 戶 組 就 是 grp2 這 個 有 效 用 户 組 了 當 執 行 "newgrp grp2" 之 後, 會 開 啟 另 一 個 新 的 shell 來 取 代 現 在 這 個 shell, 也 就 是 說 用 戶 在 新 的 shell 下 的 有 效 群 組 是 grp2, 如 果 此 時 執 行 exit 命 令 來 回 到 原 先 的 shell, 那 有 效 用 戶 組 就 改 回 原 來 的 主 要 用 戶 組 grp1 了 19
主 要 用 戶 組 與 有 效 用 戶 組 如 果 我 以 jcwang 這 個 用 戶 的 身 份 登 入 後, 該 如 何 知 道 我 所 有 支 持 的 用 戶 組 呢? 很 簡 單, 直 接 輸 入 groups 就 可 以 了 這 個 輸 出 的 訊 息 中, 可 知 道 jcwang 這 個 用 戶 同 時 屬 於 jcwang 及 users 這 個 兩 個 用 戶 組, 而 且, 第 一 個 輸 出 的 用 戶 組 即 為 有 效 用 戶 組 (effective group) 如 何 更 改 有 效 用 戶 組 呢? 就 使 用 newgrp! 不 過 使 用 newgrp 是 有 限 制 的, 就 是 你 想 要 切 換 的 用 戶 組 必 須 是 你 已 經 有 支 援 的 用 戶 組 20
主 要 用 戶 組 與 有 效 用 戶 組 設 定 次 要 用 戶 組 為 users 在 /etc/passwd 裡 面,jcwang 這 個 用 戶 所 屬 的 群 組 為 GID=500, 搜 尋 一 下 /etc/group 得 到 500 是 那 個 名 為 jcwang 的 用 戶 組, 這 就 是 initialgroup 因 為 是 初 始 用 戶 組, 用 戶 一 登 入 就 會 主 動 取 得, 不 需 要 在 /etc/group 的 第 四 個 欄 位 寫 入 該 帳 號 的! 21
創 建 用 戶 群 組 指 令 語 法 : groupadd [-g gid [-o]] [-r] groupname 參 數 說 明 : -g 同 於 --gid; 指 定 群 組 ID 未 使 用 此 參 數, 則 套 用 /etc/login.defs 所 設 定 的 範 圍 (1000~60000) -o 同 於 --non-unique; 允 許 使 用 重 複 的 GID -r 同 於 --system; 建 立 系 統 的 群 組 未 使 用 此 參 數, 則 套 用 /etc/login.defs 所 設 定 的 範 圍 (100~499) 22
創 建 用 戶 群 組 建 立 用 戶 組 的 方 法 和 建 立 帳 號 幾 乎 相 同, 且 過 程 更 簡 單 我 們 可 執 行 groupadd 命 令 來 建 立 用 戶 組 例 如 要 建 立 GID 編 號 700, 名 稱 為 staff 的 用 戶 組 : Staff 用 戶 組 創 建 成 功 參 數 -g 用 來 指 定 用 戶 組 識 別 字,0 499 請 保 留 給 系 統 使 用 若 省 略 此 參 數, 則 系 統 會 自 動 指 定 GID, 使 用 從 編 號 500 開 始, 尚 未 用 掉 的 號 碼 23
groupmod 命 令 24
id groups 命 令 平 常 在 查 詢 用 戶 ID 相 關 資 訊 及 其 所 屬 群 組 時, 可 能 會 到 /etc/passwd 與 /etc/group 去 查 看, 現 在 不 用 那 麼 辛 苦 了, 因 為 只 要 使 用 id 及 groups 命 令, 即 可 迅 速 取 得 您 要 查 詢 的 資 料 25
切 换 用 戶 身 份 : su 在 Linux 系 統 當 中 還 要 作 身 份 的 變 換? 可 能 有 底 下 幾 個 原 因! 系 統 平 日 操 作 的 好 習 慣 : 事 實 上, 為 了 安 全 的 緣 故, 一 些 老 人 家 都 會 建 議 你, 儘 量 以 一 般 身 份 用 戶 來 操 作 Linux 的 日 常 作 業, 等 到 需 要 設 定 系 統 環 境 時, 才 變 換 身 份 成 為 root 來 進 行 系 統 管 理, 相 對 比 較 安 全 用 較 低 許 可 權 啟 動 系 統 服 務 : 相 對 于 系 統 安 全, 有 的 時 候, 我 們 必 須 要 以 某 些 系 統 帳 號 來 進 行 程 式 的 執 行 舉 例 來 說,Linux 主 機 上 面 的 一 套 軟 體, 名 稱 為 apache, 我 們 可 以 額 外 建 立 一 個 名 為 apache 的 用 戶 來 啟 動 apache 軟 體, 如 此 一 來, 如 果 這 個 程 式 被 攻 破, 至 少 系 統 還 不 至 於 就 損 毀 了 軟 體 本 身 的 限 制 在 遠 古 時 代 的 telnet 程 式 中, 該 程 式 預 設 是 不 許 使 用 root 的 身 份 登 入 的, telnet 會 判 斷 登 入 者 的 UID, 若 UID 為 0 的 話, 那 就 直 接 拒 絕 登 入 了 所 以, 你 只 能 使 用 一 般 用 戶 來 登 入 Linux 伺 服 器 此 外,ssh 也 可 以 設 定 拒 絕 root 登 入 那 如 果 你 有 系 統 設 定 需 求 該 如 何 是 好? 就 變 換 身 份 26
切 换 用 戶 身 份 : su 在 文 字 模 式 下, 當 管 理 者 使 用 一 般 帳 號 登 入 系 統, 隨 後 想 要 轉 變 成 管 理 者 身 份, 進 行 系 統 的 相 關 設 定 時, 並 不 需 要 重 新 登 入, 只 要 執 行 su 命 令 並 輸 入 root 帳 號 的 口 令, 則 可 轉 換 為 root 帳 號 以 下 假 設 原 本 登 入 的 帳 號 是 helen, 而 要 切 換 為 root: 這 樣 只 是 將 登 入 的 身 份 轉 變 為 root, 但 諸 如 檔 路 徑 之 類 的 環 境 變 數 仍 然 是 原 登 入 帳 號 helen 的, 例 如 直 接 在 提 示 符 號 下 執 行 shutdown 命 令, 則 會 找 不 到 命 令, 必 須 輸 入 完 整 的 路 徑 /sbin/shutdown 才 行 27
變 換 身 份 切 換 帳 號 若 是 想 要 變 換 身 份 時, 同 時 更 改 環 境 變 數, 則 必 須 執 行 su - 命 令 : 倘 若 要 切 換 成 其 他 用 戶, 請 在 su - 命 令 後 加 上 該 用 戶 的 帳 號 : 建 議 如 果 要 切 換 成 為 某 個 身 分, 使 用 su 或 者 是 su lusername, 否 則 容 易 造 成 環 境 變 數 的 差 異 28
/etc/nologin 如 果 希 望 這 台 電 腦 除 了 root 帳 號 之 外, 其 他 帳 號 都 不 得 登 入 時, 可 在 /etc 目 錄 中 執 行 touch nologin 命 令, 產 生 一 個 檔 名 為 nologin 的 文 件 當 /etc/nologin 檔 存 在 時, 則 任 何 一 個 一 般 身 份 帳 號 在 嘗 試 登 入 時, 都 僅 會 獲 得 /etc/nologin 內 容 的 資 訊, 而 無 法 登 入 主 機 當 其 他 用 戶 欲 登 入 時, 系 統 只 要 發 現 此 檔 存 在, 就 會 禁 止 他 們 登 入 這 種 狀 況 通 常 用 於 管 理 者 要 維 護 系 統 時 若 要 再 度 恢 復 用 戶 登 入, 則 只 要 將 nologin 檔 刪 除 即 可 ( 或 重 新 啟 動 後, 系 統 即 會 直 接 刪 除 nologin 檔, 恢 復 用 戶 登 入 ) 如 果 我 今 天 想 要 建 立 的, 是 一 個 僅 能 使 用 mailserver 相 關 郵 件 服 務 的 帳 號, 而 該 帳 號 並 不 能 登 入 Linux 主 機, 該 如 何 做? 29
/sbin/nologin /sbin/nologin 這 個 shell 通 常 是 給 系 統 帳 號 使 用 的, 因 為 /sbin/nologin 事 實 上 並 無 法 給 予 帳 號 實 際 登 入, 如 果 你 利 用 usermod 修 改 了 dmtsai 這 個 用 戶 的 shell 成 為 /sbin/nologin 之 後, 下 次 想 要 以 dmtsai 重 新 登 入 系 統 時, 他 在 螢 幕 上 會 出 現 這 樣 的 訊 息 This account is currently not available. 如 果 我 想 要 讓 某 個 具 有 /sbin/nologin 的 使 用 者 知 道, 他 們 不 能 登 入 主 機 時, 其 實 我 可 以 建 立 /etc/nologin.txt 這 個 檔, 並 且 在 這 個 檔 內 說 明 不 能 登 入 的 原 因, 那 麼 下 次 當 這 個 使 用 者 想 要 登 入 系 統 時, 螢 幕 上 出 現 的 就 會 是 /etc/nologin.txt 這 個 檔 的 內 容, 而 不 是 預 設 的 內 容 This account is currently not available 30
手 動 增 加 用 戶 一 般 來 說, 我 們 不 很 建 議 大 家 使 用 手 動 的 方 式 來 新 增 使 用 者, 為 什 麼 呢? 因 為 用 戶 的 建 立 涉 及 到 GID/UID 等 許 可 權 的 關 係 不 過, 要 瞭 解 整 個 系 統, 最 好 還 是 手 動 來 修 改 過 比 較 好 一 些 檢 查 工 具 pwck 這 個 指 令 在 檢 查 /etc/passwd 這 個 帳 號 設 定 檔 內 的 資 訊, 與 實 際 的 家 目 錄 是 否 存 在 等 資 訊, 還 可 以 比 對 /etc/passwd 和 /etc/shadow 的 資 訊 是 否 一 致, 另 外, 如 果 /etc/passwd 內 的 資 料 欄 位 元 錯 誤 時, 會 提 示 使 用 者 修 訂 因 此, 可 以 利 用 這 個 工 具 來 檢 查 輸 入 是 否 正 確 31
關 閉 啟 動 投 影 口 令 執 行 pwunconv 命 令, 會 將 用 戶 的 口 令 從 shadow 文 件 回 passwd 文 件 中, 並 在 完 成 這 個 動 作 後, 將 shadow 文 件 移 除 換 言 之, 執 行 pwunconv 命 令 會 關 閉 投 影 口 令 功 能 若 要 再 啟 動, 則 執 行 pwconv 命 令 執 行 pwconv 命 令, 可 根 據 /etc/passwd 檔 內 容 來 安 裝 或 更 新 /etc/shadow ; 當 /etc/shadow 不 存 在 時,pwconv 可 將 其 建 立 起 來, 並 且 把 編 碼 後 的 口 令 從 /etc/passwd 移 至 /etc/shadow; 當 /etc/shadow 存 在 時,pwconv 就 根 據 /etc/passwd 來 更 新 /etc/shadow 我 們 在 稍 後 會 介 紹 的 用 戶 群 組, 同 樣 也 有 投 影 口 令 的 功 能 若 要 關 閉 群 組 的 投 影 口 令 功 能, 則 可 執 行 grpunconv 命 令, 將 口 令 從 gshadow 檔 寫 回 group 檔 若 要 啟 動, 則 執 行 grpconv 命 令 32
chpasswd chpasswd 可 以 讀 入 未 加 密 前 的 口 令, 並 且 經 過 加 密 後, 將 加 密 後 的 口 令 寫 入 /etc/shadow 當 中 這 個 指 令 很 常 被 使 用 在 大 量 建 置 帳 號 的 情 況 中! chpasswd 可 以 由 Standardinput 讀 入 資 料, 每 筆 資 料 的 格 式 是 username:password chpasswd 使 用 的 是 DES 加 密 方 法 來 加 密, 我 們 可 以 使 用 chpasswd m 來 使 用 FC4 預 設 的 MD5 加 密 方 法 使 用 DES 方 法 加 密 後, 在 /etc/shadow 的 口 令 欄 內, 他 的 口 令 位 數 為 13 位 舉 例 來 說, 我 的 系 統 當 中 有 個 使 用 者 帳 號 為 dmtsai, 我 想 要 更 新 他 的 口 令 (update), 假 如 他 的 口 令 是 abcdefg 的 話, 那 麼 我 可 以 這 樣 做 33
usermod 命 令 34
usermod 命 令 35
usermod 命 令 36
passwd 命 令 37
手 動 創 建 用 戶 帳 號 底 下 的 範 例 當 中, 我 們 使 用 手 動 的 方 式 來 建 立 一 個 名 為 normaluser 的 帳 號, 這 個 帳 號 屬 於 normalgroup 這 個 用 戶 組 整 個 動 作 是 這 樣 的 1. 先 建 立 所 需 要 的 群 組 vi /etc/group 2. 將 /etc/group 與 /etc/gshadow 同 步 化 grpconv 3. 建 立 帳 號 的 各 個 屬 性 vi /etc/passwd 4. 將 /etc/passwd 與 /etc/shadow 同 步 化 pwconv 5. 建 立 該 帳 號 的 口 令 passwd accountname 6. 建 立 使 用 者 家 目 錄 cp -a /etc/skel /home/accountname 7. 更 改 使 用 者 家 目 錄 的 屬 性 chown -R accountname.group /home/accountname 38
手 動 創 建 用 戶 帳 號 1.vi /etc/group,vi /etc/gshaow 根 據 group 和 gshadow 檔 欄 位 所 代 表 之 意 義, 我 們 可 用 文 書 編 輯 器, 將 新 的 用 戶 組 加 入 group 與 gshadow 文 件 舉 例 來 說, 新 增 的 用 戶 组 名 稱 為 justgroup, 我 們 先 在 group 檔 後 面 加 上 這 一 行 : justgroup:x:510: 2. 執 行 grpconv 命 令 可 根 據 /etc/group 檔 內 容 來 安 裝 或 更 新 /etc/gshadow; 或 在 gshadow 檔 後 面 加 上 這 一 行 : justgroup: : : 39
手 動 創 建 用 戶 帳 號 3. vi /etc/passwd 根 據 passwd 和 shadow 檔 欄 位 所 代 表 之 意 義, 我 們 可 用 文 書 編 輯 器, 將 新 的 用 戶 帳 號 加 入 passwd 與 shadow 文 件 舉 例 來 說, 新 增 的 帳 號 名 稱 為 silent, 我 們 先 在 passwd 檔 後 面 加 上 這 一 行 : 帳 號 名 稱 為 silent 使 用 者 識 別 項 為 600 隸 屬 於 群 組 識 別 字 為 100 使 用 者 家 目 錄 位 於 /home/silent 採 用 bash 做 為 用 戶 環 境 40
手 動 創 建 用 戶 帳 號 4. vi /etc/shadow 將 /etc/passwd 存 檔 後, 接 著 編 輯 /etc/shadow 文 件 : 或 者 是 執 行 pwconv 命 令, 可 根 據 /etc/passwd 檔 內 容 來 安 裝 或 更 新 /etc/shadow; 5. 創 建 用 戶 帳 號 的 口 令 passwd accountname 將 設 好 的 口 令 通 知 該 用 戶 即 可 41
手 動 創 建 用 戶 帳 號 6. 創 建 樣 板 使 用 者 家 目 錄 在 建 立 /home/silent 目 錄 時, 若 單 純 用 mkdir /home/silent 命 令, 則 會 缺 少 許 多 預 設 的 文 件 因 此 建 議 最 好 先 建 立 一 個 樣 板 用 戶, 例 如 template 如 此 在 /home/template 目 錄 中 就 會 有.bash_profile.bashrc 等 預 設 的 文 件 然 後 再 將 樣 板 用 戶 的 家 目 錄 複 寫 一 份 給 新 帳 號 即 可 如 果 您 喜 歡 以 這 種 方 式 來 建 新 的 使 用 者, 則 可 保 留 /home/template 目 錄, 以 後 在 建 新 使 用 者 目 錄 時 就 方 便 了 42
手 動 創 建 用 戶 帳 號 7. 更 改 使 用 者 家 目 錄 的 屬 性 43
手 動 創 建 用 戶 帳 號 ( 方 法 二 ) 步 驟 1: 修 改 /etc/passwd 在 /etc/passwd 檔 案 中 建 立 一 行 含 有 neo 的 資 訊, 該 行 包 含 下 列 內 容 : 第 1 個 欄 位 使 用 者 名 稱 設 定 為 neo 第 2 個 欄 位 ( 密 碼 欄 位 ) 填 入 字 元 x, 代 表 此 使 用 者 必 須 輸 入 密 碼 才 可 登 入, 且 密 碼 巳 用 shadow 機 制 藏 到 /etc/shadow 第 3 個 欄 位 (UID) 填 入 500 或 以 上 的 UID 第 4 個 欄 位 (GID) 填 入 500 或 以 上 的 GID 第 5 個 欄 位 個 人 資 訊 留 空 第 6 個 欄 位 neo 的 家 目 錄 設 定 為 /home/neo/ 第 7 個 欄 位 預 設 的 shell 設 定 為 /bin/bash 44
手 動 創 建 用 戶 帳 號 ( 方 法 二 ) 步 驟 2: 修 改 /etc/shadow 在 /etc/shadow 檔 案 中 建 一 行 含 有 csie999 的 資 訊, 該 行 包 含 下 列 內 容 : 第 1 個 欄 位 使 用 者 名 稱 設 定 為 csie999 第 2 個 欄 位 出 現 兩 個 驚 嘆 號, 代 表 此 使 用 者 仍 未 設 定 密 碼 密 碼 設 定 為 永 不 過 期 步 驟 3: 修 改 /etc/group RedHat Linux 預 設 會 產 生 一 個 與 帳 號 名 稱 同 名 的 群 組 當 作 此 使 用 者 的 主 要 群 組 (UPG 機 制 ) /etc/group 檔 案 中, 會 建 立 一 行 含 有 neo 的 群 組 名 稱 以 群 組 名 稱 csie999 開 頭 出 現 在 密 碼 欄 位 的 一 個 x 代 表 系 統 使 用 shadow 群 組 密 碼 GID 會 與 /etc/passwd 檔 案 中 所 列 出 的 neon 使 用 者 的 GID 相 同 步 驟 4: 修 改 /etc/gshadow 45
手 動 創 建 用 戶 帳 號 ( 方 法 二 ) 步 驟 5: 建 立 家 目 錄 /home/csie999 在 /home/ 目 錄 下 建 立 一 個 使 用 者 csie999 的 目 錄 這 個 目 錄 是 屬 於 使 用 者 neo 與 群 組 csie999 所 有 而 它 只 允 許 使 用 者 csie999 擁 有 讀 取 寫 入 與 執 行 的 權 限 並 拒 絕 其 他 人 任 何 的 存 取 權 限 步 驟 6: 裝 潢 家 目 錄 /home/csie999 位 於 /etc/skel/ 目 錄 中 的 檔 案 ( 其 中 含 有 預 設 的 使 用 者 設 定 ) 會 複 製 到 新 的 /home/csie999/ 目 錄 中 總 結 : RedHat Linux 中 執 行 useradd csie999 指 令 後, 會 建 立 名 為 csie999 帳 號 csie999 的 群 組 及 /home/neo 家 目 錄, 此 帳 號 的 狀 態 是 鎖 定 如 要 啟 用 它, 系 統 管 理 員 必 須 使 用 passwd 指 令 來 指 定 一 個 密 碼 給 這 個 帳 號 46
大 量 建 立 帳 號 1. 建 立 使 用 者 清 單 users.list 2. 撰 寫 大 量 建 立 帳 號 的 shell script:batch-add-users.sh users.lst 內 容 如 下 : user01:1234 user02:1234 user03:1234 batch-add-users.sh 內 容 如 下 #!/bin/bash for i in `awk -F: {print $1} users.list ` #awk 兩 旁 的 是 反 單 引 號 do useradd -m $i # -m 選 項, 要 求 建 立 家 目 錄 grep \<$i>\> users.list chpasswd # 設 定 使 用 者 的 密 碼 chage -d 0 $i # 設 定 強 迫 使 用 者 一 登 入 便 得 修 改 密 碼 done 47
練 習 一 : 單 人 模 式 - 忘 記 root 口 令 時 若 是 只 有 單 獨 一 人 使 用 系 統, 而 沒 有 其 他 用 戶 存 在, 又 不 想 在 每 次 啟 動 系 統 都 經 過 登 入 回 答 口 令 的 程 式, 或 者 是 忘 記 root 口 令 時, 怎 麼 辦? 這 時, 就 需 要 用 到 單 人 模 式 (Single User Mode) 來 開 機 在 開 機 顯 示 GRUB 畫 面 時, 按 鍵 切 換 到 GRUB 的 文 字 介 面 畫 面, 並 輸 入 以 下 參 數 : 當 系 統 進 入 單 人 模 式 後, 並 不 會 要 求 輸 入 帳 號 及 口 令 提 示 符 號 之 前 的 字 串 也 與 多 人 模 式 時 不 一 样, 此 時 可 以 passwd 命 令 更 改 口 令 : 48
單 人 模 式 - 忘 記 root 口 令 時 的 解 決 辦 法 按 a 鍵, 進 入 修 改 模 式 按 s 鍵, 再 按 輸 入 鍵 後, 再 按 b 鍵 重 新 啟 動 Linux 49
練 習 二 : 手 動 新 增 一 個 用 戶 帳 號 以 手 動 編 輯 的 方 式 來 新 增 一 個 使 用 者 帳 號 david 1. 首 先 編 輯 /etc/passwd 2. 同 步 /etc/shadow 3. 建 立 david 的 口 令 4. 建 立 david 的 家 目 錄 50
練 習 三 : 新 增 一 個 nologin 用 戶 帳 號 以 手 動 編 輯 的 方 式 來 新 增 一 個 使 用 者 帳 號 csie004 不 能 使 用 bash, 但 可 以 正 常 收 發 email 或 是 ftp 51
練 習 三 : 新 增 一 個 nologin 用 戶 帳 號 52
練 習 三 : 將 用 戶 帳 號 改 為 可 以 使 用 bash 方 法 一 : 已 經 可 以 login 了 53
練 習 三 : 將 用 戶 帳 號 改 為 可 以 使 用 bash 方 法 二 : 將 /sbin/nologin 改 為 /bin/bash 54
練 習 四 : 執 行 newgrp 命 令 執 行 newgrp 命 令 讓 用 戶 取 得 與 群 組 相 同 的 存 取 權 限 1. 先 新 增 群 組 並 且 設 定 群 組 口 令 2. 建 立 文 件 testfile, 並 修 改 其 擁 有 群 組 為 testgroup, 且 此 群 組 對 testfile 具 有 rw 許 可 權 : 55
練 習 五 : 執 行 newgrp 命 令 以 csie999 身 分 執 行 newgrp 命 令 完 成 後 csie999 的 有 效 群 組 變 成 cs_group 接 著 測 試 看 看 csie999 是 否 可 讀 寫 /tmp/testgp: 下 exit 命 令, 可 以 回 到 root 的 bash 56