Tại HowtoForge, chúng tôi đã thảo luận về lệnh passwd, cho phép bạn thay đổi mật khẩu tài khoản trên hệ thống Linux. Nhưng nếu bạn muốn thay đổi mật khẩu của nhiều người dùng cùng một lúc thì sao? Vâng, có một lệnh - chpasswd - cho phép bạn thực hiện việc này.
Trong hướng dẫn này, chúng tôi sẽ thảo luận về những điều cơ bản của công cụ này bằng một số ví dụ dễ hiểu. Nhưng trước khi thực hiện, chúng ta cần lưu ý rằng tất cả các ví dụ ở đây đều đã được thử nghiệm trên máy Ubuntu 18.04 LTS.
Và đây là những gì trang hướng dẫn của công cụ nói về nó:
Sau đây là một số ví dụ theo kiểu Hỏi & Đáp sẽ cung cấp cho bạn ý tưởng hay về cách chpasswd hoạt động.
assword'.
Ví dụ, tôi đã thực thi lệnh:
và cung cấp thông tin đầu vào sau:
Lưu ý 1: Vì chpasswd mong đợi bạn nhập thông tin đầu vào trên stdin, đừng quên nhấn Ctrl+D sau khi bạn nhập xong tên người dùng và mật khẩu mới.
Lưu ý 2: Mật khẩu được sử dụng trong ví dụ ở đây chỉ nhằm mục đích demo, đừng sử dụng chúng theo bất kỳ cách nào.
Ví dụ:
Lưu ý rằng định dạng đầu vào vẫn giữ nguyên: 'username
assword', chỉ là bây giờ nó được viết trong tệp.
Ví dụ:
Trong hướng dẫn này, chúng tôi sẽ thảo luận về những điều cơ bản của công cụ này bằng một số ví dụ dễ hiểu. Nhưng trước khi thực hiện, chúng ta cần lưu ý rằng tất cả các ví dụ ở đây đều đã được thử nghiệm trên máy Ubuntu 18.04 LTS.
Lệnh chpasswd trên Linux
Lệnh chpasswd trên Linux cho phép bạn cập nhật mật khẩu ở chế độ hàng loạt. Sau đây là cú pháp của nó:
Mã:
chpasswd [options]
Mã:
Lệnh chpasswd đọc danh sách các cặp tên người dùng và mật khẩu từ đầu vào chuẩn
và sử dụng thông tin này để cập nhật một nhóm
người dùng hiện có. Mỗi dòng có định dạng:
user_name:password
Theo mặc định, mật khẩu phải được cung cấp ở dạng văn bản thuần túy và được
mã hóa bởi chpasswd. Ngoài ra, tuổi của mật khẩu sẽ được cập nhật, nếu
có.
Câu hỏi 1. Làm thế nào để sử dụng lệnh chpasswd?
Cách sử dụng cơ bản, như đã giải thích trong phần giới thiệu ở trên, khá đơn giản. Chỉ cần chạy lệnh chpasswd (với quyền root) mà không có bất kỳ tùy chọn nào và nhập mật khẩu mới theo định dạng 'usernameVí dụ, tôi đã thực thi lệnh:
Mã:
$ chpasswd
Mã:
himanshu:thisismynewpassword789
Mã:
test:latestpassword123
Lưu ý 2: Mật khẩu được sử dụng trong ví dụ ở đây chỉ nhằm mục đích demo, đừng sử dụng chúng theo bất kỳ cách nào.
Câu hỏi 2. Làm thế nào để chpasswd đọc thông tin từ tệp?
Đôi khi, bạn có thể muốn công cụ đọc thông tin đầu vào từ tệp (thay vì stdin). Điều này có thể được thực hiện theo cách sau:
Mã:
cat [FILENAME] | chpasswd
Mã:
cat newpass.txt | chpasswd
Câu hỏi 3. chpasswd xử lý mã hóa như thế nào?
Đây là cách trang hướng dẫn của công cụ giải thích điều này:
Mã:
Theo mặc định, mật khẩu được mã hóa bằng PAM, nhưng (ngay cả khi không được
khuyến nghị) bạn có thể chọn phương pháp mã hóa khác với các tùy chọn -e,
-m hoặc -c.
Ngoại trừ khi PAM được sử dụng để mã hóa mật khẩu, trước tiên chpasswd sẽ cập nhật
tất cả mật khẩu trong bộ nhớ, sau đó cam kết tất cả các thay đổi vào đĩa
nếu không xảy ra lỗi cho bất kỳ người dùng nào.
Khi PAM được sử dụng để mã hóa mật khẩu (và cập nhật mật khẩu trong
cơ sở dữ liệu hệ thống), thì nếu mật khẩu không thể được cập nhật, chpasswd
sẽ tiếp tục cập nhật mật khẩu của những người dùng tiếp theo và sẽ trả về
mã lỗi khi thoát.
Lệnh này được thiết kế để sử dụng trong môi trường hệ thống lớn, nơi
nhiều tài khoản được tạo cùng một lúc.
Câu hỏi 4. Làm thế nào để bật một phương pháp mã hóa khác?
Bạn có thể thực hiện việc này bằng tùy chọn dòng lệnh -c. Theo mặc định, như bạn có thể đã biết, PAM được sử dụng làm phương pháp mã hóa, nhưng khi sử dụng -c, bạn có thể chỉ định bất kỳ phương pháp nào sau đây: DES, MD5, NONE và SHA256 hoặc SHA512 (với điều kiện libc của bạn hỗ trợ phương pháp bạn chọn).Ví dụ:
Mã:
chpasswd -c DES
Câu hỏi 5. Làm thế nào để cho chpasswd biết về dữ liệu đầu vào được mã hóa?
Nếu muốn, bạn cũng có thể cung cấp mật khẩu được mã hóa trong dữ liệu đầu vào. Nhưng để làm được điều đó, bạn cần sử dụng tùy chọn -e để chpasswd biết về điều này.
Mã:
chpasswd -e