Cotas no vsftpd?

Cotas no vsftpd?

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.

  1. quotatool não é obrigatório
  2. 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:

http://infofreund.de/user_quotas_vsftpd_en/

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.

informação relacionada