我尝试为 vsftpd 配置用户磁盘配额。
我使用 debian 上的“quota”包为 ftp 虚拟用户配置了配额(您知道,通过编辑 /etc/fstab 和所有这些东西)。互联网告诉我这是使用 vsftpd 的唯一解决方案。
问题是:当文件上传到 ftp 服务器时,其所有者是 ftp:nogroup,因此配额不适用于我的用户,例如 bob:bob。
我还尝试将 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
第一个值是软限制,第二个值是硬限制。请注意,如果用户尝试加载 100Mb 的文本文件,并且他们已经超出软限制 20Mb,则他们的文本文件将被截断 20Mb,以使其保持在 200Mb 的硬限制以下。
检查配额:
#repquota /home
如果您希望删除某个用户的配额,只需将其硬限制和软限制设置为“0”即可。
我知道这很多,但应该够了!为了确保万无一失,我在发布之前从头开始检查了整个过程。
答案2
Patrick 写了一篇很好的指南。我想补充两点。
- 配额工具不是强制性的
- 如果您没有自己的物理分区来存放 ftp 文件夹,则可以使用 loop-files。我这样做了,效果非常好
mkdir /usr/loop_device
创建一个 50MB 的文件
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。