vsftpd의 할당량?

vsftpd의 할당량?

vsftpd에 대한 사용자 디스크 할당량을 구성하려고 했습니다.

저는 데비안의 "quota" 패키지를 사용하여 ftp 가상 사용자에 대한 할당량을 구성했습니다(알다시피 /etc/fstab 및 그 모든 항목을 편집하여). 인터넷에서는 이것이 vsftpd의 유일한 솔루션이라고 말했습니다.

문제는 파일이 ftp 서버에 업로드될 때 소유자가 ftp:nogroup이므로 할당량이 내 사용자에게 적용되지 않는다는 것입니다(예: bob:bob).

또한 대상 폴더에 대해 ftp:bob을 chown하고 bob 그룹에서 그룹 할당량을 사용하려고 시도했지만 작동하지 않았습니다.

그래서 바로 FAQ로 갔는데 이 내용을 찾지 못했습니다. :) 이 할당량 문제에 대한 해결책이 있습니까?

건배, 메디

답변1

이를 설정하기 위해 수행해야 할 단계는 다음과 같습니다.

VSFTD

/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를 업데이트해야 합니다. 맨 아래 줄에 다음을 추가하고 위의 사용자가 나열되지 않았는지 확인하십시오(예: SSH를 통해 서버에 액세스하려는 사용자만 나열).

#nano /etc/ssh/sshd_config

AllowUsers username1 username2

마운트 지점 준비

이제 할당량을 설치하고 활성화합니다.

이는 사용자별 및 그룹별로 이 작업을 수행하는 방법을 보여줍니다. 그런데 파일 시스템이 마운트되면 할당량 지원이 활성화되므로 다음 단계를 완료하면 서버를 재부팅해야 합니다. 현재 수행 중인 작업을 정확히 알지 않는 한 원격 시스템에서 작업을 수행하지 마십시오.

루트로 다음을 수행하거나 sudo를 사용하십시오.

#nano /etc/fstab

fstab 파일(usrquota 또는 grpquota)에 다음이 있어야 합니다. 다음은 우분투 서버 설치 방법에 따른 몇 가지 예입니다.

/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 소프트 제한을 초과한 경우 텍스트 파일은 200Mb 하드 제한 아래로 유지하기 위해 20Mb만큼 잘립니다.

할당량을 확인하세요.

#repquota /home 

사용자에 대한 할당량을 제거하려면 하드 및 소프트 제한을 '0'으로 설정하기만 하면 됩니다.

나는 그것이 많다는 것을 알고 있지만 그렇게 해야 합니다! 확실하게 하기 위해 이 내용을 게시하기 전에 처음부터 모든 과정을 진행했습니다.

답변2

패트릭은 좋은 하우투를 했습니다. 2가지를 추가하겠습니다.

  1. quotatool은 필수가 아닙니다
  2. FTP 폴더에 대한 자체 물리적 파티션이 없으면 루프 파일을 사용할 수 있습니다. 나는 이것을했고 정말 잘 작동합니다
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"를 사용하여 할당량을 설정합니다. fstab에 "userquota" 옵션을 추가하는 것을 잊지 마세요.

관련 정보