E vsftp no meu caminho
Como fazer
Instale vsftpd
e PAM library
Editar /etc/vsftpd.conf
e /etc/pam.d/vsftpd
Crie user accouts com diretórios personalizados (em / var / www / por exemplo)
Definir diretórios com o chmod e o chown corretos
Crie um usuário admin com acesso total ao servidor
Resolver problemas
-
Instale vsftpd
e libpam-pwdfile
para criar usuários virtuais
Eu queria criar usuários de FTP, mas eu não queria adicionar usuários unix locais (sem acesso ao shell, sem diretório inicial e assim por diante). Um PAM ajudará você a criar usuários virtuais.
sudo apt-get install vsftpd libpam-pwdfile
-
Editar vsftpd.conf
Primeiro você precisa fazer o backup do arquivo original
sudo mv /etc/vsftpd.conf /etc/vsftpd.conf.bak
Em seguida, crie um novo
sudo nano /etc/vsftpd.conf
Copie e cole as seguintes linhas. O arquivo deve conter apenas estas linhas:
listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
nopriv_user=vsftpd
virtual_use_local_privs=YES
guest_enable=YES
user_sub_token=$USER
local_root=/var/www/$USER
chroot_local_user=YES
hide_ids=YES
guest_username=vsftpd
-
Registrar usuários virtuais
Para registrar um usuário, você usa htpasswd
, então suponho que você tenha apache2
trabalhando em seu servidor. Crie uma pasta vsftpd e coloque os arquivos de configuração nela.
sudo mkdir /etc/vsftpd
então
'sudo htpasswd -cd /etc/vsftpd/ftpd.passwd user1'
-c significa que criaremos o arquivo se ele ainda não existir
-d força o MD5, você precisa dele no Ubuntu 12.04, use-o sempre
O comando solicitará uma senha.
Se você quiser adicionar novos usuários depois:
'sudo htpasswd -d /etc/vsftpd/ftpd.passwd user2'
-
Configure o PAM em /etc/pam.d/vsftpd
Novamente, você precisa fazer o backup do arquivo original
sudo mv /etc/pam.d/vsftpd /etc/pam.d/vsftpd.bak
e crie um novo
'sudo nano /etc/pam.d/vsftpd'
Copie e cole essas duas linhas (esse deve ser o único conteúdo). Eu insisto apenas nessas 2 linhas, perdi muito tempo mantendo os originais e apenas adicionei estes.
'auth required pam_pwdfile.so pwdfile /etc/vsftpd/ftpd.passwd'
'account required pam_permit.so'
Você pode verificar se ele foi criado com o comando id: id vsftpd. Definimos o usuário com o /bin/false
shell por causa do parâmetro check_shell (mesmo se você não usá-lo).
Quando o usuário final se conecta ao servidor FTP, ele será usado para direitos e propriedade: chmod
e chown
.
- Reinicie o vsftpd
A maneira comum é usar o init.d como todo deamon
'sudo /etc/init.d/vsftpd restart'
- Crie diretórios
De acordo com sua configuração, todos os usuários serão colocados nessa pasta:
/var/www/user1
.
Você precisa criá-los com direitos específicos: a pasta raiz não pode ser gravada!
/ [root = /var/www/user1] => 555
www [ /var/www/user1/www ] => 755
docs [ /var/www/user1/docs ] => 755
Nota: o usuário não pode criar arquivos ou pastas no diretório raiz.
Em vsftpd.conf
, temos chroot_local_user=YES
para que o usuário não consiga ver nada fora de sua pasta. Para ele, o servidor é assim:
Então, basta executar estes comandos:
mkdir /var/www/user1
chmod -w /var/www/user1
mkdir www/user1/www
chmod -R 755 /var/www/user1/www
chown -R vsftpd:nogroup /var/www/user1
A pasta /var/www/user1
tem que existir ou a conexão falhará.
Agora você pode tentar se conectar ao seu cliente FTP e ele será bem-sucedido! Se não conseguir, verifique a parte de resolução de problemas.
- Crie um usuário Admin para acessar todo o servidor
Para criar um usuário administrador, precisamos registrar um novo usuário com o htpasswd.
Antes de fazer isso, aconselho você a verificar o arquivo /etc/ftpusers
que define determinados usuários que não podem se conectar ao ftp. Eu acho que é apenas para usuários locais e não para usuários virtuais, mas apenas no caso de não escolher um nome contido neste arquivo. Sejamos honestos, o vsftpd é complicado o suficiente!
sudo htpasswd -d /etc/vsftpd/ftpd.passwd theadmin
Agora precisamos adicionar uma nova linha em /etc/vsftpd.conf
chroot_list_enable=YES
Isso significa que seu usuário será colocado em sua pasta (como uma prisão), EXCETO os usuários no /etc/vsftpd.chroot_list
Vamos criar esse arquivo e adicionar nosso usuário. O arquivo é uma linha simples que contém "theadmin". Adicione um usuário por linha. Isso significa que você NÃO precisa criar uma pasta / var / www / theadmin, o usuário fará o login e iniciará em / home / vsftpd.
Reinicie o servidor e pronto!
Solução de problemas
Aqui estão alguns erros que encontrei.
500 OOPS: vsftpd: refusing to run with writable root inside chroot ()
Seu diretório raiz é gravável, isso não é permitido.
500 OOPS: cannot change directory:'/var/www/theadmin' if the folder doesnt exist
A pasta / var / www / $ USER não existe, crie-a com os direitos corretos (não graváveis) ou adicione o usuário ao /etc/vsftpd.chroot_list
.
htpasswd: não é possível criar o arquivo /etc/vsftpd/ftpd.passwd
A pasta /etc/vsftpd/
precisa estar presente, o htpasswd não a criou.
vsftpd restart ou stop error: “restart: instância desconhecida“
Isso significa que você não pode iniciar o deamon mesmo que tenha uma mensagem de sucesso com /etc/init.d/vsftpd start
.