데이터를 서버로 전송하고 파일 및 폴더로 작업하려면 FTP 서버를 설치해야 합니다. 우리는 서버로 Ubuntu 20.04를 선택하고 서비스로 vsftpd를 선택했습니다. 이 FTP 서버는 단순성과 빠른 설정 면에서 널리 사용되는 proftpd와 다릅니다. filezilla, total Commander, mc 등 모든 클라이언트를 사용할 수 있습니다.
모든 설정은 루트 사용자에서 수행합니다. 일반 사용자를 사용하는 경우 명령 앞에 sudo를 추가합니다.
1. 서비스를 설치해보자
apt update
apt install vsftpd
systemctl start vsftpd
systemctl enable vsftpd
2. 구성해보자
원래 설정의 복사본을 만들어 보겠습니다:
cp /etc/vsftpd.conf /etc/vsftpd.conf_default
사용자를 추가하고 해당 사용자의 비밀번호를 지정하세요:
useradd -m testuser
passwd testuser
방화벽을 설정해 보겠습니다. 우리의 경우에는 iptables입니다:
iptables -A INPUT -p tcp -m tcp --dport 20 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 21 -j ACCEPT
/sbin/iptables-save > /etc/iptables/rules.v4
대부분의 경우 사용자에게 쓰기 권한이 필요합니다. 서버 설정에서 이를 허용해 보겠습니다:
nano /etc/vsftpd.conf
write_enable=YES
설정 파일을 저장하고 Ctrl + O를 누른 후 Enter, Ctrl + X를 눌러 편집기를 종료하세요. 서비스를 다시 시작하자:
systemctl restart vsftpd.service
기본 설정은 완료되었지만 특정 디렉터리(예: 도메인(사이트) 폴더)에 대한 FTP 액세스를 구성해야 하는 경우가 많습니다. 이렇게 하려면 기본 사용자 디렉터리를 변경하고, www-data 그룹에 사용자를 추가하고, 해당 그룹에 폴더와 파일을 쓸 수 있도록 허용해야 합니다. 기본적으로 항목은 사용자에 대해서만 지정됩니다.
usermod -d /var/www/ testuser
usermod -a -G www-data testuser
find /var/www -type d -exec chmod 775 {} \;
find /var/www -type f -exec chmod 664 {} \;
완료되었습니다. 이제 사용자는 지정된 경로의 파일 및 폴더로 작업할 수 있습니다. 사이트가 여러 개인 경우 각각에 대해 FTP 사용자를 추가할 수 있습니다. 기본적으로 사용자는 하위 폴더를 포함하여 지정된 폴더에만 액세스할 수 있으며 우리가 지정한 폴더보다 상위 폴더로 이동할 수 없습니다.