
Я попытался настроить дисковые квоты пользователя для 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 вещи.
- quotatool не является обязательным
- Если у вас нет собственного физического раздела для ваших 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
Я записал это здесь со скриншотами:
решение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.