Como criar um usuário linux com o auto expirando após o período de correção

1

Eu criei um aplicativo PHP que pode criar uma nova conta de usuário linux com o auto expirado após vários periode.

Após pesquisar no Google sobre "Como automatizar a remoção do usuário do Linux após a correção do periode", encontrei esta resposta, link

Mas eu não sabia como fazer, por exemplo, criar nova conta e expirar após 10 meses ou 5 meses, etc.

Minha pergunta é, como converter mês a dia, exemplo eu dou 5 meses e converso contagem de dias de cinco meses. Ou alguma solução além da minha pergunta?

    
por Rizal Fakhri 09.04.2017 / 01:50

2 respostas

0

A opção expire no utilitário useradd requer uma data especificada no formato YYYY-MM-DD .

Você pode calcular essa data usando a opção -d para o comando date . Usando seu exemplo de cenário de cinco meses:

$ date +"%Y-%m-%d"
2017-04-08
$ date -d "5 months" +"%Y-%m-%d"
2017-09-08
    
por 09.04.2017 / 02:18
0

A opção -e de useradd espera uma data no formato de data internacional ( YYYY-MM-DD ) como pode ser obtida na página man:

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

Você agora simplesmente precisa declarar a data em que a conta deve expirar. Você pode fazer esse cálculo no PHP. A resposta a que você ligou faz isso usando uma ferramenta de linha de comando padrão para que nenhuma linguagem de alto nível tenha que ser usada.

Aqui está um código de exemplo de como fazer isso em 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);

Preencha as variáveis no bloco mais alto. Eu preenchi-os para o seu exemplo de 10 meses. Você pode voltar no tempo também. Por exemplo, se você quiser que ela expire em 7 meses menos 4 dias, você pode definir $diffMonth = 7; e $diffDay = -4; .

Em seguida, passe o valor de data ( 2018-02-09 quando executado hoje (exceto se você mora nos Estados Unidos, então é um dia antes porque ainda estamos usando um sistema de horário retardado com fusos horários)) para seu script bash. / p>

Exemplo de código bash:

useradd -e "2018-02-09" "rizal"
    
por 09.04.2017 / 02:11

Tags