Como outros já disseram - não use FTP - há muitas, muitas coisas erradas nele. OTOH, você provavelmente deve usar um protocolo que não exija que os usuários instalem software adicional do cliente; embora o acesso baseado em ssh (sftp, scp) seja o ideal, as máquinas MSWindows não vêm com um cliente como padrão.
Não há gerenciadores de arquivos disponíveis no final, escritos em PHP (e provavelmente em outras linguagens também). O IIS faz algumas coisas muito estranhas com o tunelamento das permissões NTLM - mas se você estiver usando o Apache, deve ser razoavelmente seguro - no entanto, acessar as unidades não é tão simples quanto ler em \ server \ nome de usuário \ - você precisará permitir o direitos de administrador do servidor da web nesses arquivos - mas isso é um pesadelo de segurança!
A maneira como eu faço isso (para um tipo de aplicativo muito diferente) é manipular a E / S via smbclient usando o nome de usuário / senha da sessão PHP dos usuários - mas isso é em uma máquina Linux - AFAIK, não há equivalente no MSWindows.
Certamente, você deseja usar as credenciais fornecidas pelo usuário para se autenticar no armazenamento.
Isso está rapidamente se tornando assustador e complicado!
Portanto, uma solução prática seria permitir que os alunos mapeassem as unidades pela Internet. Dessa forma, você não precisa se preocupar com as complicações de fornecer um gerenciador de arquivos que não seja parte integrante do sistema operacional (ou seja, diretamente acessível a partir de aplicativos). Mas você não deseja expor seu servidor a ninguém e a todos. A maneira usual de resolver esse problema seria uma VPN - e existem muitas boas e de baixo custo disponíveis. Ou simplesmente envolva o serviço em SSL com autenticação de certificado de cliente. Mas, novamente, isso requer instalações do lado do cliente.
Assim.....
Que tal um formulário da Web para autenticar um usuário em um endereço IP que, em seguida, cria um buraco no firewall por tempo limitado para que o endereço IP se conecte via SMB (e eles ainda precisam fornecer um nome de usuário / senha para mapear a unidade, é claro) .