Bạn đã bao giờ rơi vào tình huống phải xử lý nhanh một yêu cầu thay đổi mật khẩu cho người dùng mới trên hệ thống VPS ngay giữa đêm khuya chưa nhỉ? Là một Senior System Admin, mình hiểu rằng việc kiểm soát quyền truy cập chính là chìa khóa để giữ cho hệ thống luôn an toàn, đúng không? Vậy thực chất passwd là gì và làm sao để chúng ta làm chủ nó một cách chuyên nghiệp nhất? Trong bài viết này, mình sẽ đồng hành cùng bạn để tìm hiểu chi tiết về passwd Linux, giúp bạn nắm vững cách dùng passwd một cách hiệu quả. Chúng ta sẽ cùng nhau khám phá cách thay đổi mật khẩu người dùng và cách thiết lập các chính sách bảo mật nghiêm ngặt để bảo vệ máy chủ của mình. Chắc chắn rằng những kiến thức dưới đây sẽ vô cùng hữu ích cho công việc quản trị hàng ngày của bạn đấy!
Cần chuẩn bị gì trước khi dùng lệnh passwd?
- id="user-privileges">Quyền người dùng: Yêu cầu quyền quản trị (root) hoặc quyền sudo để thay đổi mật khẩu của người dùng khác. Khi thay đổi mật khẩu cá nhân, người dùng thường có thể thực hiện mà không cần quyền đặc biệt.
- Hệ điều hành hỗ trợ: Hầu hết các bản phân phối Linux như Ubuntu, Debian, CentOS, RHEL, Fedora và các hệ điều hành dựa trên Unix như macOS.
- Gói phần mềm: Lệnh passwd thường được cài đặt sẵn trong gói shadow hoặc thuộc bộ công cụ util-linux. Nếu chưa có, có thể cài đặt qua các lệnh sau:
Cú pháp lệnh passwd là gì?
Lệnh passwd hỗ trợ 2 dạng cú pháp chính trên các hệ điều hành Linux/Unix: dành cho quản trị viên và dành cho người dùng thông thường.
passwd [OPTIONS] USERNAME passwd
Các tùy chọn của lệnh passwd là gì?
Lệnh passwd cung cấp các tùy chọn thuộc hai nhóm chính: quản lý trạng thái mật khẩu và kiểm soát chính sách hết hạn mật khẩu cho tài khoản người dùng.
| Tùy chọn ngắn | Tùy chọn dài | Mô tả |
|---|---|---|
| -a | --all | passwd -a hiển thị thông tin trạng thái của tất cả tài khoản, chỉ dùng kết hợp với tùy chọn -S. |
| -d | --delete | passwd -d xóa mật khẩu của tài khoản, cho phép người dùng đăng nhập mà không cần mật khẩu. |
| -e | --expire | passwd -e đặt mật khẩu của tài khoản về trạng thái hết hạn ngay lập tức, buộc người dùng đổi mật khẩu ở lần đăng nhập tiếp theo. |
| -h | --help | passwd -h hiển thị thông tin trợ giúp về cách sử dụng lệnh và thoát. |
| -i | --inactive INACTIVE | passwd -i thiết lập số ngày tài khoản bị vô hiệu hóa sau khi mật khẩu hết hạn mà chưa được thay đổi. |
| -k | --keep-tokens | passwd -k chỉ thực hiện đổi mật khẩu khi mật khẩu hiện tại đã hết hạn, giữ nguyên các token xác thực còn hiệu lực. |
| -l | --lock | passwd -l khóa mật khẩu của tài khoản bằng cách thêm ký tự "!" vào đầu chuỗi mật khẩu đã mã hóa trong file shadow. |
| -n | --mindays MIN_DAYS | passwd -n thiết lập số ngày tối thiểu phải chờ giữa hai lần đổi mật khẩu. Giá trị 0 cho phép đổi mật khẩu bất kỳ lúc nào. |
| -q | --quiet | passwd -q chạy ở chế độ im lặng, không hiển thị thông báo trong quá trình thay đổi mật khẩu. |
| -r | --repository REPOSITORY | passwd -r thay đổi mật khẩu trong kho lưu trữ được chỉ định, ví dụ như NIS hoặc LDAP. |
| -R | --root CHROOT_DIR | passwd -R áp dụng thay đổi trong thư mục chroot được chỉ định, sử dụng các file cấu hình bên trong thư mục đó. |
| -S | --status | passwd -S hiển thị thông tin trạng thái mật khẩu của tài khoản, bao gồm trạng thái khóa, ngày thay đổi và chính sách hết hạn. |
| -u | --unlock | passwd -u mở khóa mật khẩu của tài khoản bằng cách xóa ký tự "!" khỏi đầu chuỗi mật khẩu đã mã hóa. |
| -w | --warndays WARN_DAYS | passwd -w thiết lập số ngày cảnh báo trước khi mật khẩu hết hạn, người dùng sẽ nhận thông báo trong khoảng thời gian này. |
| -x | --maxdays MAX_DAYS | passwd -x thiết lập số ngày tối đa mật khẩu có hiệu lực trước khi bắt buộc phải thay đổi. Giá trị -1 vô hiệu hóa giới hạn này. |
xem thêm: User and Permission Management
Cách sử dụng lệnh passwd trong các tình huống thực tế là gì?
Dưới đây là các kịch bản quản trị mật khẩu phổ biến mà quản trị viên hệ thống thường gặp khi vận hành server.
passwd là gì? [Thay đổi mật khẩu người dùng hiện tại]
$ passwd Changing password for user admin. Current password: New password: Retype new password: passwd: password updated successfully
Lệnh này yêu cầu xác thực mật khẩu cũ trước khi thiết lập mật khẩu mới. Trong thực tế, người dùng thường sử dụng lệnh này để tự cập nhật bảo mật định kỳ.
passwd [username] là gì? [Thiết lập mật khẩu cho người dùng khác]
$ sudo passwd developer New password: Retype new password: passwd: password updated successfully
Sử dụng quyền root để thay đổi mật khẩu của một tài khoản cụ thể mà không cần biết mật khẩu cũ. Trên môi trường production, sysadmin sử dụng cách này khi nhân viên mới được cấp tài khoản hoặc khi tài khoản cũ bị quên mật khẩu.
passwd -l [username] là gì? [Khóa tài khoản người dùng]
$ sudo passwd -l john_doe passwd: password locked for john_doe
Tham số -l (lock) sẽ vô hiệu hóa mật khẩu của người dùng, ngăn chặn mọi nỗ lực đăng nhập bằng mật khẩu. Trong thực tế, đây là thao tác khẩn cấp để đình chỉ quyền truy cập của một tài khoản khi phát hiện dấu hiệu xâm nhập hoặc khi nhân sự nghỉ việc.
passwd -e [username] là gì? [Buộc người dùng đổi mật khẩu ngay]
$ sudo passwd -e tech_user passwd: password expires for tech_user
Tham số -e (expire) sẽ làm hết hạn mật khẩu hiện tại ngay lập tức. Trong thực tế, lệnh này được dùng khi quản trị viên muốn buộc người dùng phải thiết lập mật khẩu mới trong lần đăng nhập kế tiếp để đảm bảo tính bảo mật.
passwd -S [username] là gì? [Kiểm tra trạng thái mật khẩu]
$ passwd -S admin admin P 05/20/2023 0 90 7
Lệnh hiển thị trạng thái mật khẩu (P: mật khẩu đã đặt, L: bị khóa, NP: không có mật khẩu) và các thông số về ngày hết hạn. Trong các kịch bản automation, kết quả này giúp script kiểm tra nhanh tình trạng bảo mật của hàng loạt tài khoản trên hệ thống.
Tại sao không thể thay đổi mật khẩu bằng lệnh passwd?
Trong quá trình quản trị hệ thống, người dùng thường gặp phải các lỗi về quyền hạn hoặc trạng thái tài khoản khi thực thi lệnh passwd.
Lỗi thiếu quyền quản trị (root) khi thay đổi mật khẩu người dùng khác
$ passwd user1 passwd: Authentication token manipulation error
Lỗi xảy ra khi người dùng thường cố gắng thay đổi mật khẩu cho một tài khoản khác mà không có quyền sudo.
Lỗi mật khẩu không đủ độ phức tạp theo chính sách hệ thống
$ passwd Enter new UNIX password: Retype new UNIX password: BAD PASSWORD: The password is too short
Hệ thống từ chối mật khẩu mới do không đáp ứng được các tiêu chuẩn về độ dài hoặc độ phức tạp được cấu hình trong PAM (Pluggable Authentication Modules).
Lỗi tài khoản đang bị khóa hoặc hết hạn
$ passwd username passwd: password expired
Lệnh không thể thực hiện thay đổi mật khẩu thông thường khi tài khoản đã rơi vào trạng thái hết hạn theo chính sách bảo mật.
Lỗi file hệ thống chỉ đọc (Read-only file system)
$ sudo passwd root passwd: Authentication token manipulation error
Lỗi này xuất hiện khi phân vùng chứa file /etc/shadow bị mount ở chế độ chỉ đọc, ngăn cản việc ghi đè mật khẩu mới vào hệ thống.
Quy trình thực tế quản lý mật khẩu người dùng trong hệ thống Linux?
Trong quá trình thiết lập và quản lý server, lệnh passwd thường được sử dụng như một phần của quy trình bảo mật tài khoản và phân quyền cho nhân viên mới.
Bước 1: Tạo người dùng mới cho dự án
sudo useradd -m developer_a
Lệnh này cho phép tạo một tài khoản người dùng mới có tên là developer_a kèm theo thư mục home tương ứng.
Bước 2: Thiết lập mật khẩu khởi tạo
sudo passwd developer_a Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully
Sử dụng passwd để đặt mật khẩu lần đầu cho tài khoản vừa tạo, giúp người dùng có thể đăng nhập vào hệ thống.
sudo chage -l developer_a
Last password change : Oct 24, 2023
Password expires : never
Password inactive : never
Account expires : never
Minimum number of days between password change : 0
Maximum number of days between password change : 99999
Password warning period : 7
Sau khi cấu hình, quản trị viên dùng lệnh chage để kiểm tra các thông tin liên quan đến thời hạn sử dụng mật khẩu của người dùng đó.
Việc sử dụng lệnh passwd trên VPS yêu cầu sự chính xác về quyền hạn và ngữ cảnh thực thi. Trong các trường hợp quản trị hệ thống, người dùng thường gặp lỗi Permission denied khi thực hiện thay đổi mật khẩu của tài khoản root hoặc các user khác mà không có quyền sudo. Việc thiếu tiền tố sudo trong câu lệnh sudo passwd [username] dẫn đến thất bại trong việc cập nhật thông tin vào tệp /etc/shadow. Đối với quản trị viên VPS mới chuyển từ môi trường Control Panel như cPanel sang dòng lệnh, việc không nhận diện được sự khác biệt giữa mật khẩu SSH và mật khẩu hệ thống gây khó khăn khi truy cập. Khi thực hiện thay đổi mật khẩu qua script hoặc cron job trên VPS, cần đảm bảo các tham số đầu vào được xử lý an toàn để tránh lộ thông tin nhạy cảm trong lịch sử lệnh.
Những câu hỏi thường gặp về lệnh passwd?
Dưới đây là các tình huống phổ biến mà người dùng thường gặp phải khi quản lý mật khẩu người dùng trong hệ điều hành Linux.
Làm thế nào để thay đổi mật khẩu cho người dùng hiện tại?
Bạn chỉ cần chạy lệnh mà không cần tham số bổ sung, hệ thống sẽ yêu cầu nhập mật khẩu hiện tại trước khi thiết lập mật khẩu mới.
passwd (current) UNIX password: New password: Retype new password: passwd: password updated successfully
Làm thế nào để thay đổi mật khẩu cho một người dùng khác?
Bạn cần sử dụng quyền quản trị (root) hoặc sudo để thay đổi mật khẩu của một tài khoản không phải tài khoản của mình.
sudo passwd username New password: Retype new password: passwd: password updated successfully
Làm thế nào để buộc người dùng phải đổi mật khẩu ở lần đăng nhập kế tiếp?
Sử dụng tùy chọn -e (expire) để làm hết hạn mật khẩu hiện tại của người dùng, buộc họ phải tạo mật khẩu mới ngay khi đăng nhập.
sudo passwd -e username passwd: password changed for username
Làm thế nào để khóa tài khoản người dùng?
Sử dụng tùy chọn -l (lock) để vô hiệu hóa mật khẩu của người dùng, ngăn chặn việc đăng nhập bằng mật khẩu.
sudo passwd -l username passwd: password locked for username
Làm thế nào để mở khóa tài khoản người dùng?
Sử dụng tùy chọn -u (unlock) để khôi phục khả năng đăng nhập bằng mật khẩu cho tài khoản đã bị khóa trước đó.
sudo passwd -u username passwd: password unlocked for username
Làm thế nào để xóa mật khẩu của một người dùng?
Sử dụng tùy chọn -d (delete) để xóa mật khẩu, cho phép người dùng đăng nhập mà không cần mật khẩu.
sudo passwd -d username passwd: password removed for username
Làm thế nào để kiểm tra thông tin về mật khẩu của người dùng?
Sử dụng tùy chọn -S (status) để xem trạng thái mật khẩu, bao gồm loại mật khẩu và thời điểm thay đổi gần nhất.
sudo passwd -S username username L Password Max: 99999 Min: 0 Warn: 7 Def: 7
Lệnh passwd là một công cụ thiết yếu giúp bạn quản lý và thay đổi mật khẩu của người dùng trên hệ thống Linux một cách an toàn. Bạn có thể dễ dàng cập nhật mật khẩu cá nhân hoặc sử dụng tham số -l để khóa tài khoản khi cần thiết để tăng cường bảo mật, đúng không nhỉ? Bên cạnh đó, việc kết hợp với tham số -e để buộc người dùng phải thay đổi mật khẩu ngay lần đăng nhập kế tiếp cũng vô cùng hữu ích trong quản trị hệ thống. Hy vọng những kiến thức này sẽ giúp bạn làm chủ hệ thống tốt hơn. Chúc bạn thành công!