Você está na página 1de 2

Criando usurios

Imagine agora que voc quer uma configurao um pouco mais complexa, com vrios usurios, cada um tendo acesso a apenas uma pasta especfica. Esta configurao pode ser usada em conjunto com os virtual hosts do Apache (permitindo que os responsveis possam atualizar os arquivos do site), ou em situaes em que seu servidor hospeda arquivos de diversos usurios ou projetos diferentes. O responsvel pelo projeto1 pode dar upload para a pasta "/home/ftp/projeto1" (por exemplo), mas no deve ter acesso a outras pastas nem a outros arquivos do sistema. Os usurios annimos tero acesso s pastas de todos os projetos, mas, naturalmente, apenas para leitura. A forma mais simples de fazer isso criar os usurios que tero acesso ao FTP, colocando a pasta a que tero acesso como seu diretrio home e bloqueando o uso do shell, para que eles no possam acessar o servidor remotamente atravs de outros meios (via ssh, por exemplo). Vamos comear adicionando no arquivo a opo que prende os usurios nos seus diretrios home. Abra o arquivo "/etc/proftpd.conf" e adicione (no final do arquivo) a linha: DefaultRoot ~ Voc vai precisar adicionar tambm a seo para liberar o acesso annimo ao ftp, que vimos acima. Como queremos apenas que os mantenedores dos projetos possam dar upload de arquivos, remova a seo "<Directory incoming>". A seo vai ficar: <Anonymous ~ftp> User ftp Group nogroup UserAlias anonymous ftp DirFakeUser on ftp DirFakeGroup on ftp RequireValidShell off MaxClients 20 DisplayLogin welcome.msg DisplayFirstChdir .message <Directory *> <Limit WRITE> DenyAll </Limit> </Directory> </Anonymous> O diretrio padro do FTP, onde os usurios annimos tero acesso aos arquivos, a "/home/ftp". Em outras distribuies pode ser usada a pasta "/var/ftp"; d uma olhada em como o arquivo vem configurado por padro. De volta configurao, vamos comear criando subpastas para cada projeto: # mkdir /home/ftp/projeto1 # mkdir /home/ftp/projeto2 # mkdir /home/ftp/projeto3 etc... O prximo passo ir adicionando os usurios no sistema, tendo o cuidado de fazer as alteraes no diretrio home e no shell padro, para que eles tenham acesso somente via FTP e apenas pasta desejada. Para adicionar os usurios, use o comando "adduser", como se estivesse criando uma conta normal: # adduser projeto1 Acrescentando usurio projeto1... Acrescentando novo grupo projeto1 (1005). Acrescentando novo usurio projeto1 (1005) com grupo projeto1. Criando diretrio pessoal /home/projeto1. Copiando arquivos de /etc/skel Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully Veja que por padro ele cria a pasta "/home/projeto1", que passa a ser o diretrio home do usurio criado. Entretanto, neste caso queremos que o home seja a pasta "/home/ftp/projeto1", onde ele dar upload dos arquivos. Para alterar isso, abra o arquivo "/etc/passwd", onde ficam guardadas as informaes dos usurios. Na ltima linha do arquivo voc ver: projeto1:x:1005:1005:,,,:/home/projeto1:/bin/bash Vamos alterar o "/home/projeto1" para "/home/ftp/projeto1" (para trocar o home) e o "/bin/bash" para "/bin/false", de forma a impedir que usurio tenha acesso ao shell do servidor e possa executar comandos (fazendo o

que no deve no servidor). Se voc preferir que, alm do acesso via ftp, os usurios tenham acesso via ssh, ento mantenha o "/bin/bash". Depois das alteraes, a linha ficar: projeto1:x:1005:1005:,,,:/home/ftp/projeto1:/bin/false Voc pode aproveitar para remover a pasta /home/projeto1, j que no precisaremos mais dela: # rm -rf /home/projeto1/ Na verdade, esse processo serve para que voc entenda melhor o procedimento de criao destes usurios "falsos" no Linux. Estas alteraes podem ser especificadas ao criar o usurio. No preciso sair editando todos os arquivos manualmente. O comando para criar o usurio "projeto1", usando a pasta "/home/ftp/projeto1" como home e o "/bin/false" como shell, seria: # adduser --home /home/ftp/projeto1 --shell /bin/false --no-create-home projeto1 No esquea de acertar as permisses da pasta /home/ftp/projeto1: # chown -R projeto1:projeto1 /home/ftp/projeto1/ Depois de concluir a configurao, falta s reiniciar o servidor FTP para que as configuraes entrem em vigor: # /etc/init.d/proftpd restart Em distribuies derivadas do Debian, voc vai precisar adicionar a linha "/bin/false" no final do arquivo /etc/shells para que ele possa ser usado: # echo "/bin/false" >> /etc/shells Feito isso, voc j conseguir se logar no servidor usando o login criado. O usurio no enxerga nada fora da pasta "/home/ftp/projeto1" e todos os arquivos que ele der upload vo para l. A senha de acesso ao FTP a mesma definida na hora de criar o usurio. O Proftpd simplesmente aproveita o sistema de autenticao do sistema. Se voc precisar alterar a senha do usurio, use o comando "passwd projeto1". Para usar o Proftpd em conjunto com os virtual hosts do Apache, a configurao a mesma, com exceo de que voc no precisaria habilitar o acesso annimo, j que o FTP seria usado apenas pelos webmasters dos sites hospedados. Nesse caso, ao criar os usurios, use a pasta com os arquivos do site como home, como em: # adduser --home /var/www/joao --shell /bin/false --no-create-home joao A opo "--no-create-home" evita que o sistema copie os arquivos do diretrio "/etc/skel" (como os arquivos .bashrc, .bash_history e outros) para dentro da pasta de arquivos, "sujando" o diretrio. Ao terminar, no se esquea de alterar as permisses da pasta, de forma que o usurio tenha permisso de escrita: # chown -R joao:joao /var/www/joao Graas ao uso da opo "DefaultRoot ~", os usurios tero acesso apenas pasta com os arquivos do site, sem acesso s pastas dos outros usurios ou s demais pastas do sistema. Esta justamente a configurao usada na maioria dos servios de shared hosting onde o acesso feito via FTP. O sistema no nada seguro e de vez em quando algumas das senhas so roubadas, mas, como ele fcil de implementar e poucos usurios tem dificuldades em acessar as contas, a tradio continua.

Você também pode gostar