歡迎來到 DevOps 之旅的第一天。 DevOps 工程師大部分時間都在使用 Linux 伺服器,無論是手動操作還是透過自動化。因此,我們將從核心部分開始: Linux 使用者管理和Shell 類型。
可以將CRUD (建立、讀取、更新、刪除)視為系統管理的四個動詞。這與資料庫中的理念相同,但這裡將其應用於用戶:
sudo useradd yousuf
這將建立一個名為yousuf
的新使用者帳戶。
您是否也想新增主目錄?請使用:
sudo useradd -m yousuf
id yousuf
getent passwd yousuf
這將為您提供 UID(使用者 ID)、GID(群組 ID)和指派的 shell。
更改使用者的shell:
sudo usermod -s /bin/bash yousuf
更改使用者的主目錄:
sudo usermod -d /home/new_home yousuf
刪除帳戶但保留主目錄:
sudo userdel yousuf
刪除帳戶以及主目錄:
sudo userdel -r yousuf
💡 請記住:刪除使用者並不會神奇地銷毀他們在其他地方建立的文件,除非你追蹤到他們。所以在點擊紅色按鈕前一定要三思。
現在讓我們加入細微差別:當使用者登入時會發生什麼?
使用者登入→得到提示。
例子:
$ ssh yousuf@server
yousuf@server:~$
yousuf
使用/bin/bash
或/bin/sh
作為登入 shell。他可以互動式地執行命令。使用者登入→無提示,無憐憫。
範例 shell 為/sbin/nologin
或/bin/false
。
如果有人嘗試:
ssh yousuf@server
使用/sbin/nologin
:系統禮貌地說「此帳戶不可用」。
使用/bin/false
:立即退出,沒有訊息。
✅這對於不需要手動登入的服務帳戶(資料庫、備份代理、監控工具)很有用。
現在讓我們來處理現實世界的問題(直接來自 KodeKloud Labs)
設想:
為了適應備份代理工具的規格,xFusionCorp Industries 的系統管理團隊需要建立一個具有非互動式 shell 的使用者。
任務:在應用程式伺服器 3上建立一個名為
yousuf
的用戶,並使用非互動式 shell。
📑連接詳細資訊(重要部分):
目標伺服器: stapp03 → 172.16.238.12
登入用戶: banner
密碼: BigGr33n
跳轉主機: jump_host.stratos.xfusioncorp.com
( thor
/ mjolnir123
)
ssh thor@jump_host.stratos.xfusioncorp.com
# password: mjolnir123
ssh [email protected]
# password: BigGr33n
現在您位於 App Server 3 內。
我們將使用/sbin/nologin
(在大多數 Linux 發行版中很常見)來確保沒有互動式登入:
sudo useradd -s /sbin/nologin yousuf
如果/sbin/nologin
不可用,則回退到/bin/false
:
sudo useradd -s /bin/false yousuf
getent passwd yousuf
預期輸出(範例):
yousuf:x:1005:1005::/home/yousuf:/sbin/nologin
最後一個字段確認它是非互動式的。 🎉
第一天,我們:
了解使用者帳戶的 CRUD 操作。
透過清晰的範例探索互動式與非互動式外殼。
在實際場景中應用這一點:在應用程式伺服器 3 上建立具有非互動式 shell 的yousuf
使用者。