Làm cách nào để tạo tài khoản người dùng hết hạn tự động?


20

Đây là những gì tôi muốn có thể làm:

Sau khi tài khoản người dùng được tạo, họ sẽ có thể ssh-tunnel, nhưng tài khoản của họ sẽ tự động bị xóa sau 30 ngày trừ khi người dùng root thiết lập lại bộ đếm ngược.

Làm thế nào tôi có thể tự động hóa điều này? Tôi sẽ phải xử lý khoảng 15 người dùng.

Câu trả lời:


29

người dùng

Bạn có thể kiểm soát thời gian tài khoản của người dùng có hiệu lực thông qua việc sử dụng --expiredatetùy chọn này useradd.

đoạn trích từ useraddtrang người đàn ông

-e, --expiredate EXPIRE_DATE
     The date on which the user account will be disabled. The date is
     specified in the format YYYY-MM-DD.

     If not specified, useradd will use the default expiry date specified
     by the EXPIRE variable in /etc/default/useradd, or an empty string 
     (no expiry) by default.

Vì vậy, khi thiết lập tài khoản người dùng, bạn có thể chỉ định ngày +30 ngày trong tương lai kể từ bây giờ và thêm điều đó vào useraddlệnh của bạn khi thiết lập tài khoản của họ.

$ useradd -e 2013-07-30 someuser

trò chuyện

Bạn cũng có thể thay đổi ngày tài khoản hiện tại bằng cách sử dụng chagelệnh. Để thay đổi ngày hết hạn tài khoản, bạn hãy làm như sau:

$ chage -E 2013-08-30 someuser

tính ngày +30 ngày kể từ bây giờ

Để làm điều này thực sự là khá nhỏ bằng cách sử dụng datelệnh. Ví dụ:

$ date -d "30 days"
Sun Jul 28 01:03:05 EDT 2013

Bạn có thể định dạng bằng cách sử dụng các +FORMATtùy chọn cho datelệnh, cuối cùng sẽ cung cấp cho bạn các tùy chọn sau:

$ date -d "30 days" +"%Y-%m-%d"
2013-05-28

Để tất cả chúng cùng nhau

Vì vậy, biết các phần trên, đây là một cách để đặt nó lại với nhau. Đầu tiên khi tạo tài khoản bạn sẽ chạy lệnh này:

$ useradd -e `date -d "30 days" +"%Y-%m-%d"` someuser

Sau đó, khi bạn muốn điều chỉnh ngày hết hạn, bạn định kỳ chạy lệnh này:

$ chage -E `date -d "30 days" +"%Y-%m-%d"` someuser

Chỉ định khoảng thời gian dưới 24 giờ

Nếu bạn muốn người dùng chỉ hoạt động trong vài phút, bạn không thể sử dụng các tùy chọn ở trên vì họ yêu cầu chỉ định ngày. Trong trường hợp đó, bạn có thể thiết lập crontabđể xóa / khóa người dùng đã tạo sau thời gian đã chỉ định (ví dụ: 10 phút) hoặc bạn có thể thực hiện một trong:

adduser someuser && sleep 600 && usermod --lock someuser

hoặc là

$ adduser someuser
$ echo usermod --lock someuser | at now + 10 minutes

Tài liệu tham khảo


3
Tôi đã lấy tự do để thay đổi% M (Phút) thành% m (tháng)
Anthon

5

Nếu bạn đang sử dụng Debian / Ubuntu, bạn nên sử dụng adduserusermod. Trên các hệ thống dựa trên Debian useraddđược coi là mức thấp và (theo các trang hướng dẫn):administrators should usually use adduser(8) instead

adduser không có tùy chọn hết hạn, vì vậy bạn chỉ cần sử dụng nó để tạo tài khoản.

usermodcó tùy chọn -e/ --expiredateđể đặt ngày hết hạn.

Bạn tính toán tham số datevới: date -d "30 days" "+%Y-%m-%d"để có được:

usermod --expiredate $(date -d "30 days" "+%Y-%m-%d") username

1

Một cách khác (nếu HĐH của bạn không hỗ trợ hết hạn tài khoản hoặc tính năng này không hoạt động vì bất kỳ lý do gì): thiết lập công việc định kỳ để chạy 30 ngày kể từ bây giờ sẽ khóa tài khoản này.

Thông thường tài khoản bị khóa bằng cách đặt mật khẩu được mã hóa thành giá trị không hợp lệ; trên FreeBSD, pw lock Xlệnh sẽ khóa tài khoản X.


1
Giải thích cách bạn có thể khóa tài khoản.
slm

Điều đó phụ thuộc vào hệ điều hành, thực sự.
sendmoreinfo

4
Nó vẫn sẽ hữu ích nếu bạn đưa ra một ví dụ cho thấy nó.
slm
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.