Thay đổi mật khẩu theo chương trình


11

Trong phiên bản hiện tại của Raspian, tôi biết có thể thay đổi mật khẩu của người dùng đã đăng nhập hiện tại từ dòng lệnh như vậy:

sudo passwd

sau đó sẽ nhắc người dùng nhập mật khẩu mới hai lần. Điều này sẽ tạo ra đầu ra như vậy:

Changing password for pi.
(current) UNIX password:
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully

Tôi đã tự hỏi nếu có một cách có thể để thay đổi mật khẩu theo chương trình, như từ một kịch bản shell.

Tôi đang cố gắng tạo một tập lệnh cấu hình để triển khai trên Raspberry Pis của mình và tôi không muốn tự nhập mật khẩu mới cho chúng.


1
Để thay đổi mật khẩu của người dùng hiện tại, bạn không cần phải thêm tiền tố vào sudo. Nếu bạn sử dụng sudothì bạn có thể buộc mật khẩu mới cho bất kỳ người dùng nào mà không cần biết mật khẩu hiện tại của người dùng đó.
roaima

expect(1)cũng có thể giúp đỡ
Thủy thủ

Hãy chắc chắn xem xét các tác động bảo mật khi thay đổi mật khẩu theo chương trình.
Josh Habdas

Câu trả lời:


18

Bạn đang tìm kiếm chpasswdlệnh. Bạn sẽ làm một cái gì đó như thế này:

echo 'pi:newpassword' | chpasswd # change user pi password to newpassword

Lưu ý rằng nó cần được chạy dưới quyền root, ít nhất là với cấu hình PAM mặc định. Nhưng có lẽ chạy như root không phải là vấn đề đối với tập lệnh triển khai hệ thống.

Ngoài ra, bạn có thể thực hiện nhiều người dùng cùng một lúc bằng cách cung cấp cho nó nhiều dòng đầu vào.


9

Một cách khác là sử dụng yeslệnh trong tập lệnh của bạn.

yes newpassword | passwd youruser

Điều này sẽ gửi newpasswordđến passwdlệnh cho youruser.

Cần đề cập rằng việc thiết lập / sửa đổi mật khẩu người dùng thông qua các tập lệnh có thể gây ra rủi ro bảo mật và nên tránh bất cứ khi nào có thể.

BIÊN TẬP:

Câu trả lời này yêu cầu quyền truy cập root. Xin lỗi vì đã không đề cập đến điều này trước đây. Đó là một phương pháp mà tôi sử dụng khi thực hiện các tác vụ quản trị yêu cầu quyền truy cập root.


Bạn đã thử điều này?
roaima

Đúng. Tôi đã sử dụng phương pháp này trong nhiều năm. Tôi đã kiểm tra nó trước khi đăng câu trả lời của tôi và một lần nữa ngay bây giờ.
Timothy Martin

Ngay cả khi giả sử rằng passwdđọc từ stdinchứ không phải là một thiết bị đầu cuối (bàn phím), làm thế nào điều này có thể hoạt động khi passwdlần đầu tiên nhắc mật khẩu cũ của người dùng và sau đó nhắc về cái mới?
roaima

@roaima có thể Timothy chạy nó như root (điều này sẽ giải thích tại sao yourusercuối cùng anh ta cần ). Nó có thể hoạt động ở đâu đó ...
derobert

1
@roaima passwdLệnh từ các tiện ích bóng của Linux chấp nhận đầu vào được chuyển hướng (không giống như OpenSSH ssh). Sử dụng yeskhông phải là một ý tưởng tốt mặc dù: nó tiết lộ mật khẩu cho những kẻ rình mò nhìn vào danh sách quy trình không đúng lúc. Sử dụng echosẽ không có khuyết điểm này bởi vì nó là một vỏ dựng sẵn.
Gilles 'SO- ngừng trở nên xấu xa'
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.