Cách định cấu hình linux để bắt buộc người dùng mới thay đổi mật khẩu của họ trong lần đăng nhập đầu tiên


11

Tôi đang cố gắng định cấu hình chính sách mật khẩu người dùng trên RHEL 6.6 và tôi muốn hệ thống yêu cầu người dùng mới tạo thay đổi mật khẩu ban đầu trong lần đăng nhập đầu tiên.

Lưu ý, tôi đã cố gắng đặt biến EXPIRE thành 0 và INACTIVE thành -1 in / etc / default / useradd, nhưng nó dẫn đến hết hạn tài khoản người dùng mới sau khi tạo. Đầu ra của lệnh chage sau khi người dùng tạo với các biến này là:

 # chage -l foo
 Last password change                                : Feb 22, 2015
 Password expires                                    : May 23, 2015
 Password inactive                                   : never
 Account expires                                     : Feb 22, 2015
 Minimum number of days between password change      : 1
 Maximum number of days between password change      : 90
 Number of days of warning before password expires   : 7

Khi tôi cố gắng đăng nhập dưới foo user, thông báo "Tài khoản của bạn đã hết hạn. Vui lòng liên hệ với quản trị viên hệ thống của bạn" được hiển thị.

Nhưng nếu tôi mở cửa sổ 'Thuộc tính người dùng', chọn tab 'Thông tin mật khẩu' và kiểm tra 'Buộc thay đổi mật khẩu trong lần đăng nhập tiếp theo', kết quả sẽ là điều tôi mong đợi. Người dùng mới sẽ được yêu cầu thay đổi mật khẩu. Đầu ra của lệnh chage trong trường hợp này sẽ là:

 # chage -l foo2
 Last password change                                : password must be changed
 Password expires                                    : password must be changed
 Password inactive                                   : password must be changed
 Account expires                                     : never
 Minimum number of days between password change      : 1
 Maximum number of days between password change      : 90
 Number of days of warning before password expires   : 7

Khi tôi đăng nhập dưới người dùng foo2, hệ thống sẽ yêu cầu tôi thay đổi mật khẩu.

Vì vậy, có cách nào để cấu hình hệ thống để đặt tham số tài khoản người dùng khi tạo như trong trường hợp thứ hai không?

Cập nhật

 cat /etc/default/useradd
 # useradd defaults file
 GROUP=100
 HOME=/home
 INACTIVE=-1
 EXPIRE=0
 SHELL=/bin/bash
 SKEL=/etc/skel
 CREATE_MAIL_SPOOL=yes

Ngay cả khi tôi nhận xét INACTIVE hoặc đặt nó thành giá trị dương, tài khoản đã hết hạn, nhưng không phải là mật khẩu.

Ngoài ra, tôi cấu hình PAM trên máy.

Cập nhật 2

Tôi đã kiểm tra điều này trên máy với RHEL 6.2 và không có cấu hình PAM. Hiệu quả là như nhau.


Bạn nên thử sử dụng chage -d 0 {user-name}.
Hastur 22/2/2015

Có cách nào để làm điều đó tự động trong lệnh useradd, không phải với các lệnh hoặc hành động bổ sung không?
Mike_Lychkov

1
EXPIRE=0trong /etc/default/useraddnên làm công việc. Tôi đọc bạn đã cố gắng. Bạn có thể thêm các dòng /etc/default/useraddchưa hoàn thành? Nó bị khóa ngay cả khi bạn không chỉ định INACTIVE = -1, nhưng giá trị khác hoặc nếu bạn nhận xét dòng đó? Bạn có thể chỉ định nếu tài khoản bị khóa ngay cả khi được tạo bởi dòng lệnh. Và, xin vui lòng, khi bạn có một câu hỏi khác gửi nó trong một trang riêng nếu nó sẽ có câu trả lời khác nhau.
Hastur 22/2/2015

1
Sử dụng addusercho phép bạn đặt chagelệnh vào /usr/local/sbin/adduser.local. Bạn cũng có thể đặt trường tuổi trong / etc / bóng thành 0 trực tiếp. useraddlà "tiện ích cấp thấp", dự định sẽ được sử dụng cùng với các lệnh khác.
mpez0

Câu trả lời:


1

Vì bạn đang hỏi về RHEL6, tôi đã xem mã nguồn cho useradd (được phân phối như một phần của gói 'bóng'). Trong useradd.c là một hàm gọi là new_spent nơi nó thiết lập một mục nhập mật khẩu bóng mới. Ở đó, nó giải quyết vấn đề "mật khẩu hết hạn khi tạo" theo cách này:

if (0 == spent->sp_lstchg) {
/* Better disable aging than requiring a password change */
spent->sp_lstchg = -1;

Ôi trời ... Nếu bạn đặt số 0, nó biến nó thành -1.

Các tác giả của chương trình đã mã hóa cụ thể chống lại việc đặt lão hóa thành 0 nên sẽ không có vấn đề gì nếu bạn đặt nó thành 0 trong tham số / etc / default / useradd cho EXPIRE. (Nếu tôi đang thực hiện mã đó, tôi sẽ xem liệu người dùng có đặt mật khẩu trong lệnh và sau đó cho phép hết hạn hay không, nhưng đó không phải là tôi ...)

Ngoài ra, có ý kiến ​​ở trên là bạn có thể đặt tập lệnh vào /usr/local/sbin/adduser.local để thực hiện lệnh 'chage'. Đây là lời khuyên tốt cho hệ thống Debian / Ubuntu trong đó useradd là tập lệnh perl thực sự chạy tệp đó nếu nó tìm thấy nó, nhưng trên RHEL, lệnh useradd là nhị phân C.

Nếu tôi là bạn và tôi đã quyết tâm thực hiện hành vi đó trên người dùng RHEL6, tôi sẽ nhận được SRPM cho gói bóng, nhận xét những dòng trên và thực hiện một chương trình quay vòng trên gói và rockaway. Chiến thắng!


1

Tại sao không thêm điều này vào một kịch bản?

passwd -e username

Nếu tất cả những gì bạn theo sau là lần đăng nhập đầu tiên, nó sẽ hoạt động. Việc -ehết hạn mật khẩu tài khoản ngay lập tức, vậy lần đăng nhập tiếp theo người dùng có bị buộc phải cập nhật mật khẩu không? (xem man passwd)


Và nếu bạn đang tìm kiếm một giải pháp cụ thể cho cuộc trò chuyện, có thể thử công tắc "-M / - maxday" với giá trị '0'. Tôi không thực sự quen thuộc với trò chuyện, nhưng từ trang người đàn ông này có vẻ hợp lý.
tniles

-1

Tự động:

Cập nhật tệp này:

/etc/default/useradd

Tệp này chứa các chi tiết, tất cả các cài đặt sẽ được áp dụng cho người dùng mới được tạo vào hệ thống bằng lệnh useradd.

Chỉ cần đặt giá trị EXPIRE = 0 trong tệp này và sau đó, mỗi khi người dùng mới được tạo, họ sẽ buộc phải thay đổi mật khẩu ở lần đăng nhập tiếp theo.

Nguồn: GeekRide

Bây giờ, chỉnh sửa tập tin đó trong thiết bị đầu cuối là khó khăn. Vì vậy, tôi đã thay đổi quyền của tệp thành 777 bằng cách sử dụng:

chmod 777 /etc/default/useradd

và chỉnh sửa nó trong grub.

(Cảm ơn Lệnh Linux .)

Đã kiểm tra trong máy ảo Ubuntu 12.04.5 của tôi.

Hướng dẫn sử dụng:

Sử dụng cú pháp sau để buộc người dùng thay đổi mật khẩu của họ trong lần đăng nhập tiếp theo trên Linux:

# chage -d 0 {user-name}

Trong ví dụ này, buộc tom thay đổi mật khẩu của mình ở lần đăng nhập tiếp theo, nhập:

# chage -d 0 tom

-d 0: Đặt số ngày kể từ ngày 1 tháng 1 năm 1970 khi mật khẩu được thay đổi lần cuối. Ngày cũng có thể được thể hiện dưới định dạng YYYY-MM-DD. Bằng cách đặt nó về 0, bạn sẽ buộc người dùng thay đổi mật khẩu khi đăng nhập lần đầu.

Nguồn: nixCraft

Bản sao dán thuần túy. Nghĩa đen ;)
Đã kiểm tra trên Ubuntu 12.04.5 VM của tôi.


OP muốn điều này được thực hiện tự động trong lệnh useradd, nếu bạn đọc các bình luận ở trên.
Mất trí

Không bình luận bất cứ điều gì khác, nhưng chmod -R 777 /là một điều rất ngu ngốc để làm!
PulseJet

@PulseJet vâng tôi biết rằng khi nhìn lại và câu trả lời này là một thời gian dài trước đây rất hài lòng chỉ để cho nó được
Varad Mahashabde

@VaradMahashabde sau đó tôi sẽ đề nghị loại bỏ những thứ đó khỏi câu trả lời của bạn, vì ít nhất chúng nên lành mạnh cho người tiếp theo đọc chúng.
PulseJet
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.