vsftpd를 사용하여 FTP 액세스 제어

vsftpd를 사용하여 FTP 액세스 제어

내가 설정한 VPS에 파일을 업로드할 수 있도록 vsftpd를 설정했습니다. 유일한 문제는 디렉토리를 생성할 수 없다는 것입니다. 익명 사용자는 허용하지 않지만 가상 사용자는 로컬 자격 증명을 사용하여 연결할 수 있도록 vsftpd를 설정했습니다. 이 시점에서 폴더를 만들려고 하면 오류 메시지가 "550: 디렉터리 생성 실패"(내 해석)에서 "550: 권한 거부됨"으로 변경됩니다. 루트는 /var/www 폴더를 소유하고 있고 내가 인증한 사용자는 읽기 및 실행 권한은 있지만 쓰기 권한은 없으므로 폴더나 파일을 만들 수 없다는 것이 이해가 됩니다.

이 시점에서 나는 chown 및 chmod를 사용하여 그룹 소유권을 내 사용자가 속한 그룹으로 재귀적으로 변경하고 내 사용자에게 쓰기 권한을 부여하려고 했습니다. 처음에는 이것이 작동하는 것처럼 보였습니다. SSH 세션에서 /var/www로 이동하여 새 디렉토리를 만들 수 있었습니다. 그러나 ftp 클라이언트를 사용하여 로그인하려고 하면 액세스가 거부됩니다.

낯선 사람이라도 /var/log/vsftpd.log를 확인하면 다음 줄이 표시됩니다.

Mon Jan  5 00:03:25 2015 [pid 801] CONNECT: Client "73.53.82.111"
Mon Jan  5 00:03:25 2015 [pid 800] [gradinafrica] OK LOGIN: Client "73.53.82.111"

...로그인이 작동하지 않는 것 같습니다. 어떻게 되어가나요?

편집하다(추가 정보): OS: Ubuntu 14.04 아키텍처: 가상 사설 서버(?)

서버를 설정할 때 루트로 로그인하는 것을 허용하지 않았고(여러 소스에서 권장됨) 다른 사용자 'gradinafrica'를 설정하여 sudo 그룹에 추가했습니다. 이 계정을 FTP에 사용하려고 합니다. 나는 sftp를 전혀 사용하지 않았습니다.

이것은 vsftpd.conf의 내용입니다(주석 생략):

listen=YES
anonymous_enable=NO
local_enable=YES
virtual_use_local_privs=YES
anon_upload_enable=YES
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
chroot_local_user=YES
local_root=/var/www/
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key

답변1

/var/www/의 사용자 계정에 대한 쓰기 권한이 필요한 경우 특정 사용자는 운영 체제에 따라 apache 또는 www-data 그룹의 구성원이 되기를 원할 것입니다.

write_enable=YES

웹 루트를 홈 디렉터리로 사용하여 사용자를 추가한 경우에만 이 옵션을 사용하십시오.

allow_writeable_chroot=YES

관련 정보