Квоты в vsftpd?

Квоты в vsftpd?

Я попытался настроить дисковые квоты пользователя для vsftpd.

Я настроил квоты для виртуальных пользователей ftp с помощью пакета "quota" на Debian (ну, вы знаете, редактируя /etc/fstab и все такое). Интернет сказал мне, что это единственное решение с vsftpd.

Проблема в следующем: когда файл загружается на FTP-сервер, его владельцем является ftp:nogroup, поэтому квота не распространяется на моего пользователя, например bob:bob.

Я также пробовал chown ftp:bob для целевой папки и использовать групповую квоту для группы bob, но это не сработало.

Поэтому я сразу перешел к разделу часто задаваемых вопросов и не нашел этого :) Есть ли у вас решение этой проблемы с квотами?

Привет, Мехди.

решение1

Вот шаги, которые вам следует предпринять для настройки:

VSFTPd

Создайте файл /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

Затем создайте список chroot, чтобы пользователи не могли просматривать ресурсы за пределами своего домашнего каталога.

#nano /etc/vsftpd.chroot_list

someusernamehere

SSH

Теперь, поскольку у этого пользователя есть реальная учетная запись в системе (дисковые квоты не работают для виртуальных пользователей), вам следует обновить SSH, если он запущен. Добавьте следующее в нижнюю строку и убедитесь, что указанный выше пользователь не указан (т. е. укажите только тех пользователей, которым вы хотите получить доступ к серверу через SSH):

#nano /etc/ssh/sshd_config

AllowUsers username1 username2

Подготовка точек монтирования

Сейчас установим и включим квоты

Здесь показано, как это сделать для каждого пользователя и каждой группы. Кстати, поддержка квот включена, так как файловые системы смонтированы, поэтому вам нужно будет перезагрузить сервер, когда вы выполните следующие шаги. Пожалуйста, не делайте этого на удаленной машине, если вы точно не знаете, что делаете.

Выполните следующие действия как пользователь root или используйте sudo:

#nano /etc/fstab

Вам необходимо иметь следующее в файле fstab (usrquota или grpquota). Вот несколько примеров в зависимости от того, как вы установили свой сервер Ubuntu:

/dev/hda1       /home       ext2    defaults,usrquota  1       1 

или

# /home was on /dev/sda3 during installation
UUID=fce47086-925c-4164-80a4-4ba6b307123b /home           ext4    defaults,usrquota        0       2

или

# /home was on /dev/sda3 during installation
UUID=fce47086-925c-4164-80a4-4ba6b307123b /home           ext4    defaults,usrquota,grpquota        0       2

Вы можете перемонтировать его, перезагрузив систему или используя следующий пример:

#mount -o remount,usrquota /home 

Проверьте свои крепления:

#mount | grep quota

Загрузите модуль ядра квоты:

#modprobe quota_v2 echo 'quota_v2' >> /etc/modules 

Установка квот

Установите пакет квот.

#apt-get install quota quotatool

Создайте следующие файлы, если они еще не существуют. Эти файлы хранят ваши квотные лимиты:

#touch /home/aquota.user 
#touch /home/aquota.group 
#chmod 600 /home/aquota.user /home/aquota.group 

включите quatacheck без перезагрузки:

# quotacheck -vagum

Если ваше ядро ​​поддерживает журналируемую квоту, но вы ее не используете, вы, вероятно, получите ошибку. Используйте эту команду в этом случае:

# quotacheck -fvagum

Установить ограничения для пользователя:

#quotatool -u someusername -bq 100M -l '200 Mb' /home 

Первое значение — мягкий предел, второе — жесткий предел. Обратите внимание, что если пользователь попытается загрузить текстовый файл размером 100 Мб и уже превысит свой мягкий предел на 20 Мб, его текстовый файл будет обрезан на 20 Мб, чтобы не превышать жесткий предел в 200 Мб.

Проверить квоты:

#repquota /home 

Если вы когда-нибудь захотите удалить квоту для пользователя, просто установите его жесткие и мягкие ограничения на «0».

Я знаю, что это много, но этого должно хватить! Я прогнал весь процесс с нуля, прежде чем публиковать это, просто чтобы убедиться.

решение2

Патрик дал хорошее руководство. Я бы добавил 2 вещи.

  1. quotatool не является обязательным
  2. Если у вас нет собственного физического раздела для ваших ftp-папок, вы можете использовать loop-files. Я сделал это, и это работает очень хорошо
mkdir /usr/loop_device

Создайте файл размером 50 МБ.

dd if = /dev /zero of = /usr/loop_device/ld1 bs = 1024 count = 50000

Создайте на нем файловую систему.

mkfs.ext4 /usr/loop_device/ld1

Создайте каталог для пользователя ftp

mkdir /home_ftp

смонтируйте Loopdevice

добавьте следующую запись в /etc/fstab

/usr/loop_device/ld1 /home_ftp/         ext4 rw,loop,usrquota,grpquota  0 0

Я записал это здесь со скриншотами:

http://infofreund.de/user_quotas_vsftpd_en/

решение3

Квоты работают только с системными пользователями. Поэтому вам нужно настроить vsftp для использования системных пользователей, вы не можете использовать виртуальных пользователей.

Редактировать:

Вот быстрая и простая конфигурация, которая работает:

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

Затем используйте "quotacheck" для настройки квот. Не забудьте добавить опцию "userquota" в ваш fstab.

Связанный контент