有些 VPS 開好只有給你 root 帳號,有些人會用一個 root 帳號打通關,雖然這樣很方便,但這樣其實破壞了 un*x 原本的權限管控機制。以下提供設定指令
建立新用戶 adduser {newuser}
將新用戶添加到 sudo 群組 usermod -aG sudo {newuser}
設定 SSH 許可權
3.1 修改 SSH 設定檔 nano /etc/ssh/sshd_config
確保允許使用 sudo 的用戶登入: AllowUsers newuser
禁用 root 直接登入: PermitRootLogin no
建議先把前者打開,確定設定生效再禁用 root 直接登入,以免 SSH 設定失敗連 root 都沒辦法登入 VPS
3.2 重新啟動 SSH 服務 systemctl restart ssh
su - newuser
mkdir -p ~/.ssh && chmod 700 ~/.ssh
nano ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
systemctl restart ssh
破壞檔案權限紀律
在 Linux 和 Unix 系統中,每個檔案和目錄都有明確的擁有者與權限設定。使用 root 帳號管理系統可能無意中讓檔案的擁有權與權限配置錯誤,導致其他非 root 用戶無法適當操作系統,迫使未來所有管理工作都只能通過 root 來進行,完全破壞了系統的權限架構和使用者的安全隔離。
無意執行惡意腳本
當您使用 root 帳號執行像 php composer install 這樣的操作時,有可能安裝來自不可信任來源的惡意套件。如果這些套件包含惡意腳本,它們將以 root 權限執行,對整個系統產生不可估量的損害,甚至完全接管系統。
擴大攻擊面
一旦 root 帳號的密碼被攻擊者獲得,整個系統就毫無防禦能力。因為 root 擁有最高權限,攻擊者可以繞過任何安全機制,修改檔案、刪除系統、安裝後門程式,使系統失控,甚至難以復原。
操作失誤風險
root 帳號的高權限意味著一個錯誤的指令可能造成重大破壞。例如,意外刪除或修改系統重要檔案可能導致系統崩潰。如果平時使用受限權限的用戶進行操作,這些失誤的影響可以被限制在用戶範圍內,避免影響整個系統。
難以追蹤操作
使用 root 帳號無法精確地追蹤哪個使用者執行了哪些操作,這會讓系統管理變得不透明。在多用戶環境中,應通過 sudo 來執行特權操作,以確保操作有明確的紀錄,便於審計和稽核。
影響未來系統管理維護
長期使用 root 帳號進行所有系統管理,會讓系統依賴 root 權限,變得難以授權其他用戶進行日常維護。這不僅破壞了原本應有的權限隔離,也會讓團隊的系統管理更加繁重且危險。