匿名
尚未登入
登入
頂極製作所
搜尋
檢視 緯育 2026-0402.2 的原始碼
出自頂極製作所
命名空間
頁面
討論
更多
更多
頁面操作
閱讀
檢視原始碼
歷史
←
緯育 2026-0402.2
由於下列原因,您沒有權限進行編輯此頁面的動作:
您請求的操作只有這個群組的使用者能使用:
管理員
您可以檢視並複製此頁面的原始碼。
== 帳號與群組的管理概念 == * [https://drive.google.com/file/d/1KnX8bU-H1JH0fGJ9OY5nrQSTxuEpvfqr Linux-帳號群組] [[檔案:2026-0402-05.png|800px]] * [https://drive.google.com/file/d/1rChGGb9uobKw4-da_SHRZWBoQPU3Kdt7 帳號與群組「四件組」與一致性] [[檔案:2026-0402-06.png|800px]] === 群組基本管理指令 === * 新增群組 (groupadd) ** 基本用法:groupadd [群組名稱]。 ** 指定 GID:groupadd -g [GID] [群組名稱]。 ** 建立後可透過 cat /etc/group 檢視。 * 修改群組 (groupmod) ** 更改群組名稱:groupmod -n [新群組名稱] [原群組名稱]。 ** 更改 GID:groupmod -g [新GID] [群組名稱]。 * 刪除群組 (groupdel) ** 基本用法:groupdel [群組名稱]。 ** 若有成員正在使用該群組,系統會提示無法刪除。可使用 -f 強制刪除,但可能導致使用者程式出現問題。 ** 刪除後,使用者無法再透過 newgrp 登入該群組。 === 群組成員與密碼管理 === * 管理群組成員 (groupmems) ** 新增成員:groupmems -a [使用者帳號] -g [群組名稱]。 ** 移除成員:groupmems -d [使用者帳號] -g [群組名稱]。 ** 列出成員:groupmems -l -g [群組名稱]。 * 管理群組密碼與成員 (gpasswd) ** 設定/變更群組密碼:gpasswd [群組名稱]。講師建議非必要不設定密碼,因不設密碼反而更安全。 ** 新增成員:gpasswd -a user1,user2 [群組名稱] 或 gpasswd -M user1,user2 [群組名稱] 可一次加入多位成員。注意:此操作會覆蓋原有的成員列表。 ** 移除成員:gpasswd -d [使用者帳號] [群組名稱]。 ** 設定群組管理者:gpasswd -A [管理者帳號] [群組名稱]。 * 群組設定檔案 ** /etc/group:儲存群組基本資訊,包括群組名稱、GID 及成員列表。 ** /etc/gshadow:儲存群組的加密密碼與管理者資訊。使用指令管理會自動同步這兩個檔案。 === 群組切換與權限應用 === * 切換與識別使用者群組 ** groups [使用者名稱]:查詢指定使用者所屬的所有群組。不加參數則顯示當前使用者。 ** id:查看目前使用者詳細的群組資訊。 ** newgrp [群組名稱]:切換有效群組。若使用者已是群組成員,無需密碼;若非成員,且群組設有密碼,則需輸入密碼才能切換。 ** newgrp -:切換回使用者的主要群組。 ** exit:登出當前切換的群組,返回上一層狀態。 * 群組管理者權限 ** 群組管理者的唯一功能是新增或移除群組內的其他成員(例如使用 gpasswd -d)。一般群組成員無此權限。 * 應用場景與權限設定 ** 共享唯讀資料:將檔案權限設為群組唯讀(如 chmod 640 file),非群組成員則無權限。群組成員無需切換即可讀取。 ** 共用可讀寫專案:為實現群組協作(成員間可互相修改檔案),可建立一個共用目錄(如 chmod 770 dir),並要求成員使用 newgrp 切換到該群組後再建立檔案。這樣,新檔案的所屬群組會是共用群組,而非建立者個人的主要群組,確保了其他成員的寫入權限。 ** 管理需求:將一般使用者加入特定管理群組(如 netplan 目錄所屬群組),使其在不改變帳號本質的情況下,獲得該資源的管理能力。 === 使用者帳號建立補充 === * useradd -m 的重要性 ** 建立使用者時應使用 useradd -m [帳號],-m 參數會自動為使用者建立家目錄 (/home/[帳號])。 ** 若省略 -m,則需手動建立家目錄、複製設定檔、並修正擁有者與權限,過程繁瑣。 * 家目錄預設檔案來源 (/etc/skel) ** 新使用者家目錄中的預設檔案(如 .bashrc)是從 /etc/skel 目錄複製而來的。管理員可客製化此目錄以統一新使用者的預設環境。 * 使用者預設值設定檔 (/etc/default/useradd) ** useradd 指令的預設行為(如預設 Shell、家目錄根路徑等)定義在此檔案中。 [[檔案:2026-0407-01.png|800px]] === 帳號與身份認知 === * Whoami/Id/Pwd 的基本辨識 ** 透過 whoami(或「Who Am I」)快速確認當前使用者身份;講者提及 id 指令已在前面章節講過,兩者皆可用於辨識。 ** 在共享環境或雲端登入時,常看不到完整提示,應用這類指令以自我確認「我是哪個帳號」與目前所在目錄(pwd)。 ** 提醒在雲端環境初次登入時,花約 30 秒用這些指令確認基本狀況。 * 身份切換與授權的差異(概念引介) ** 身份切換:切換成他者身份後,所有操作被完整視為該身份行為;若用於不當行為,追查會指向被切換的帳號。 ** 授權:保留自身帳號,授權他方執行特定操作;機制與概念不同,避免直接把帳號給對方。此為後續將深入的主題。 === 群組與帳號資訊查詢 === * finger 與 /etc/passwd 的資訊欄位 ** finger 可用來展示使用者資訊;/etc/passwd 第五欄為資訊欄,可分割為多欄位配合展示。 ** 現代環境較少使用 finger,但在學習歷史或環境檢視時可作補充。 * 群組相關指令:groups 與 groupmems ** groups:以帳號查所屬群組,可查自己或指定帳號(加上帳號或 ID)。 ** groupmems(或類似名稱,如講者口誤「Goover Members」):以群組查成員名單;區分「用帳號查群組」與「用群組查帳號」兩種向度。 === 線上使用者與主機狀態監控 === * users 指令 ** 顯示目前線上使用者列表,適合遠端登入後的第一步快速檢查。 ** 有些主機可能未收錄 users 指令,需改用 w 或 who。 * w 指令的完整視圖與欄位解讀 ** 無需參數即可提供豐富資訊:當前時間、系統開機時間(up)、線上使用者數、Load average(三個期間的 CPU 負載)、每位使用者的終端、登入來源與時間、idle(閒置時間)、CPU 使用(JCPU/PCPU)、當前執行命令。 ** 時間與時區:示例中系統未調時區,顯示 3 點;台灣需加 +8,顯示 11 點。時間與時區另有專章。 ** 終端類型與來源: ** tty 表示本機控制台登入;遠端登入則標示 pts/BTS(講者示例中提「BTS」字樣)與來源 IP(若為 public IP 可追查身分)。 ** 登入時間(Login at)與 idle: ** Login at 顯示精確登入時間(如 3:13),idle 顯示未操作的持續時長(秒、分)。 ** CPU 負載解讀(Load average 三值:1 分鐘、5 分鐘、15 分鐘平均): ** 單核心基準:1.0 代表 100%;0.5 代表 50%;2.0 代表已滿載且尚有等候作業排隊。 ** 多核心換算:雙核心 2.0 代表兩核心滿載;4.0 代表兩核心滿載且額外兩核心等候量。 ** 判讀策略:較少在意 1 分鐘瞬時值,重看 5 分鐘;若 1 分鐘高、5 分鐘低,可能是瞬間工作。若 1、5 都高,再看 15 分鐘以辨識是否長期滿載。 ** 手機類比(Android 開發者選項顯示核心與負載): ** 若 8 核心手機跑遊戲時 Load 僅約 2.0,CPU 很輕鬆,lag 可能非 CPU 問題;若高達 12.x,表示 CPU 來不及處理。 ** 進程觀察與強制登出: ** w 可配合顯示 PID(小 p 參數)定位某使用者進行的程序,如歷史查看(history、/etc/passwd 等)。 ** 因「everything is a file;process 也是 file」,可用 kill 直接處理特定 PID(例如 kill 1297)以強制結束程序或登出。 ** 日常操作偏好: ** 遠端檢查通常以 w 為首選,或先 users 後 w;w 無參數已涵蓋多數需求。 * who 指令(精簡版) ** 顯示線上誰在用:帳號、時間、日期、來源 IP、終端(如 pts0/pts1、tty)。 ** who -b:顯示系統開機時間。 ** 顯示 UID/使用者 ID 等資訊;與 users/w 有重疊,依環境選用。 === 登入歷史、最後登入與紀錄檔位置 === * last 指令(講者口誤與變體說明:laster/lastlog) ** last:列出最近登入紀錄,可加 -n(或 -N、講者以「最後十筆」用語描述)限制顯示筆數;可指定終端(tty1、tty2、…)或帳號(如 user4)。 ** 顯示內容含:帳號、登入來源(BTS/pts 與 IP)、時間範圍(起訖)、持續時長(例如 0 分 0 秒代表登入失敗或極短會話)。 ** 實務中可能因 OS(如不同 distro,如 CentOS)有顯示差異或 bug,部分 tty 看不到;非指令問題,而是作業系統層面。 ** 常見流程:遠端登入後先用 w 檢視,再用 last 查看最近登入狀態與時間是否合理(例如發現昨天非上班日仍有登入需追查)。 * last 的資料檔案位置與格式 ** 檔案位於 /var/log/wtmp(講者以「RAR 底下 Log 底下 Wtemp/wtemplar」口語讀法,意指 /var/log/wtmp)。 ** 該檔非純文字檔,不能用 cat;需以對應工具(如 last)讀取,格式類似資料庫。 ** 若檔案被刪除或清空,相關指令輸出會變空白;駭客入侵離開前常會刪除此類檔案,需知路徑以便取證或監控。 * lastlog 指令(每帳號最後登入時間) ** 以帳號為主鍵,列出所有帳號的最後登入時間清單;未曾登入者標示 Never logged in。 ** 可能配合選項如 -t(例如 T3 表示三天範圍)過濾時間,但講者認為此用法較少用。 ** 資料來源於 /var/log/lastlog,亦非純文字檔。 * 清除紀錄的風險與不建議操作 ** 使用「truncate -s 0」等方式可清空檔案內容,但一般不建議;在練習環境可嘗試了解後果。 ** 清除會造成監控失效,實務上應保留紀錄以利稽核與事件溯源。 === 登入失敗偵測與防禦思路 === * lastb 指令(登入失敗紀錄) ** 顯示登入失敗的帳號、時間、終端、來源;資料檔位於 /var/log/btmp(講者稱「BAR 底下 LOCKER 底下 BETEMP」)。 ** 駭客傾向刪除此檔以掩蓋爆破紀錄;管理者應熟悉路徑與檔案性質。 ** 常見情境:一早遠端登入先跑 lastb;若看到大量且密集的失敗紀錄,可能有人嘗試暴力破解(踹)。 ** 示範:嘗試以不存在帳號(如 user999、use888)與錯誤密碼登入,lastb 即顯示 TTY1(本機)或遠端 pts 對應的失敗事件。 * 批次統計與告警 ** 以管線統計嘗試次數:lastb | wc -l 可快速得知失敗嘗試筆數(例如 10 次)。 ** 自動化腳本思路(後續課程以 shell script 實作):每小時掃描 lastb,篩選特定帳號或來源(遠端/本機),若超過閾值(如 100 或 1000 次),觸發動作。 ** 因應動作:最強硬的是直接關機(poweroff),以阻斷持續爆破;也可先記錄、告警(寄信、訊息),再由管理者決策。 ** 在無額外防禦系統的情況下,可自主建立基本偵測與防護。 === 實務快速檢查流程總結 === * 遠端登入初步檢視步驟(數秒至數分鐘) ** users:快速看線上有誰。 ** w:詳看負載、使用者、終端類型、來源 IP、登入時間、idle、目前執行的命令。 ** last:檢視最近登入紀錄與時間是否合理;必要時限定筆數或查特定 tty/帳號。 ** lastb:檢視近期登入失敗事件量與時間密度,判斷是否遭暴力嘗試。 ** 錯誤或可疑狀況出現時,進一步追查或採取對應措施(例如 kill 程序、通知、隔離、關機)。 [[檔案:2026-0407-02.png|800px]] === 身份切換的必要性與概念 === * 為何需要切換帳號 * 權限控管考量:在實務上,應盡量避免直接使用 root 帳號進行日常操作。通常會使用權限較低的帳號來執行任務,以降低對系統的影響範圍。 * 安全考量:為特定的服務(如 FTP、web server)配置專屬的系統使用者(system user)來進行管理,可以增強安全性。 * 系統維護需求:執行備份、升級等系統維護工作時,可能需要切換到擁有特定權限的專屬帳號。 * 軟體本身限制:某些軟體(如 Telnet、SSH)為了安全,預設會限制或禁止高權限帳號(如 root)直接登入,因此必須先以低權限帳號登入後再進行身份切換。 * 帳號使用的基本概念 * 最小權限原則:除非絕對必要,否則應避免使用 root 帳號。 * 安全切換流程:若確實需要使用 root 權限,應由一般使用者登入後再透過 su 指令切換身份。這種方式增加了破解難度,是目前主流作業系統(如 CentOS)的標準做法。 * 權限足夠即可:在操作時,應使用權限「低到足夠」的帳號來完成任務。 * 授權機制:可以使用授權機制(將在後續章節講述)來取代直接切換帳號,這樣無需共享 root 密碼。 * 監控與記錄:應建立完整的帳號監控機制、登入記錄與查詢系統。 * SSH 登入限制範例 * 講師以 Party(應為 PuTTY)軟體示範,當嘗試使用 root 帳號直接透過 SSH (Port 22) 登入時會失敗。 * 失敗原因並非密碼錯誤,而是基於安全考量,軟體預設不允許 root 帳號直接遠端登入。 * 正確的操作是先使用一個低權限的一般使用者帳號(如 user)登入,成功後再使用 su 指令切換到 root 帳號。 === su(Switch User)指令詳解 === * su 指令基本用法 * su 是 Switch User 的縮寫,用於切換使用者身份。 * su:不帶任何參數,預設切換到 root 帳號,需要輸入 root 的密碼。 * su [帳號名稱]:切換到指定的帳號,需要輸入目標帳號的密碼。 * su 的環境切換差異(* 參數) * 不帶減號(su [帳號]):僅切換使用者「身份」與權限,但工作環境(如目前所在目錄、環境變數)沿用切換前帳號的設定,稱為「不完整切換」。 * 帶減號(su * [帳號]):身份、權限與工作環境皆完整切換為目標帳號的預設環境,稱為「完整切換」。例如,切換後當前目錄會變為目標使用者的家目錄(home directory),如同該使用者重新登入系統。 * su 的權限切換規則 * 高權限切換至低權限:root 切換到任何一般使用者帳號時,不需要輸入對方的密碼。 * 低權限切換至高權限/其他帳號:一般使用者切換到 root 或其他使用者帳號時,必須輸入目標帳號的正確密碼。 * su 的其他常用參數 * -c [指令]:允許以切換後的身分執行單一指令,執行完畢後自動回到原使用者身份,無需手動登出。例如:su * root -c 'ls -la /root'。 * -s [Shell 路徑]:在切換身份時指定要使用的 Shell。例如,當目標使用者的預設 Shell 不是 bash 時,可用 su user1 -s /bin/bash 強制使用 bash 環境。 === 補充技巧:列出系統帳號與群組 === * 傳統方法:解析設定檔 * 透過讀取系統設定檔並搭配指令達成。 * 列出所有帳號:cut -d: -f1 /etc/passwd。此指令讀取 /etc/passwd(儲存所有帳號資訊),以冒號 : 為分隔符,取出第一欄位(帳號名稱)。 * 列出所有群組:cut -d: -f1 /etc/group。原理同上,但讀取的是群組設定檔 /etc/group。 * Bash 內建指令:compgen * 在 bash 環境下,可使用更簡單的內建指令 compgen。 * 列出所有帳號:compgen -u。 * 列出所有群組:compgen -g。 * 限制:compgen 僅存在於 bash。在其他 Shell(如 sh、csh 或 macOS 預設的 zsh)中無法使用,需改採用傳統的 cut 方法。 [[檔案:2026-0407-03.png|800px]] * [https://drive.google.com/file/d/14h4rlav6ikeF16YZuhxPhCFADCzYEiGk Linux 身份切換與權限授權] [[檔案:2026-0407-04.png|800px]]
返回到「
緯育 2026-0402.2
」。
* [[檔案:2000-Dragon-30.png|15px]] [[附近走走]]<br> * [[檔案:2000-Dragon-30.png|15px]] [[應用程式]]<br> * [[檔案:2000-Dragon-30.png|15px]] [[郵遞區號]]<br> * [[檔案:2000-Dragon-30.png|15px]] [[作品紀錄]]<br> * [[檔案:2000-Dragon-30.png|15px]] [[攝影相簿]]<br> * [[檔案:2000-Dragon-30.png|15px]] [[網路書籤]]<br> * [[檔案:2000-Dragon-30.png|15px]] [[網路照片]]<br> * [[檔案:2000-Dragon-30.png|15px]] [[星艦日誌]]<br> * [[檔案:2000-Dragon-30.png|15px]] [[Privacy_Policy|隱私政策]]<br>
附近走走
應用程式
郵遞區號
作品紀錄
攝影相簿
網路書籤
網路照片
星艦日誌
隱私政策
首頁
wiki工具
wiki工具
特殊頁面
頁面工具
頁面工具
使用者頁面工具
更多
連結至此的頁面
相關變更
頁面資訊
頁面日誌