1.
Students are not allowed to use others account
Você teria dificuldade em forçar os alunos a não compartilharem credenciais de autenticação uns com os outros, a menos que você vá com algo como biometria. Mesmo tokens físicos podem ser passados de uma pessoa para outra. Infelizmente, você basicamente não pode garantir isso.
2.
I need to make sure all of them logged in
Você pode verificar se cada conta estava conectada usando algo como last -n1 | grep 'still logged in'
. A contabilidade do processo também pode ser uma abordagem viável, dependendo de quais são suas necessidades específicas.
3.
They need to get access to the shell only
Isso não seria particularmente útil, pois implica que eles não podem fazer algo tão trivial como obter uma listagem de diretórios ( /bin/ls
), um editor, escrever texto em um arquivo ( /bin/cat - > filename
), testar suas soluções em as atribuições de programação que você lhes dá (o que implica a execução de um interpretador, ou um compilador, linker e executável final).
E o seu ambiente exclui a possibilidade de apenas dar a cada aluno uma conta de usuário normal com acesso a ferramentas padrão? Se você não quiser uma GUI no sistema, pode optar por não instale o X ou forneça apenas acesso SSH não privilegiado com o encaminhamento X desativado. Mas se o seu objetivo é restringir, e. acesso à web, observe que há vários navegadores baseados em texto disponíveis e, se motivados o suficiente, é possível inicializar esse processo usando software relativamente trivial usando módulos prontamente disponíveis (e geralmente necessários).