vsftpd 中的配额?

vsftpd 中的配额?

我尝试为 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 写了一篇很好的指南。我想补充两点。

  1. 配额工具不是强制性的
  2. 如果您没有自己的物理分区来存放 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

我在这里用截图记录下来:

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。

相关内容