iT邦幫忙

2023 iThome 鐵人賽

DAY 7
0

群組與帳號相關檔案

在 Linux 系統中,管理使用者帳號和群組是一個核心的任務。它不僅涉及允許合法的使用者存取系統資源,還包括定義他們可以做什麼,以及如何做。這是一個既精密又重要的過程,涉及多個相關檔案和設定。

這個部分將介紹 Linux 中的群組和帳號管理,透過 /etc/passwd/etc/shadow/etc/group 等內容讓讀者瞭解其關連性。

在資訊安全的議題上,上述檔案又是較為敏感的內容,所以我們也會常常聽到系統帳號清查時,這些檔案都會出現的原因。

帳號、密碼與群組檔案關聯

帳號相關檔案

在 Linux 中,系統帳號是由 /etc/passwd/etc/shadow 為主要檔案,其有各自不同的功能。

/etc/passwd

/etc/passwd 是一個文字檔,檔案部份內容參考如下:

root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin

/etc/passwd 檔案主要用來記錄使用的相關資訊。由 6 個 : 分隔為 7 個欄位,其每個欄位說明如下:

# 說明
1 登入帳號,也就是登入系統時所輸入的帳號,在整個系統中帳號不可重複
2 使用者密碼,現在使用 x 表示,已不使用
3 記載著該帳號的使用者編號(User ID, UID),該編號在整個系統中不可重複
4 記載著該帳號的主要群組 ID,群組 ID 在 /etc/group 中會有所定義
5 該帳號的稱呼、匿名等,也可以設定為空白
6 該帳號的家目錄所在位置,預設都會放置在 /home/ 目錄中
7 該帳號登入時,要使用哪一個操作環境,預設是使用 BASH 操作環境

雖然該檔案為文字檔,也就是說可以使用 vi 等編輯器在編輯,但是除非操作的人非常瞭解其格式,否則不建議直接修改該檔案,應該儘量使用指令來代為設定。

/etc/shadow

/etc/shadow 檔案是一用來保存密碼的檔案,其部份內容參考如下

nobody:*:19123:0:99999:7:::
systemd-coredump:!!:19404::::::
dbus:!!:19404::::::
sssd:!!:19404::::::
tss:!!:19404::::::
sshd:!!:19404::::::
systemd-oom:!*:19404::::::
student:$6$DiKmZM6RSwwlv6Q0$bBlnS/Lj.83KFl..R6TZurzdnCDKRQBPARbeM0EN.6NXHUZbSZy7aXUre81mrBG9Qg5J2eQo3rGQiONQMnuJw1::0:99999:7:::
mysql:!!:19488::::::
apache:!!:19612::::::

/etc/shadow 檔案主要用來記錄和密碼有關的檔案,包含了密碼有效期間等資訊。由 8 個 : 分隔為 9 個欄位,其每個欄位說明如下:

# 說明
1 帳號,與 /etc/passwd 檔案第 1 個欄位相批配
2 使用 SHA-512 演算法加密過的密碼
3 上次密碼變更日期,從 1970-01-01 開始計算
4 密碼自修改後,多久內不可以再修改
5 密碼多久後,一定要修改
6 密碼到期前幾天要提出警告
7 密碼到期後,經過幾天後停用該帳號
8 帳號失效日期,從 1970-01-01 開始計算
9 保留給未來使用

群組相關檔案

群組可以把多個帳號進行分類,在做系統資源管理時,設定群組比起單一帳號更有效率。

/etc/group

/etc/group 存放著群組資訊,其部份內容如下:

root:x:0:
bin:x:1:
daemon:x:2:
sys:x:3:
adm:x:4:
tty:x:5:
disk:x:6:
lp:x:7:
mem:x:8:
kmem:x:9:

/etc/group 用來記載群組與帳號的關係,一樣使用 : 作為區格,共有 4 個欄位如下所述:

# 說明
1 群組名稱
2 群組密碼,現已不用
3 群組 ID,(Group ID, GID)
4 群組成員,每一個成員使用 , 相隔

/etc/group 檔案中的第 3 個欄位號碼,對應到 /etc/passwd 中的第 4 個欄位號碼,透過這兩個檔案就可以知道帳的主要群組名稱是什麼。

其它參考檔案

在 Enterprise Linux 中開立帳號時,相關指定會參照帳號組態檔案進行相關的設定,如下:

  • /etc/login.defs
參數 用途
MAIL_DIR 帳號建立時,該帳號的 mail 檔案存放位置
PASS_MAX_DAYS 密碼有效期限最大值
PASS_MIN_DAYS 密碼有效期限最小值
PASS_WARN_AGE 密碼到期前幾天發出警示
UID_MIN 建立一般帳號時,可使用的最小 User ID(UID)
UID_MAX 建立一般帳號時,可使用的最大 User ID(UID)
GID_MIN 建立一般群組時,可使用的最小 Group ID(GID)
GID_MAX 建立一般群組時,可使用的最大 Group ID(GID)
ENCRYPT_METHOD 密碼加密方式
  • /etc/skel/

    帳號開啟時,會為該帳號建立家目錄(Home Directory),該家目錄中預設要放置的檔案就是在 /etc/skel/,這個目錄中可以放置預先指定好的使用者相關組態設定(使用者環境變數)或是檔案(如公用使用條款)。


上一篇
Day 6: vi/vim 文字編輯器
下一篇
Day 8: 帳號與群組管理
系列文
Linux 升華:初學者的探索到專家的洞察30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言