用戶管理:命令 adduser
、usermod
、passwd
1. 為什麼理解用戶管理很重要?
今天我們要深入探討用戶管理,因為這是 Linux 管理中的一個重要部分。創建用戶、配置他們的環境以及管理他們的密碼——這些都將成為你工作中的重要工具。開始吧!
Linux 上的伺服器通常有很多用戶在運作。系統會為每位用戶提供特定的權限,來保護數據並避免混亂。你需要學習如何添加新的用戶(例如:你團隊中的開發者),配置他們的環境(例如更改 shell),以及在必要時限制訪問。
2. 使用 adduser
創建用戶
Linux 提供了命令 adduser
,它是命令 useradd
的更人性化版本。它可以輕鬆快速地創建新用戶:
基本語法
adduser 用戶名
創建用戶時會發生什麼?
- 在檔案
/etc/passwd
中為用戶創建新記錄。 - 生成主目錄(例如,
/home/用戶名
)。 - 設置基本參數(例如,默認 shell)。
- 系統會要求您輸入密碼和其他信息(例如,姓名、電話號碼 - 但這些是可選的)。
範例
我們來創建一個新用戶 dev_user
:
sudo adduser dev_user
輸入這條命令後,系統將提示您:
- 為用戶設置密碼。
- 輸入其他可選信息,如果沒有可以直接按
Enter
跳過。
檢查
為了確認用戶已創建,您可以查看檔案 /etc/passwd
:
cat /etc/passwd | grep dev_user
您會看到包含用戶 dev_user
信息的行。
3. 使用 usermod
配置用戶
當用戶已經創建時,可能需要更改其參數。例如,更改名稱,指定其他的 shell 或添加到組中。
更改用戶名
首先確保用戶未登錄系統。然後執行以下命令:
sudo usermod -l 新名稱 舊名稱
範例:
sudo usermod -l developer dev_user
現在用戶 dev_user
將被稱為 developer
。但其主目錄仍舊保持不變。
更改預設 shell
假設你需要將用戶的 shell 更改為 /bin/zsh
。為此,執行以下命令:
sudo usermod --shell /bin/zsh developer
通過以下命令檢查 shell 是否更改:
cat /etc/passwd | grep developer
更改主目錄
如果你希望新用戶在另一個主目錄中工作,請這樣操作:
sudo usermod -d /新路徑 developer
如果目錄尚未存在,使用選項 -m
以創建目錄並將舊目錄的內容移動過來:
sudo usermod -d /home/new_developer -m developer
4. 使用 passwd
管理密碼
設置和更換密碼
用戶密碼的設置(或更換)可以使用以下指令:
sudo passwd 用戶名
範例:
sudo passwd developer
系統會要求你兩次輸入新密碼,確認沒有輸入錯誤。
強制用戶下次登入時更換密碼
這功能在你創建用戶並希望他們首次登入時自行設置密碼的情況下非常實用:
sudo passwd -e developer
之後,使用者 developer
登入系統時,會看到需要更換密碼的提示訊息。
5. 實踐
任務 1: 創建新用戶
添加用戶
tester
:sudo adduser tester
確認用戶已創建:
cat /etc/passwd | grep tester
任務 2: 配置用戶參數
更改用戶名稱:
sudo usermod -l test_user tester
更改用戶的主目錄:
sudo usermod -d /home/test_user -m test_user
確認更改已應用:
ls -l /home/
更改用戶的 shell:
sudo usermod --shell /bin/zsh test_user
檢查更新後的用戶數據:
cat /etc/passwd | grep test_user
任務 3: 為用戶設置新密碼
為用戶設置密碼:
sudo passwd test_user
強制用戶在下次登錄時更改密碼:
sudo passwd -e test_user
6. 認識 Linux 中的管道 |
管道 |
是 Unix/Linux 的一種機制,可以將一個指令的輸出 (stdout) 作為另一個指令的輸入 (stdin)。這是一個強大的工具,能將指令組合起來,創建數據處理「流水線」。
這是怎麼運作的?
當你在指令之間使用管道時,Linux 會把第一個指令的標準輸出傳遞到下一個指令的標準輸入。這種方式可以有效處理大量數據,無需臨時文件。
語法:
指令1 | 指令2 | 指令3
指令1
生成數據。指令2
處理獲得的數據。指令3
進一步處理或保存結果。
範例:
列出文件並按照模式過濾:
ls -l | grep ".txt"
這裡 ls -l
輸出文件列表,而 grep
只過濾出副檔名為 .txt
的文件。
統計包含特定單詞的行數:
cat file.txt | grep "Linux" | wc -l
一步步顯示文件內容,查找包含 "Linux" 的行,然後統計它們的數量。
管道的優勢:
- 簡化複雜操作。
- 減少使用臨時文件。
- 能結合 Linux 的強大工具來自動化任務。
7. 認識 Linux 的 grep
grep
(Global Regular Expression Print) 是 Unix/Linux 中的命令列工具,用於在檔案中查找符合指定模式的行。它因支援正則表達式和靈活的設置而廣泛用於篩選和查找數據。
grep
如何運作?
grep
接收一個文字檔案(或標準輸入),查找符合指定模式的行,並輸出這些行。- 如果沒有找到模式,指令將不輸出任何內容。
範例
列出檔案並根據模式篩選:
ls -l | grep ".txt"
- 首先執行指令
ls -l
,其會列出目前目錄中的檔案清單 - 第一個指令
ls
的輸出透過管道符號|
傳遞給第二個指令grep
作為輸入 - 第二個指令篩選傳給它的行,並僅輸出包含 ".txt" 的行
計算包含特定詞的行數:
cat file.txt | grep "Linux" | wc -l
- 首先執行指令
cat file.txt
,其會將檔案 file.txt 的內容顯示在螢幕上 - 第一個指令
cat
的輸出透過管道符號|
傳遞給第二個指令grep
作為輸入 - 第二個指令篩選傳給它的行,並僅輸出包含 Linux 的行
- 然後第二個指令
grep
的輸出透過管道符號|
傳遞給第三個指令wc
作為輸入 - 第三個指令計算傳給它的行數並顯示結果
8. 常見錯誤和細節
更改用戶名時出現 "user is currently logged in" 錯誤。 如果用戶已經登入系統,你無法更改他的名稱。請確認用戶已經登出。
更改家目錄時的錯誤。 如果忘記加上
-m
,舊目錄的內容不會移動到新目錄中。用戶可能會丟失他的數據。忘記為用戶設置密碼。 通過
adduser
創建用戶後,一定要檢查是否已設置密碼。沒有密碼的話,他無法登入。UID
和GID
的值。 有時管理員希望在創建用戶時指定UID
(用戶 ID)和GID
(群組 ID)值。這需要使用useradd
命令,但這是 Linux 的進階主題。
9. 實際應用
想像一下:你是公司伺服器的管理員。開發人員來找你,並且每個人都要求帶有個性化設置的系統訪問權限。你可以:
- 創建用戶並分配所需的訪問權限。
- 根據他們的喜好設置環境(比如 shell)。
- 管理密碼並確保安全性。
這些命令在面試 DevOps 或系統管理員職位時也會派上用場。他們可能會問你如何創建和設置用戶,或者讓你實際完成這項任務。
備忘:主要命令
命令 | 描述 |
---|---|
sudo adduser 用戶名 |
創建一個新用戶。 |
sudo usermod -l 新名 舊名 |
更改用戶名稱。 |
sudo usermod --shell 路徑 用戶名 |
設置默認的 shell。 |
sudo usermod -d 路徑 用戶名 |
更換用戶的家目錄。 |
sudo passwd 用戶名 |
設置新密碼。 |
sudo passwd -e 用戶名 |
強制下次登錄時更改密碼。 |
多練習!Linux 就是動手實操的工作。你練習得越多,在實際系統中操作就會越容易。
GO TO FULL VERSION