아마존 EC2에 FTP 서비스를 하기 위해서 vsftpd를 설치하고 아래와 같이 설정한다. (우분투 기준)
1. 레포지토리 업데이트
sudo apt-get update
2. vsftpd 설치
sudo apt-get install vsftpd
3. 설치 후 /etc/vsftpd.conf 파일을 아래와 같이 수정한다.
write_enable=YES
local_umask=022
chroot_local_user=YES
allow_writeable_chroot=YES
pasv_enable=YES
pasv_min_port=12000
pasv_max_port=12100
4. vsftpd 서비스를 재시작
sudo service vsftpd restart
5. 사용자 추가 : ftp user가 bash shell에 접근하는 것을 방지하기 위해 아래처럼 설정
sudo useradd -m john -d [접속할 홈디렉토리 패스] -s /usr/sbin/nologin
sudo passwd john
6. nologin shell을 위해 로그인 허용하기
/etc/shells를 열고 제일 아래줄에 아래 코드를 추가
/usr/sbin/nologin
7. FTP 클라이언트 프로그램으로 접속
오류 처리 : 530 login incorrect error 발생 시 아래와 같이 처리.
sudo apt-get remove vsftpd
sudo rm /etc/pam.d/vsftpd
sudo apt-get install vsftpd
참고 사이트
계정 퍼미션 설정
웹서비스의 홈디렉토리의 소유자를 www-data:www-data 로 변경하는 방법이 있다.
$ sudo chown -R www-data:www-data /home/unclepapa/public_html
위와 같은 방식은 www-data의 권한을 탈취당해도 www-data가 가진 권한이 매우 적기에 보안상 추천되고 있다.
하지만 이는 FTP 접속에 제한이 될 수 밖에 없는데 계정사용자가 홈디렉토리에 접속해도 소유권이 모두 www-data 이기에 업로드/수정이 불가능하게 된다.
FTP 사용에 편의를 위해서는 어떻게든 디렉토리와 파일의 소유권이 계정사용자를 포함해야 한다.
Owner 값은 id 값으로 중복될 수 없기때문에 www-data 값을 변경할 수는 없다.
Group 값은 중복될 수 있기때문에 www-data 의 group에 FTP 계정을 사용할 사용자를 추가할 수 있다.
$ sudo usermod -a -G www-data unclepapa
이 경우 기본적인 리눅스 umask 값에 의해 디렉토리 퍼미션이 755이기에 umask 값을 002로 변경하여 생성하는 디렉토리나 파일들이 775 / 664의 값을 갖도록 해야 파일의 업로드/수정이 가능해진다.
$ sudo chmod -R 775 /home/unclepapa/public_html
혹은 umask 값을 수정( 특정사용자의 umask 값을 변경하려면 ~/.bashrc 에 값을 적용)
$ sudo vi /etc/profile
umask 002