일정 기간이 지나면 자동으로 만료되는 Linux 사용자를 만드는 방법

일정 기간이 지나면 자동으로 만료되는 Linux 사용자를 만드는 방법

저는 새로운 Linux 사용자 계정을 생성하고 몇 기간 후에 자동으로 만료시키는 PHP 애플리케이션을 만들었습니다.

Google에서 "기간 수정 후 Linux 사용자를 자동으로 제거하는 방법"을 검색한 후 이 답변을 찾았습니다.https://unix.stackexchange.com/a/80971/224583

하지만 새 계정을 만들고 10개월 또는 5개월 후에 만료되는 등 어떻게 만드는지 모르겠습니다.

내 질문은 월을 일로 변환하는 방법입니다. 예를 들어 5개월을 주고 5개월의 일 수를 변환합니다. 아니면 내 문제 외에 다른 해결책이 있습니까?

답변1

이 유틸리티의 만료 옵션을 사용 useradd하려면 날짜를 형식으로 지정해야 합니다 YYYY-MM-DD.

명령 -d의 옵션을 사용하여 이 날짜를 계산할 수 있습니다 date. 5개월 시나리오 예를 사용하면 다음과 같습니다.

$ date +"%Y-%m-%d"
2017-04-08
$ date -d "5 months" +"%Y-%m-%d"
2017-09-08

답변2

-e스위치에는 useradd국제 날짜 형식(IDD)의 날짜가 필요하며 YYYY-MM-DD해당 매뉴얼 페이지에서 얻을 수 있습니다.

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

지금 해야 할 일은 계정의 만료 날짜를 지정하는 것뿐입니다. PHP에서 이 계산을 수행할 수 있습니다. 귀하가 링크한 답변은 표준 명령줄 도구를 사용하여 이를 수행하므로 고급 언어를 사용할 필요가 없습니다.

다음은 PHP에서 이를 수행하는 방법에 대한 샘플 코드입니다.

$diffHour = 0;
$diffMinute = 0;
$diffSecond = 0;
$diffMonth = 10;
$diffDay = 0;
$diffYear = 0;

$hour = date("H") + $diffHour;
$minute = date("i") + $diffMinute;
$second = date("s") + $diffSecond;
$month = date("n") + $diffMonth;
$day = date("j") + $diffDay;
$year = date("Y") + $diffYear;

$time = mktime($hour, $minute, $second, $month, $day, $year);

$date = date("Y-m-d", $time);

상단 블록에 변수를 입력하기만 하면 됩니다. 10개월 예시를 작성했습니다. 시간을 되돌릴 수도 있습니다. 예를 들어, 7개월에서 4일을 뺀 후 만료되도록 하려면 $diffMonth = 7;및 를 설정할 수 있습니다 $diffDay = -4;.

그런 다음 2018-02-09날짜 값(오늘 실행하는 경우(미국에 거주하지 않는 한 시간대가 포함된 지연 시간 시스템을 계속 사용하고 있으므로 날짜가 하루 전이 됩니다))을 bash 스크립트에 전달합니다.

Bash 코드 예:

useradd -e "2018-02-09" "rizal"

관련 정보