Tendo acabado de concluir um longo período como administrador de sistema acadêmico, sei muito bem como a permissão versátil do Windows pode ser feita corretamente . Mas primeiro, para responder a pergunta conforme solicitado.
O Windows realmente tem os recursos para registrar acessos aos arquivos. É extremamente spammy e requer análise automatizada de log para obter algo útil a partir deles. Há uma variedade de ferramentas para fazer isso. Splunk (eu tenho certeza que você viu os anúncios neste site sobre eles) é talvez o topo da linha. Na parte inferior da lista, há scripts que capturam o log de eventos de segurança do Windows em busca de eventos interessantes.
O PowerShell tem maneiras de consultar essas informações ( get-eventlog
). No Server 2008, você tem acesso a wevtutil
, que é uma ferramenta que pode consultar dados de log usando strings formatadas xpath (difíceis de dominar, mas úteis para saber) e despejar em arquivos XML para análise. Existem algumas questões sobre ServerFault relacionadas a esse tipo de análise.
Agora, para a resposta real ao problema, conforme apresentado.
Como isso está em um servidor Windows, você pode usar alguns direitos personalizados do NTFS para melhor entender o que os alunos podem e não podem fazer em um diretório. Você precisa prestar atenção à herança de direitos para que isso funcione, mas as caixas de depósito podem realmente ser criadas com segurança. Nós os usávamos muito alegremente em certas áreas.
Os principais conceitos para a permissão correta de diretórios de caixa de depósito de arquivos:
- Os alunos precisam poder navegar até o diretório.
- Os direitos herdados devem ser bloqueados, pois eles devem não ter permissão para navegar em qualquer diretório abaixo do diretório da caixa de depósito.
- Os alunos precisam da capacidade de escrever qualquer arquivo ou diretório, mas apenas arquivos e diretórios de leitura criados por eles.
- O corpo docente precisa ser capaz de ler qualquer coisa.
Praticamente, isso pode ser feito por meio da GUI do Windows ou da ferramenta icacls
. Como o icacls é muito mais fácil de documentar em um site como este, é o que eu fornecerei.
icacls dropdir /inheritance:d
icacls dropdir /remove AllStudents
icacls dropdir /grant Csci101:(rx,wd)
icacls dropdir /grant CSciFaculty:(OI)(CI)(M)
icacls dropdir /grant *S-1-3-0:(oi)(ci)(rx)
As linhas acima fazem o seguinte, em ordem.
- Bloqueie a herança, copiando as ACLs existentes
- Remove o grupo de alunos das ACLs existentes. Repita conforme necessário para qualquer outro grupo que possa conceder visibilidade ao diretório.
- Conceda ao grupo de classes a capacidade de ler e executar dados no próprio diretório . Isso não garante a capacidade de visualizar nenhum arquivo nesse diretório, apenas escreva-os.
- Conceda ao corpo docente a capacidade de modificar o conteúdo no diretório e em todos os subdiretórios
- Conceda ao usuário CREATOR_OWNER (um usuário especial do NTFS que permite conceder direitos aos proprietários de arquivos) a capacidade de ler arquivos criados.
Isso permitirá que os alunos copiem os arquivos, não possam modificá-los depois de copiados e visualizar apenas seus próprios arquivos. Se um aluno tentar copiar um arquivo existente, ele receberá um erro de acesso negado. Se um aluno tentar abrir um arquivo que ele conhece, mas não tiver direitos, ele receberá um erro de acesso negado.
Obviamente, isso requer alguma infraestrutura:
- Um grupo contendo todos os alunos de uma turma
- Um grupo contendo todo o corpo docente da turma
Isso tornará muito mais difícil pegar arquivos que os alunos não devem pegar.