Parece que um serviço ainda pode ser iniciado se uma conta de usuário expirada for usada. Por exemplo:
[vagrant@localhost ~]$ sudo usermod --lock --expiredate 1970-02-02 apache
[vagrant@localhost ~]$ sudo chage -l apache
Last password change : Nov 15, 2014
Password expires : never
Password inactive : never
Account expires : Feb 02, 1970
Minimum number of days between password change : -1
Maximum number of days between password change : -1
Number of days of warning before password expires : -1
[vagrant@localhost ~]$ sudo service httpd stop
Stopping httpd: [ OK ]
[vagrant@localhost ~]$ ps -ef | grep apache
vagrant 4444 2503 0 14:52 pts/0 00:00:00 grep apache
[vagrant@localhost ~]$ sudo service httpd start
Starting httpd: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain for ServerName
[ OK ]
[vagrant@localhost ~]$ ps -ef | grep apache
apache 4459 4457 0 14:52 ? 00:00:00 /usr/sbin/httpd
apache 4460 4457 0 14:52 ? 00:00:00 /usr/sbin/httpd
apache 4461 4457 0 14:52 ? 00:00:00 /usr/sbin/httpd
apache 4462 4457 0 14:52 ? 00:00:00 /usr/sbin/httpd
apache 4463 4457 0 14:52 ? 00:00:00 /usr/sbin/httpd
apache 4464 4457 0 14:52 ? 00:00:00 /usr/sbin/httpd
apache 4465 4457 0 14:52 ? 00:00:00 /usr/sbin/httpd
apache 4466 4457 0 14:52 ? 00:00:00 /usr/sbin/httpd
vagrant 4468 2503 0 14:52 pts/0 00:00:00 grep apache
Como isso foi testado apenas para um produto, ele não prova que isso seja aplicável a todos os produtos de software.
A solução mais segura é verificar se determinados usuários que vão expirar são usados pelos processos executando ps -ef | grep username
. Se um usuário não for usado por um processo, parece seguro definir uma data de expiração. Caso contrário, não defina uma data de expiração nem substitua o usuário. O último não deve ser necessário se os usuários nativos forem usados para executar processos. Por que alguém deve atribuir uma data de expiração para, por exemplo, apache
e decide executar httpd
por outro usuário além de apache
?