Linux

Linux 停用使用者帳號、設定使用期限教學與範例

介紹如何在 Linux 中停用使用者帳號、設定帳號使用期限,禁止特定使用者登入系統。

停用密碼

若要讓使用者不能以密碼登入,可以使用 usermod 搭配 -L 參數將指定使用者的密碼停用:

# 停用 myuser 的密碼
sudo usermod -L myuser

passwd-l 參數也可以用來停用使用者的密碼:

# 停用 myuser 的密碼
sudo passwd -l myuser

停用使用者密碼實際上只是在 /etc/shadow 的密碼之前加入一個驚嘆號 ! 而已,其效果只是讓使用者無法以密碼登入,但是並沒有完全停用帳號,使用者還是可以透過 SSH 金鑰認證等其他方式登入系統,若要完全停用帳號,應該改用設定帳號使用期限的方式。

停用指定帳號的密碼之後,可以使用 passwd 搭配 --status 檢查密碼的狀態:

# 檢查密碼狀態
sudo passwd --status myuser
myuser L 11/23/2020 0 99999 7 -1

當密碼被停用時,這裡的第二欄就會顯示 L(locked password)。

恢復密碼

密碼被停用之後,若要恢復成正常狀態,可以使用 usermod 搭配 -U 參數:

# 恢復 myuser 的密碼
sudo usermod -U myuser

或是以 passwd 搭配 -u 參數來解除密碼的鎖定:

# 恢復 myuser 的密碼
sudo passwd -u myuser

檢查密碼的狀態:

# 檢查密碼狀態
sudo passwd --status myuser
myuser P 11/23/2020 0 99999 7 -1

正常狀態之下,這裡的第二欄會顯示 P(usable password)。

設定帳號使用期限

Linux 帳號的使用期限可以使用 usermod 指令搭配 -e 參數來設定,例如設定 myuser 帳號的使用期限至 2022 年 11 月 23 日,也就是說該使用者只能使用帳號至 2022 年 11 月 22 日:

# 設定 myuser 帳號使用期限
sudo usermod -e 2022-11-23 myuser

若要立即停用指定的 Linux 帳號,可以將使用期限指定為今天的日期:

# 立即停用 myuser 帳號(將使用期限指定為今天)
sudo usermod -e `date +%Y-%m-%d` myuser

我們可以搭配 date 自動依據使用的時間算出帳號的過期日:

# 設定使用期限為 2 年
sudo usermod -e `date -d "2 year" +%Y-%m-%d` myuser

# 設定使用期限為 6 個月
sudo usermod -e `date -d "6 month" +%Y-%m-%d` myuser

# 設定使用期限為 90 天
sudo usermod -e `date -d "90 day" +%Y-%m-%d` myuser

解除帳號使用期限

若要解除帳號的使用期限,可以將使用期限設定為空的值:

# 解除帳號使用期限
usermod -e '' myuser

檢查帳號使用期限

Linux 使用者帳號的使用期限可以使用 chage 指令來查詢:

# 檢查帳號使用期限
sudo chage -l myuser
Last password change                                    : Nov 23, 2020
Password expires                                        : never
Password inactive                                       : never
Account expires                                         : Feb 21, 2021
Minimum number of days between password change          : 0
Maximum number of days between password change          : 99999
Number of days of warning before password expires       : 7

這裡的 Account expires 所顯示的日期就是帳號的過期日。

變更 Shell

透過變更使用者的登入 shell 可以讓使用者無法使用互動式的操作環境:

# 更改 myuser 帳號的 shell 為 /sbin/nologin
usermod -s /sbin/nologin myuser

這種方式只是不讓使用者以互動式的 shell 登入操作,但不是完全停用帳號。

參考資料:The Geek DiaryLinuxConfig.orgTecmintStackExchange

Share
Published by
Office Guide
Tags: 資訊安全

Recent Posts

Python 使用 PyAutoGUI 自動操作滑鼠與鍵盤

本篇介紹如何在 Python ...

1 年 ago

Ubuntu Linux 以 WireGuard 架設 VPN 伺服器教學與範例

本篇介紹如何在 Ubuntu ...

1 年 ago

Linux 網路設定 ip 指令用法教學與範例

本篇介紹如何在 Linux 系...

1 年 ago

Linux 以 Cryptsetup、LUKS 加密 USB 隨身碟教學與範例

介紹如何在 Linux 系統中...

1 年 ago