vsftpd中的配额?

use*_*087 5 linux ftp quota vsftpd

我尝试为 vsftpd 配置用户磁盘配额。

我在 debian 上使用“quota”包为 ftp 虚拟用户配置了配额(你知道,通过编辑 /etc/fstab 和所有这些东西)。互联网告诉我,这是使用 vsftpd 的唯一解决方案。

问题是:当文件上传到 ftp 服务器时,它的所有者是 ftp:nogroup,所以配额不适用于我的用户,例如 bob:bob。

我也尝试 chown ftp:bob 目标文件夹,并在 bob 组上使用组配额,但我没有工作

所以我直接去了 FAQ 并没有找到这个 :) 你有关于这个配额问题的任何解决方案吗?

干杯,迈赫迪

Pat*_*k R 7

以下是您应该采取的设置步骤:

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
Run Code Online (Sandbox Code Playgroud)

接下来创建您的 chroot 列表,以防止用户浏览其主目录之外的内容

#nano /etc/vsftpd.chroot_list

someusernamehere
Run Code Online (Sandbox Code Playgroud)

SSH

现在因为这个用户在系统上有一个真实的账户(磁盘配额对虚拟用户不起作用),如果它正在运行,你应该更新 SSH。在最后一行添加以下内容,并确保上面的用户未列出(即仅列出要通过 SSH 访问服务器的用户):

#nano /etc/ssh/sshd_config

AllowUsers username1 username2
Run Code Online (Sandbox Code Playgroud)

准备挂载点

Will 现在将安装和启用配额

这显示了如何为每个用户和每个组执行此操作。顺便说一下,配额支持在文件系统被挂载时启用,因此当您完成以下步骤时需要重新启动服务器。请不要在远程机器上执行该操作,除非您确切地知道自己在做什么。

以 root 身份执行以下操作或使用 sudo:

#nano /etc/fstab
Run Code Online (Sandbox Code Playgroud)

您需要在 fstab 文件(usrquota 或 grpquota)中包含以下内容。以下是一些示例,具体取决于您安装 ubuntu 服务器的方式:

/dev/hda1       /home       ext2    defaults,usrquota  1       1 
Run Code Online (Sandbox Code Playgroud)

或者

# /home was on /dev/sda3 during installation
UUID=fce47086-925c-4164-80a4-4ba6b307123b /home           ext4    defaults,usrquota        0       2
Run Code Online (Sandbox Code Playgroud)

或者

# /home was on /dev/sda3 during installation
UUID=fce47086-925c-4164-80a4-4ba6b307123b /home           ext4    defaults,usrquota,grpquota        0       2
Run Code Online (Sandbox Code Playgroud)

您可以通过重新启动或使用以下示例重新挂载:

#mount -o remount,usrquota /home 
Run Code Online (Sandbox Code Playgroud)

检查您的坐骑:

#mount | grep quota
Run Code Online (Sandbox Code Playgroud)

加载配额内核模块:

#modprobe quota_v2 echo 'quota_v2' >> /etc/modules 
Run Code Online (Sandbox Code Playgroud)

设置配额

安装配额包。

#apt-get install quota quotatool
Run Code Online (Sandbox Code Playgroud)

如果以下文件尚不存在,则创建它们。这些文件存储您的配额限制:

#touch /home/aquota.user 
#touch /home/aquota.group 
#chmod 600 /home/aquota.user /home/aquota.group 
Run Code Online (Sandbox Code Playgroud)

在不重启的情况下打开 quatacheck:

# quotacheck -vagum
Run Code Online (Sandbox Code Playgroud)

如果您的内核支持日志配额但您没有使用它,您可能会收到错误消息。在这种情况下使用此命令:

# quotacheck -fvagum
Run Code Online (Sandbox Code Playgroud)

为用户设置限制:

#quotatool -u someusername -bq 100M -l '200 Mb' /home 
Run Code Online (Sandbox Code Playgroud)

第一个值是软限制,第二个是硬限制。请注意,如果用户尝试加载 100Mb 的文本文件并且他们已经超出了 20Mb 的软限制,则他们的文本文件将被截断 20Mb 以使其保持在 200Mb 的硬限制以下。

检查配额:

#repquota /home 
Run Code Online (Sandbox Code Playgroud)

如果您希望删除用户的配额,只需将其硬限制和软限制设置为“0”。

我知道这是很多,但应该这样做!在发布之前,我从头开始执行这个过程,只是为了确定。


waz*_*oox 1

配额仅适用于系统用户。所以需要配置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
Run Code Online (Sandbox Code Playgroud)

然后使用“quotacheck”设置配额。不要忘记将“userquota”选项添加到您的 fstab 中。