Tentei configurar cotas de disco do usuário para vsftpd.
Eu configurei cotas para usuários virtuais de FTP usando o pacote "quota" no debian (você sabe, editando /etc/fstab e tudo mais). A Internet me disse que é a única solução com o vsftpd.
O problema é: quando um arquivo é carregado no servidor FTP, seu proprietário é ftp:nogroup, então a cota não se aplica ao meu usuário, por exemplo bob:bob.
Também tentei chown ftp:bob a pasta de destino e usar a cota de grupo no grupo bob, mas não funcionou
Então fui direto para o FAQ e não encontrei :) Você tem alguma solução para esse problema de cota?
Felicidades, Mehdi
Responder1
Aqui estão as etapas que você deve seguir para configurar isso:
VSFTPd
Crie o arquivo /etc/vsftd.conf
#nano /etc/vsftpd.conf
listen=YES
anonymous_enable=NO
local_enable=YES
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
chroot_local_user=YES
secure_chroot_dir=/var/run/vsftpd
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/certs/vsftpd.pem
download_enable=yes
guest_enable=NO
write_enable=yes
#If chroot_local_user is YES, then this list becomes a list of
# users to NOT chroot()
chroot_local_user=no
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
Em seguida, crie sua lista chroot para impedir que os usuários naveguem fora de seu diretório inicial
#nano /etc/vsftpd.chroot_list
someusernamehere
SSH
Agora, como esse usuário possui uma conta real no sistema (as cotas de disco não funcionam em usuários virais), você deve atualizar o SSH se estiver em execução. Adicione o seguinte na linha inferior e certifique-se de que o usuário acima não esteja listado (ou seja, liste apenas os usuários que você deseja acessar o servidor via SSH):
#nano /etc/ssh/sshd_config
AllowUsers username1 username2
Preparando pontos de montagem
Will agora instalará e ativará cotas
Isso mostra como fazer isso por usuário e por grupo. A propósito, o suporte a cotas é ativado à medida que os sistemas de arquivos são montados, portanto, você precisará reinicializar o servidor ao concluir as etapas a seguir. Por favor, não faça isso em uma máquina remota, a menos que você saiba exatamente o que está fazendo.
Execute o seguinte como root ou use sudo:
#nano /etc/fstab
Você precisa ter o seguinte em seu arquivo fstab (usrquota ou grpquota). Aqui estão alguns exemplos dependendo de como você instalou seu servidor Ubuntu:
/dev/hda1 /home ext2 defaults,usrquota 1 1
ou
# /home was on /dev/sda3 during installation
UUID=fce47086-925c-4164-80a4-4ba6b307123b /home ext4 defaults,usrquota 0 2
ou
# /home was on /dev/sda3 during installation
UUID=fce47086-925c-4164-80a4-4ba6b307123b /home ext4 defaults,usrquota,grpquota 0 2
Você pode remontar reiniciando ou usando o seguinte exemplo:
#mount -o remount,usrquota /home
Verifique suas montagens:
#mount | grep quota
Carregue o módulo de cota do kernel:
#modprobe quota_v2 echo 'quota_v2' >> /etc/modules
Configurando suas cotas
Instale o pacote de cotas.
#apt-get install quota quotatool
Crie os seguintes arquivos se eles ainda não existirem. Estes arquivos armazenam seus limites de cota:
#touch /home/aquota.user
#touch /home/aquota.group
#chmod 600 /home/aquota.user /home/aquota.group
ligue o quatacheck sem reiniciar:
# quotacheck -vagum
Se o seu kernel suportar cota registrada em diário, mas você não a estiver usando, provavelmente receberá um erro. Use este comando nesse caso:
# quotacheck -fvagum
Defina limites para o usuário:
#quotatool -u someusername -bq 100M -l '200 Mb' /home
O primeiro valor é um limite flexível, o segundo é um limite rígido. Observe que se um usuário tentar carregar um arquivo de texto de 100 Mb e já tiver ultrapassado o limite flexível de 20 Mb, o arquivo de texto será truncado em 20 Mb para mantê-lo abaixo do limite máximo de 200 Mb.
Verifique as cotas:
#repquota /home
Se alguma vez você desejar remover uma cota de um usuário, basta definir seus limites rígidos e flexíveis como '0'.
Eu sei que é muito, mas deve bastar! Executei o processo do zero antes de publicar isso, só para ter certeza.
Responder2
Patrick fez um bom tutorial. Eu acrescentaria 2 coisas.
- quotatool não é obrigatório
- Se você não possui uma partição física própria para suas pastas FTP, você pode usar arquivos de loop. Eu fiz isso e funciona muito bem
mkdir /usr/loop_device
Crie um arquivo de 50 MB fe
dd if = /dev /zero of = /usr/loop_device/ld1 bs = 1024 count = 50000
Crie um sistema de arquivos nele
mkfs.ext4 /usr/loop_device/ld1
Crie um diretório para o usuário FTP
mkdir /home_ftp
monte o Loopdevice nele
adicione a seguinte entrada ao /etc/fstab
/usr/loop_device/ld1 /home_ftp/ ext4 rw,loop,usrquota,grpquota 0 0
Eu escrevi aqui com capturas de tela:
Responder3
As cotas funcionam apenas com usuários do sistema. Então você precisa configurar o vsftp para usar usuários do sistema, você não pode usar usuários virtuais.
Editar:
Aqui está uma configuração rápida e suja que funciona:
listen=YES
anonymous_enable=NO
local_enable=YES
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
chroot_local_user=YES
secure_chroot_dir=/var/run/vsftpd
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/certs/vsftpd.pem
download_enable=yes
anon_mkdir_write_enable=yes
guest_enable=NO
anon_world_readable_only=no
anon_upload_enable=yes
write_enable=yes
chroot_local_user=no
anon_other_write_enable=yes
Em seguida, use "quotacheck" para configurar cotas. Não se esqueça de adicionar a opção "userquota" ao seu fstab.