Vou tentar ajuda:
1) Se a configuração que deve ser mantida é padrão e não vai ser alterada, não deve ser colocada no script, crie uma copia de um ~ do "aluno_default" e mantenha ela em alguns lugares. Evita um processo desnecessário (salvar as configurações locais antes de serem alteradas, mandar pra algum lugar e baixar elas de novo). E se as maquinas possuem as mesmas configurações, é interessante criar um cd de instalação customizado e um clone do HD.
2) Para remover as alterações, existem, N maneiras, vou tentar mostra algumas.
-Colocar o um script para ser executado "em tempo de boot", olhe: upstart, init, bootup-manager ou /etc/gdm/PostSession/Default
-Criar um applet para o gnome panel, ele passaria a gerenciar as ações de desligamento e reinicio do sistema, e você poderia executar qualquer coisa antes.
3) Não entendi, você deseja salvar o que o aluno fez? Ou voltar para um configuração padrão? De novo, reitero minha opinião, que se o backup é da configuração padrão, o melhor é que o script não fique fazendo cópias desnecessárias.
Algumas considerações e aplicativos passíveis de uso:
Considerações
-O usuário pode finalizar a maquina de forma incorreta;
-Salvar as alterações dos usuários, mesmo que somente em um arquivo oculto na maquina local, pode te poupar muita dor de cabeça;
-Não ficou claro para mim, como vai estar configurado o acesso, mas nunca é bom que a mesma maquina seja usada por diferentes pessoas usando o mesmo login e senha;
Programas
rsync - backup local e/ou remoto (ssh) com as possíveis flags: -a,-c, -q, -r, --delete e --exclude-from (talvez --link-dest);
cp - cópia, com as possíveis flags: -a e -l;
cron - para agendar tarefas;
Outros como mkdir, rm, mv e etc;