Eu usaria o LDAP em vez de um banco de dados em combinação com um script de logout cronometrado por (d).
Alguns talvez trechos de código úteis:
Logout cronometrado:
at 13:37 -f logout.sh
at now + 1 hour -f logout.sh
Comando para forçar o logout:
kill -15 $(ps -U NameOfUserToLogout -o "pid=")