Construindo um servidor de Armazenamento para Estudantes

10

Eu trabalho para um distrito escolar. Fui encarregado de construir um servidor de armazenamento para estudantes. Um lugar para eles trabalharem fora da escola e em casa.

Meu desafio é fazer isso funcionar em casa. Na escola, eles fazem login, autenticam e recebem uma unidade mapeada para sua pasta no servidor ( S:\fileserver\studentname).

Minha pergunta é como posso disponibilizar isso para os alunos em casa?

O servidor está executando o Windows Server 2008 R2. Eu tenho PHP, Apache e MySQL trabalhando juntos. Minha idéia é escrever um script que "rastreie" pelo diretório que contém todas as pastas dos alunos e crie uma instância de cada arquivo e pasta em um banco de dados MySQL. Crie uma página de logon que usará o LDAP para autenticação e, uma vez que eles acessem o servidor em casa, eles obterão uma página com pastas e arquivos vinculados ao nome de usuário.

Alguém aí já montou algo assim?

DobotJr
fonte
2
o que eles precisam ser capazes de fazer? seu título diz armazenamento para mim e diz que eles só precisam de um login ftp. Acesso total à máquina remota = Conexão de área de trabalho remota.
1
E o FTP?
M4tt1mus
3
O problema com a sua idéia do php / apache / mysql é que ela fornecerá uma lista de arquivos em uma página da web. Assim que eles clicarem / baixarem um arquivo para trabalhar, você terá 2 versões, uma no servidor e outra no computador em casa do aluno. Isso pode levar a muitos problemas. Você precisará criar algum tipo de unidade virtual para seus alunos.
jeroen
Sem mencionar o fato de que você está abrindo os dados principais dos servidores para a rede mundial de computadores, isso é algo que você não deveria estar fazendo, se alguém ganhar raiz do php e se despedir dos seus dados.
RobertPitt
Você já considerou alguma forma de CMS? Se eles apenas precisarem gerenciar documentos em estilo de escritório padrão, algo como Alfresco provavelmente daria certo.
ErnieTheGeek

Respostas:

18

Se você insistir em fazer isso (em vez de usar a resposta @sweaves), eu começaria por:

  1. descartando Php, Apache e MySql. Eles não são necessários e apresentarão suas próprias dores de cabeça.

  2. Coloque um servidor FTPS em funcionamento. Nessa linha, você pode considerar despejar o Windows Server 2003 em favor do 2008 R2. O IIS 7 possui itens de FTP muito melhores incorporados. Http://blogs.technet.com/b/chrisavis/archive/2008/06/12/how-to-configure-ftp-over-ssl-secure-ftp-on- windows-2008-em-menos-de-10-minutos.aspx

  3. Se você não puder fazer isso, veja como configurar o File Zilla para funcionar com o AD. http://retrohack.com/enabling-filezilla-server-integration-with-active-directory-authentication/

  4. Outra opção (obrigado @jscott) é usar o WebDav ( http://www.iis.net/download/webdav ). Aqui está outra escola fazendo exatamente a mesma coisa: http://kb.iu.edu/data/araf.html

  5. Você também pode configurar um servidor SFTP. O SFTP suporta logins sem senha, mas não é suportado no Windows imediatamente.

Nota lateral, a solução filezilla é mais um trabalho de gerenciamento do que o IIS 7.

Eu não
fonte
2
+1 para SFTP e não FTP
RobertPitt
1
Este é definitivamente o caminho a percorrer. Eu tenho um sistema Linux fazendo basicamente a mesma coisa - uma única área de armazenamento acessível por SMB quando os alunos estão no campus e por SFTP quando estão fora do campus. Os alunos podem usar o WinSCP , o cliente FileZilla , o Fugu ou o que quer que fale SFTP quando estão fora do campus.
precisa
O que ele disse ...
Bart Silverstrim
4
Você pode querer adicionar o WebDav também. Os usuários do Windows podem mapear facilmente um compartilhamento WebDav como uma letra de unidade - OSX, Linux também tem suporte decente. Super simples de configurar no IIS, mesmo se as residências dos estudantes estiverem em outro servidor.
Jscott #
1
@jscott: minha experiência com o suporte WebDAV interno do Windows tem sido muito ruim (desempenho horrível no XP, em particular). Mas se funcionar em outro ambiente que eu não tentei, que assim seja.
precisa
11

Uma solução muito mais fácil seria configurar uma VPN. O aluno pode fazer login na VPN e acessar todos os seus recursos como se estivesse dentro do campus. Confira os detalhes ... http://lifehacker.com/162563/how-to-set-up-free-vpn


fonte
Não pense que isso pode funcionar aqui. Temos que fazer isso funcionar sem instalar nada nos computadores domésticos de nossos alunos.
4
@DobotJr: Você percebe que ao fazer isso sem uma segurança VPN é uma grande preocupação? Você também percebe que os sistemas dos alunos são alguns dos itens mais invadidos por aí?
NotMe
Eu sugeriria a Horda então. Torne seu servidor acessível à Internet e instale o Horde, é um navegador de e-mail e arquivos. Mapeia arquivos do compartilhamento local dos usuários para uma interface da Web para download / upload.
@sweaves o link a partir do site hacker de vida é borked, eu sugiro que você conectar-se a um outro tutorial
@Dagon - ah você é realmente correto, este é ao vivo que compnetworking.about.com/od/vpnsetup/...
5

O que exatamente eles precisam fazer? Basta ter acesso? Se você o abrir para FTP, estará solicitando grandes problemas. Se eles precisarem acessar ferramentas consistentes para trabalhar com documentos da escola, abra um servidor (ou cluster) para serviços de área de trabalho remota.

Sim, eles precisam instalar o cliente de área de trabalho remota se ainda não o tiver (provavelmente já o possuem), mas o cliente está disponível para Linux, Windows e Mac gratuitamente. A conexão é criptografada e eles podem ter acesso ao que sua escola estiver usando para o Office ou outras ferramentas, a menos que você esteja executando algo pesado como o Photoshop.

Se você usa o RDP, obtém criptografia, abre uma porta no firewall e padroniza os utilitários (nenhuma reclamação "fiz isso em casa e funcionou bem, por que não abre aqui?") gerenciamento centralizado. Eu já vi problemas semelhantes como esse resolvidos exatamente dessa maneira várias vezes e somente em circunstâncias específicas houve problemas com ele.

Além disso, você não tem alunos com várias cópias de documentos circulando reclamando que eles não sabem POR QUE o papel deles é a versão errada porque funcionava MUITO BEM em casa ... ou eles não o salvaram no lugar certo .. .etc.

Bart Silverstrim
fonte
3

E o WebDAV?

Isso é suportado no apache e você ainda pode usar o LDAP para autenticação.

Os usuários poderiam acessar seus arquivos a partir de um navegador, e as versões modernas do Windows e do OS X permitem que os usuários montem compartilhamentos WebDAV no Explorer e no Finder, respectivamente.

Também evitava os problemas associados à tentativa de armazenar o estado de um sistema de arquivos em constante mudança em sincronia com um banco de dados em seu método proposto.

Twelve47
fonte
1

Dê uma olhada no Adito / OpenVPN ALS . É gratuito, é instalado no Windows ou Linux e facilita extremamente a configuração de uma interface da web para compartilhamento de arquivos, além de muitos outros recursos. Eu uso na faculdade onde trabalho. Ele tem algumas desvantagens: requer a instalação do java nos clientes, aciona o bloqueador de pop-ups em muitos navegadores, a configuração do certificado pode ser mais fácil e a exibição paginada das listagens de arquivos pode ser mais fácil. Se você optar por configurar o webdav, ele poderá ser usado para tornar mais fácil (e mais confiável) para seus usuários o mapeamento das unidades corretas.

Joel Coel
fonte
1

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) .

symcbean
fonte
"there are many, many things wrong with [FTP]"- na verdade, existem apenas algumas coisas erradas com o ftp, mas elas são realmente importantes . ;) Tudo o mesmo no final
Joel Coel
0

PS: pessoalmente, acho que você terá uma taxa de sucesso muito melhor se você portar seu sistema para * nix, porque mais alternativas estariam disponíveis (livremente)

O que vem à mente:

Dropbox:

faça o upload das alterações para o Dropbox . O melhor do dropbox é que eles oferecem um plano gratuito de 20 GB (agora) e podem ser usados ​​com todos os sistemas operacionais populares (Windows / Linux / MacOSX), sem qualquer aborrecimento. Ainda não li / implementei nada usando a API do Dropbox , mas espero que você possa conseguir sem muita dor de cabeça. Eu acho que o problema é o que acontece quando eles mudam o plano de preços, mas isso é algo para mais tarde.

Alternativas do Dropbox de código aberto

Depois de realizar uma pesquisa rápida no Google, este link fornece algumas alternativas de código aberto, mas não sei se alguma delas é boa, então você deve testar isso.

Rede

Em vez de dar aos usuários a opção de sincronizar, eles oferecem a oportunidade de baixar arquivos / pasta (compactados). Eu acho que você poderia escrever um sistema como esse sem muita queixa.

VPN / RPC

Como alguns outros usuários disseram, dê ao usuário o login usando VPN / RPC.

Alfred
fonte
2
Os alunos devem poder entrar com seu nome de usuário e senha de rede que usam todos os dias na escola. É por isso que isso precisa sincronizar com o diretório ativo de alguma forma. Portanto, o dropbox não é uma opção. Obrigado embora.
DobotJr
Acho que você pode mapear essas credenciais para as credenciais da caixa de depósito de alguma forma, mas boa sorte, senhor.
Alfred
0

Dê uma olhada no Ajaxplorer ( http://www.ajaxplorer.info )

É um gerenciador de arquivos baseado na Web (escrito em PHP e Javascript) que fornece fácil administração de permissões, usuários, grupos e você pode configurar repositórios compartilhados e pessoais.

Ele também pode fazer webdav e possui conectores de autenticação para todos os tipos de sistemas (ldap, mysql, flatfile .....)

com os conectores do sistema de arquivos, você pode configurar regras para mapear contas de usuário para diretórios individuais automaticamente, o que resolveria seus requisitos para acessar a unidade mapeada do usuário.

Começamos a usá-lo aqui (agência de design / web) e clientes de todas as habilidades técnicas acham muito fácil de usar / entender

Você deve poder integrá-lo ao seu sistema atual sem alterações

Nick Downton
fonte