use*_*087 5 linux ftp quota vsftpd
我尝试为 vsftpd 配置用户磁盘配额。
我在 debian 上使用“quota”包为 ftp 虚拟用户配置了配额(你知道,通过编辑 /etc/fstab 和所有这些东西)。互联网告诉我,这是使用 vsftpd 的唯一解决方案。
问题是:当文件上传到 ftp 服务器时,它的所有者是 ftp:nogroup,所以配额不适用于我的用户,例如 bob:bob。
我也尝试 chown ftp:bob 目标文件夹,并在 bob 组上使用组配额,但我没有工作
所以我直接去了 FAQ 并没有找到这个 :) 你有关于这个配额问题的任何解决方案吗?
干杯,迈赫迪
以下是您应该采取的设置步骤:
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”。
我知道这是很多,但应该这样做!在发布之前,我从头开始执行这个过程,只是为了确定。
配额仅适用于系统用户。所以需要配置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 中。