Criando usuários

Imagine agora que você quer uma configuração um pouco mais complexa, com vários usuários, cada um tendo acesso a apenas uma pasta específica. Esta configuração pode ser usada em conjunto com os virtual hosts do Apache (permitindo que os responsáveis
possam atualizar os arquivos do site), ou em situações em que seu servidor hospeda arquivos de diversos usuários ou projetos diferentes.

O responsável pelo projeto1 pode dar upload para a pasta “/home/ftp/projeto1” (por exemplo), mas não deve ter acesso a outras pastas nem a outros arquivos do sistema. Os usuários anônimos terão acesso às pastas
de todos os projetos, mas, naturalmente, apenas para leitura.

A forma mais simples de fazer isso é criar os usuários que terão acesso ao FTP, colocando a pasta a que terão acesso como seu diretório home e bloqueando o uso do shell, para que eles não possam acessar o servidor remotamente
através de outros meios (via ssh, por exemplo).

Vamos começar adicionando no arquivo a opção que prende os usuários nos seus diretórios home. Abra o arquivo “/etc/proftpd.conf” e adicione (no final do arquivo) a linha:

DefaultRoot ~

Você vai precisar adicionar também a seção para liberar o acesso anônimo ao ftp, que vimos acima. Como queremos apenas que os mantenedores dos projetos possam dar upload de arquivos, remova a seção “<Directory
incoming
>”. A seção 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 diretório padrão do FTP, onde os usuários anônimos terão acesso aos arquivos, é a “/home/ftp“. Em outras distribuições pode ser usada a pasta “/var/ftp“; dê uma olhada em como o arquivo vem configurado por
padrão.

De volta à configuração, vamos começar criando subpastas para cada projeto:

# mkdir /home/ftp/projeto1
# mkdir /home/ftp/projeto2
# mkdir /home/ftp/projeto3
etc..
.

O próximo passo é ir adicionando os usuários no sistema, tendo o cuidado de fazer as alterações no diretório home e no shell padrão, para que eles tenham acesso somente via FTP e apenas à pasta desejada.

Para adicionar os usuários, use o comando “adduser“, como se estivesse criando uma conta normal:

# adduser projeto1

Acrescentando usuário projeto1…
Acrescentando novo grupo projeto1 (1005).
Acrescentando novo usuário projeto1 (1005) com grupo projeto1.
Criando diretório pessoal /home/projeto1.
Copiando arquivos de /etc/skel

Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully

Veja que por padrão ele cria a pasta “/home/projeto1”, que passa a ser o diretório home do usuário 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 informações dos usuários. 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 usuário tenha acesso ao shell do servidor e possa executar
comandos (fazendo o que não deve no servidor). Se você preferir que, além do acesso via ftp, os usuários tenham acesso via ssh, então mantenha o “/bin/bash”. Depois das alterações, a linha ficará:

projeto1:x:1005:1005:,,,:/home/ftp/projeto1:/bin/false

Você pode aproveitar para remover a pasta /home/projeto1, já que não precisaremos mais dela:

# rm -rf /home/projeto1/

Na verdade, esse processo serve para que você entenda melhor o procedimento de criação destes usuários “falsos” no Linux. Estas alterações podem ser especificadas ao criar o usuário. Não é preciso sair editando todos os
arquivos manualmente. O comando para criar o usuário “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

Não esqueça de acertar as permissões da pasta /home/ftp/projeto1:

# chown -R projeto1:projeto1 /home/ftp/projeto1/

Depois de concluir a configuração, falta só reiniciar o servidor FTP para que as configurações entrem em vigor:

# /etc/init.d/proftpd restart

Em distribuições 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 usuário não enxerga nada fora da pasta “/home/ftp/projeto1” e todos os arquivos que ele der upload vão para lá.

A senha de acesso ao FTP é a mesma definida na hora de criar o usuário. O Proftpd simplesmente aproveita o sistema de autenticação do sistema. Se você precisar alterar a senha do usuário, use o comando “passwd
projeto1
“.

Para usar o Proftpd em conjunto com os virtual hosts do Apache, a configuração é a mesma, com exceção de que você não precisaria habilitar o acesso anônimo, já que o FTP seria usado apenas pelos webmasters dos sites
hospedados.

Nesse caso, ao criar os usuários, 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 opção “–no-create-home” evita que o sistema copie os arquivos do diretório “/etc/skel” (como os arquivos .bashrc, .bash_history e outros) para dentro da pasta de arquivos, “sujando” o diretório. Ao terminar, não se esqueça
de alterar as permissões da pasta, de forma que o usuário tenha permissão de escrita:

# chown -R joao:joao /var/www/joao

Graças ao uso da opção “DefaultRoot ~”, os usuários terão acesso apenas à pasta com os arquivos do site, sem acesso às pastas dos outros usuários ou às demais pastas do sistema. Esta é justamente a configuração usada na
maioria dos serviços de shared hosting onde o acesso é feito via FTP. O sistema não é nada seguro e de vez em quando algumas das senhas são roubadas, mas, como ele é fácil de implementar e poucos usuários tem dificuldades em acessar as contas, a tradição
continua.

Sobre o Autor

Redes Sociais:

Deixe seu comentário

X