管理使用者、群組和權限是 Ubuntu Server 管理員的基礎工作之一。無論你是設定多使用者環境還是保護伺服器,了解如何建立、修改和管理使用者帳戶、群組和權限都至關重要。本指南深入介紹了使用者和權限管理,並附有真實範例、命令輸出和最佳實務。
上一篇文章:
01. Ubuntu Server 簡介 – SysOSX: AI & Cloud
02. 如何架設你的第一台 Ubuntu Server:初學者指南 – SysOSX: AI & Cloud
03. 掌握 Ubuntu Server 的 Linux 命令列
簡介
Ubuntu Server 是一個功能強大的平台,可用於託管應用程式、管理服務和實現多使用者環境。透過掌握使用者和權限管理,你可以保護伺服器、有效控制存取並防止未經授權的操作。本指南將涵蓋從基本的使用者帳戶建立到進階權限設定的全部內容,並附有詳細範例。
建立和管理使用者帳戶
建立使用者
要在 Ubuntu Server 上建立使用者帳戶,請使用adduser命令。此命令是互動式的,會提示你提供有關使用者的其他資訊。
範例命令:
sudo adduser john
範例輸出:
Adding user `john' ...
Adding new group `john' (1001) ...
Adding new user `john' (1001) with group `john' ...
Creating home directory `/home/john' ...
Copying files from `/etc/skel' ...
New password:
Retype new password:
passwd: password updated successfully
Changing the user information for john
Enter the new value, or press ENTER for the default
Full Name []: John Doe
Room Number []: 101
Work Phone []: 555-1234
Home Phone []: 555-5678
Other []:
Is the information correct? [Y/n] Y
這會建立一個名為john的使用者,其主目錄位於/home/john,並為其指派唯一的使用者 ID(UID)。
修改使用者
usermod命令可用於修改使用者帳戶。例如,你可以變更使用者的主目錄、shell 或群組成員身分。
變更主目錄:
sudo usermod -d /home/new_john john
sudo mv /home/john /home/new_john
鎖定或解鎖使用者帳戶:
- 鎖定帳戶:
sudo passwd -l john - 解鎖帳戶:
sudo passwd -u john
範例輸出(鎖定帳戶):
passwd: password expiry information changed.
刪除使用者
要刪除使用者,請使用deluser命令。你還可以刪除其主目錄和關聯檔案。
範例命令:
sudo deluser --remove-home john
範例輸出:
Looking for files to backup/remove ...
Removing files ...
Removing user `john' ...
Warning: group `john' has no more members.
Done.
管理群組
群組是組織使用者和指派集體權限的一種方式。每個使用者可以屬於多個群組。
建立和管理群組
要建立新群組,請使用addgroup命令。
範例命令:
sudo addgroup developers
範例輸出:
Adding group `developers' (GID 1002) ...
Done.
要刪除群組:
sudo delgroup developers
將使用者新增至群組
要將使用者新增至群組,請使用usermod命令的-aG選項。
範例命令:
sudo usermod -aG developers john
驗證群組成員身分:
groups john
範例輸出:
john : john developers
這表明john屬於以下群組:john和developers.
了解檔案和目錄權限
Linux 檔案權限對於控制對檔案和目錄的存取至關重要。權限針對以下三個類別定義:擁有者, 群組和其他人.
權限類型
每個類別有三種權限類型:
- 讀取 (r):允許檢視檔案內容或列出目錄內容。
- 寫入 (w):允許修改檔案內容或在目錄中建立/刪除檔案。
- 執行 (x):允許執行可執行檔案或存取目錄。
範例:
使用ls -l檢視檔案權限:
ls -l /home/john
範例輸出:
-rw-r--r-- 1 john john 4096 Mar 21 14:00 file.txt
rw-:擁有者(john)擁有讀取和寫入權限。r--:群組(john)擁有唯讀權限。r--:其他人擁有唯讀權限。
變更權限
使用chmod命令修改權限。
範例命令:
- 授予擁有者執行權限:
chmod u+x file.txt - 刪除其他人的寫入權限:chmod o-w file.txt
使用數值:
權限也可以使用數值來設定:
chmod 755 file.txt:擁有者擁有全部權限,群組和其他人擁有讀取/執行權限。
了解數字權限(755、777、744)
Linux 權限可以用數字表示,其中每個數字對應一個特定的權限等級:
數字權限的結構:
每個數字權限由三個數字組成:
- 第一個數字:擁有者的權限。
- 第二個數字:群組的權限。
- 第三個數字:其他人的權限。
每個數字根據以下值計算:
4:讀取(r)2:寫入(w)1:執行(x)
這些值的總和決定了每個類別的權限等級。
常見的數字權限:
- 777:所有人擁有全部權限(讀取、寫入、執行)。
- 擁有者:
rwx - 群組:
rwx - 其他人:
rwx - 使用情境:出於安全原因很少使用,但可以套用於暫存目錄,例如
/tmp.
- 擁有者:
- 755:擁有者擁有全部權限,群組和其他人擁有讀取和執行權限。
- 擁有者:
rwx - 群組:
r-x - 其他人:
r-x - 使用情境:常用於可執行檔案或目錄。
- 擁有者:
- 744:擁有者擁有全部權限,群組和其他人唯讀。
- 擁有者:
rwx - 群組:
r-- - 其他人:
r-- - 使用情境:常用於私人檔案。
- 擁有者:
範例:
要將權限設定為755以用於指令碼:
chmod 755 script.sh
範例輸出:
-rwxr-xr-x 1 john john 4096 Mar 21 14:00 script.sh
擁有權管理
使用chown命令來變更擁有權。
範例命令:
sudo chown john:developers file.txt
這會將擁有者設定為john,並將群組設定為developers.
範例輸出:
-rw-r--r-- 1 john developers 4096 Mar 21 14:00 file.txt
使用 Sudo 提升權限
sudo命令允許使用者以提升的權限執行命令。要授予使用者sudo存取權限,請將其新增至sudo群組。
範例命令:
sudo usermod -aG sudo john
驗證 Sudo 存取權限:
sudo -l -U john
範例輸出:
User john may run the following commands on this host:
(ALL : ALL) ALL
保護使用者帳戶的最佳實務
- 強制執行嚴格的密碼政策:
使用passwd設定密碼過期時間:sudo passwd -e john - 限制 Sudo 存取權限:
僅向受信任的使用者授予sudo權限。 - 停用 Root 登入:
編輯 SSH 設定檔:
sudo nano /etc/ssh/sshd_config
設定:
PermitRootLogin no
- 使用 SSH 金鑰進行驗證:
用 SSH 金鑰取代以密碼為基礎的登入。 - 監控使用者活動:
使用last或who追蹤登入活動:
last
輸出說明
uadmin pts/1 192.168.255.48 Fri Mar 21 13:55 still logged in
uadmin pts/0 192.168.255.48 Fri Mar 21 13:54 still logged in
uadmin pts/1 192.168.255.48 Fri Mar 21 01:49 - 08:19 (06:29)
uadmin pts/0 192.168.255.48 Fri Mar 21 00:53 - 08:19 (07:26)
reboot system boot 6.8.0-1021-azure Fri Mar 21 00:22 still running
逐行分析
使用者登入:uadmin pts/1 192.168.255.48 Fri Mar 21 13:55 still logged in
uadmin:登入使用者的使用者名稱。pts/1:登入使用的虛擬終端工作階段。虛擬終端(pts)是虛擬終端機,通常在使用者透過 SSH 登入時建立。192.168.255.48:使用者連線所用的遠端電腦的 IP 位址。Fri Mar 21 13:55:使用者登入的日期和時間。still logged in:表示使用者目前已登入且處於活動狀態。
| 欄 | 含義 |
|---|---|
| 使用者名稱 | 使用者或事件的名稱(uadmin, reboot). |
| 終端機 | 虛擬終端工作階段(pts/X)或系統事件(system boot). |
| 遠端主機/IP | 發起連線的遠端電腦的 IP 位址或主機名稱。 |
| 登入日期/時間 | 登入或事件開始的日期和時間。 |
| 登出時間 | 工作階段結束的日期和時間(如適用)。 |
| 持續時間 | 工作階段持續的總時間(如適用)。 |
| 工作階段狀態 | 工作階段的目前狀態(still logged in, still running). |
用於深入了解的其他命令
- 顯示目前已登入的使用者:
who - 範例輸出:
uadmin pts/1 2023-03-21 13:55 (192.168.255.48)
uadmin pts/0 2023-03-21 13:54 (192.168.255.48)
- 檢查系統執行時間:
uptime - 範例輸出:
14:15:32 up 13:53, 2 users, load average: 0.10, 0.12, 0.15
結論
管理使用者、群組和權限是 Ubuntu Server 管理員的一項基本技能。透過掌握這些工作,你可以保護伺服器、防止未經授權的存取並提高營運效率。
下一篇教學:Ubuntu Server 網路基礎知識
在下一篇教學中,我們將介紹 Ubuntu Server 的網路基礎知識,包括設定網路介面、設定靜態 IP、疑難排解網路連線問題,以及使用 Ubuntu 的netplan處理網路工作。敬請期待可行的見解,以最佳化伺服器的網路設定。
7 thoughts on “04. Managing Users and Permissions on Ubuntu Server: A Comprehensive Guide”