Lệnh chage trong Linux — Thay đổi thời hạn mật khẩu

Bạn đã bao giờ rơi vào tình huống một tài khoản quản trị trên VPS bỗng nhiên bị khóa chỉ vì quên mất ngày hết hạn mật khẩu chưa? Đây là một bài toán bảo mật cực kỳ phổ biến mà mình từng gặp phải khi quản lý hệ thống cho khách hàng, và lúc đó, việc nắm vững cách quản lý vòng đời mật khẩu là vô cùng quan trọng, đúng không?

Vậy chage là gì? Hiểu một cách đơn giản, chage là một công cụ mạnh mẽ giúp bạn quản lý thông tin hết hạn của mật khẩu người dùng trong môi trường Linux. Nếu bạn đang tìm kiếm cách dùng chage để thiết lập lịch trình thay đổi mật khẩu định kỳ hoặc cách chage thông tin tài khoản một cách an toàn, thì bạn đã tìm đúng nơi rồi đấy. Tất nhiên, việc làm chủ lệnh chage Linux sẽ giúp bạn kiểm soát chặt chẽ tính bảo mật cho mọi VPS mà bạn đang vận hành, giúp hệ thống luôn ở trạng thái an toàn nhất!

Cần chuẩn bị gì trước khi dùng lệnh chage?

  • Quyền người dùng: Yêu cầu quyền root hoặc sử dụng sudo để thực hiện các thay đổi đối với thông tin mật khẩu của người dùng.
  • Hệ điều hành hỗ trợ: Hoạt động trên hầu hết các bản phân phối Linux sử dụng gói shadow-utils (như Ubuntu, Debian, CentOS, RHEL, Fedora).
  • Package dependencies: Lệnh này thường được cài đặt sẵn cùng với gói shadow-utils. Nếu chưa có, có thể cài đặt bằng lệnh:

Cú pháp lệnh chage là gì?

Lệnh chage hỗ trợ một dạng cú pháp chính trên các hệ thống Linux/Unix để quản lý thời hạn hết hạn mật khẩu của người dùng.

chage [OPTIONS] USER

Các tùy chọn của lệnh chage là gì?

Lệnh chage cung cấp các tùy chọn được phân thành hai nhóm chức năng chính: xem thông tin hết hạn mật khẩu và thiết lập các giá trị hết hạn cho tài khoản người dùng.

Tùy chọn ngắn Tùy chọn dài Mô tả
-l --list chage -l hiển thị toàn bộ thông tin hết hạn mật khẩu hiện tại của tài khoản người dùng được chỉ định.
-d --lastday chage -d thiết lập ngày thay đổi mật khẩu lần cuối, nhận giá trị là ngày theo định dạng YYYY-MM-DD hoặc số ngày tính từ ngày 1 tháng 1 năm 1970.
-E --expiredate chage -E thiết lập ngày hết hạn tài khoản, sau ngày này tài khoản sẽ bị khóa hoàn toàn và không thể đăng nhập.
-I --inactive chage -I thiết lập số ngày không hoạt động sau khi mật khẩu hết hạn trước khi tài khoản bị khóa vĩnh viễn.
-m --mindays chage -m thiết lập số ngày tối thiểu giữa hai lần thay đổi mật khẩu, giá trị 0 cho phép thay đổi mật khẩu bất kỳ lúc nào.
-M --maxdays chage -M thiết lập số ngày tối đa mật khẩu có hiệu lực trước khi người dùng bắt buộc phải thay đổi mật khẩu.
-W --warndays chage -W thiết lập số ngày cảnh báo trước khi mật khẩu hết hạn, hệ thống sẽ thông báo cho người dùng trong khoảng thời gian này.
-i --iso8601 chage -i cho phép sử dụng định dạng ngày theo chuẩn ISO 8601 khi nhập giá trị ngày tháng cho các tùy chọn liên quan.
-R --root chage -R chỉ định thư mục root thay thế, cho phép thực hiện thao tác trên hệ thống tệp được mount tại đường dẫn CHROOT_DIR.

xem thêm: System Monitoring and Management

Sử dụng lệnh chage trong quản lý mật khẩu người dùng như thế nào?

Phần này trình bày các kịch bản quản lý vòng đời mật khẩu thường gặp trong quản trị hệ thống Linux.

chage là gì? [Xem thông tin hết hạn mật khẩu]

chage -l username
Last password change					: Oct 15, 2023
Password expires					: Jan 13, 2024
Password inactive					: never
Account expires						: never
Minimum number of days between password changes	: 0
Maximum number of days between password changes	: 90
Number of days of warning before password expires	: 7

Lệnh hiển thị chi tiết các thông số về thời hạn mật khẩu của người dùng. Trong thực tế, sysadmin sử dụng lệnh này để kiểm tra nhanh trạng thái an toàn của tài khoản trước khi thực hiện thay đổi.

chage -M là gì? [Thiết lập thời hạn tối đa của mật khẩu]

sudo chage -M 60 username
chage -l username
Maximum number of days between password changes	: 60

Tham số -M thiết lập số ngày tối đa mà mật khẩu có hiệu lực trước khi buộc người dùng phải thay đổi. Trên môi trường production, việc đặt giới hạn này giúp tuân thủ các tiêu chuẩn bảo mật về rotation mật khẩu định kỳ.

chage -E là gì? [Thiết lập ngày hết hạn tài khoản]

sudo chage -E 2024-12-31 username
chage -l username
Account expires						: Dec 31, 2024

Tham số -E cho phép chỉ định ngày chính xác mà tài khoản sẽ bị vô hiệu hóa hoàn toàn. Trường hợp này thường được áp dụng cho nhân viên hợp đồng thời vụ hoặc các tài khoản truy cập tạm thời vào hệ thống.

chage -d 0 là gì? [Buộc người dùng đổi mật khẩu ngay lập tức]

sudo chage -d 0 username
chage -l username
Last password change					: Oct 25, 2023
Password expires					: Oct 25, 2023

Lệnh đặt ngày thay đổi mật khẩu cuối cùng về 0, khiến mật khẩu cũ hết hạn ngay lập tức. Trong thực tế, quản trị viên sử dụng cách này khi cấp phát mật khẩu tạm thời cho người dùng mới để đảm bảo họ phải thiết lập mật khẩu riêng ngay lần đăng nhập đầu tiên.

chage kết hợp nhiều tham số là gì? [Thiết lập chính sách mật khẩu toàn diện]

sudo chage -m 7 -M 90 -W 14 -E 2025-01-01 username
chage -l username
Minimum number of days between password changes	: 7
Maximum number of days between password changes	: 90
Number of days of warning before password expires	: 14
Account expires						: Jan 01, 2025

Kết hợp nhiều tham số cho phép thiết lập đồng thời khoảng cách giữa các lần đổi mật khẩu, thời hạn tối đa, thời gian cảnh báo và ngày hết hạn tài khoản. Đây là phương pháp tối ưu để thực hiện automation script nhằm áp dụng chính sách bảo mật đồng nhất cho hàng loạt user trong hệ thống.

Lệnh chage gặp lỗi hoặc không thay đổi được mật khẩu như mong muốn?

Trong quá trình quản trị hệ thống, người dùng thường gặp phải các trở ngại về quyền hạn hoặc các ràng buộc về chính sách mật khẩu khi sử dụng lệnh chage.

Lỗi thiếu quyền quản trị (Permission denied)

chage -l root
chage: Permission denied

Lệnh chage yêu cầu quyền root để truy cập và thay đổi thông tin mật khẩu của người dùng trong hệ thống.

Lỗi mật khẩu đã hết hạn ngay lập tức do thiết lập sai số ngày

chage -M 0 username
chage: user 'username' has expired

Việc thiết lập số ngày tối đa của mật khẩu (Maximum number of days) bằng 0 sẽ khiến mật khẩu bị hết hạn ngay lập tức, buộc người dùng phải đổi mật khẩu mới khi đăng nhập.

Lỗi không thể đổi mật khẩu do tài khoản bị khóa

chage -E 0 username
chage: user 'username' is locked

Khi thiết lập ngày hết hạn tài khoản (Account expiration date) về giá trị 0 hoặc một ngày trong quá khứ, tài khoản sẽ bị khóa và lệnh chage không thể thực hiện các thao tác cập nhật thông thường cho tài khoản này.

Lỗi sai cú pháp khi sử dụng tham số thời gian

chage -M yesterday username
chage: invalid date

Tham số thời gian của chage yêu cầu định dạng cụ thể hoặc số ngày nguyên, việc sử dụng các từ khóa không hợp lệ sẽ khiến lệnh không thể thực thi.

Quy trình thực tế quản lý thời hạn mật khẩu người dùng bằng lệnh chage?

Trong kịch bản triển khai server quản trị hệ thống, lệnh chage được sử dụng như một phần của quy trình thiết lập chính sách bảo mật tài khoản cho nhân viên mới.

Bước 1: Kiểm tra thông tin hết hạn mật khẩu hiện tại

chage -l username
Maximum number of days between password change		: 90
Password expires					: Oct 25, 2024

Lệnh này cho phép bạn xem chi tiết trạng thái hiện tại của mật khẩu, bao gồm ngày hết hạn và số ngày tối đa giữa các lần thay đổi.

Bước 2: Thiết lập chính sách thay đổi mật khẩu định kỳ

sudo chage -M 60 username
Maximum number of days between password change		: 60

Sau khi kiểm tra, lệnh này được dùng để giới hạn người dùng bắt buộc phải thay đổi mật khẩu sau mỗi 60 ngày nhằm tăng cường bảo mật.

Bước 3: Cấu hình yêu cầu đổi mật khẩu ngay khi đăng nhập lần đầu

sudo chage -d 0 username
Last password change					: password must be changed

Trong các trường hợp cấp tài khoản mới, lệnh này buộc người dùng phải thiết lập mật khẩu cá nhân ngay trong lần đăng nhập đầu tiên để đảm bảo tính riêng tư.

Bước 4: Khóa tài khoản khi hết hạn chính sách bảo mật

sudo chage -E 2024-12-31 username
Account expires						: Dec 31, 2024

Lệnh này cho phép bạn thiết lập ngày hết hạn tài khoản cụ thể, giúp tự động vô hiệu hóa quyền truy cập của người dùng khi kết thúc hợp đồng hoặc dự án.

Việc quản lý mật khẩu người dùng trên VPS yêu cầu sự chính xác về định dạng thời gian. Khi sử dụng lệnh chage -M 90 username, hệ thống sẽ áp dụng chính sách bắt buộc đổi mật khẩu sau 90 ngày. Một lỗi phổ biến xảy ra khi quản trị viên thiết lập ngày hết hạn mật khẩu cũ hơn thời điểm hiện tại, dẫn đến tình trạng người dùng bị khóa tài khoản ngay lập tức khi đăng nhập vào VPS. Trong các trường hợp triển khai script tự động, việc thiếu quyền root khi thực hiện chage -l username sẽ khiến lệnh không thể truy xuất thông tin chi tiết của người dùng. Ngoài ra, sự khác biệt giữa định dạng thời gian của hệ thống và tham số đầu vào có thể gây ra lỗi không xác định. Quản trị viên cần kiểm tra kỹ kết quả từ lệnh chage -l để xác nhận trạng thái chính xác trước khi áp dụng các thay đổi lên môi trường VPS production.

Những câu hỏi thường gặp về lệnh chage?

Dưới đây là các thắc mắc phổ biến nhất mà người dùng thường gặp khi quản lý thời hạn hết hạn mật khẩu bằng lệnh chage.

Làm thế nào để kiểm tra thông tin hết hạn mật khẩu của một người dùng?

Sử dụng lệnh chage kết hợp với tùy chọn -l để xem chi tiết các thông số về mật khẩu của tài khoản.

chage -l username
Last password change					: Oct 25, 2023
Password expires					: Jan 23, 2024
Password inactive					: never
Account expires						: never
Minimum number of days between password change		: 0
Maximum number of days between password change		: 90
Number of days of warning before password expires	: 7

Làm thế nào để ép buộc người dùng phải đổi mật khẩu ngay trong lần đăng nhập tới?

Sử dụng tùy chọn -d với giá trị 0 để thiết lập ngày thay đổi mật khẩu cuối cùng về thời điểm gốc, buộc hệ thống yêu cầu đổi mật khẩu mới.

sudo chage -d 0 username

Làm thế nào để thiết lập ngày hết hạn cho một tài khoản người dùng?

Sử dụng tùy chọn -E để xác định ngày cụ thể mà tài khoản sẽ bị khóa hoàn toàn.

sudo chage -E 2025-12-31 username

Làm thế nào để thay đổi số ngày tối đa giữa các lần đổi mật khẩu?

Sử dụng tùy chọn -M để thiết lập số ngày tối đa mà một mật khẩu có hiệu lực trước khi người dùng phải đổi mật khẩu mới.

sudo chage -M 90 username

Làm thế nào để thiết lập khoảng thời gian cảnh báo trước khi mật khẩu hết hạn?

Sử dụng tùy chọn -W để cấu hình số ngày hệ thống sẽ gửi thông báo cảnh báo cho người dùng trước khi mật khẩu hết hạn.

sudo chage -W 14 username

Làm thế nào để đặt số ngày tối thiểu giữa hai lần đổi mật khẩu liên tiếp?

Sử dụng tùy chọn -m để ngăn người dùng đổi mật khẩu quá thường xuyên, tránh việc họ đổi qua lại giữa các mật khẩu cũ.

sudo chage -m 7 username

Lệnh chage là một công cụ mạnh mẽ giúp bạn quản lý chính sách hết hạn mật khẩu của người dùng trên hệ thống Linux một cách chuyên nghiệp. Việc kết hợp tham số -M để thiết lập thời gian mật khẩu tối đa và -I để đặt khoảng thời gian chờ sau khi hết hạn sẽ giúp bạn kiểm soát bảo mật tài khoản vô cùng hiệu quả, đúng không nhỉ? Tất nhiên, việc nắm vững các tùy chọn này sẽ giúp bạn xây dựng một môi trường hệ thống an toàn và chặt chẽ hơn rất nhiều. Hy vọng những chia sẻ này có thể hỗ trợ bạn tối ưu hóa công việc quản trị của mình. Chúc bạn thành công!