요즘은 리눅스에서도 다양한 파일전송수단이 있어서 FTP 를 사용하는 경우가 많이 줄어들기는 했는데, 웹서버를 운영하는 경우에는 FTP가 필요하더군요.
여기서는 vsftpd 를 이용해서 가상유저기반 FTP 서버를 구성하는 방법을 정리해보려고 합니다.
설치환경은 우분투 리눅스를 기준으로 합니다.
설치하기
vsftpd 데몬 설치
$sudo apt-get install vsftpd
패스워드체크 모듈 설치
$sudo apt-get install libpam-pwdfile
이제 관련 설정파일 생성 및 수정/추가 작업입니다.
아래 그림에서 번호 순서대로 진행합니다.
(설정파일들 관계도)
1) /etc/vsftpd.conf 설정파일 작성(수정)
$sudo vi /etc/vsftpd.conf
vsftpd.conf 파일 하단에 아래의 내용으로 추가합니다.
#가상유저 사용가능하도록 하기
guest_enable=YES
#가상유저 로그인시 실제 유저 매핑
guest_username=vsftpuser
#가상유저의 사용자권한을 로컬유저의 권한과 동일하게
virtual_user_local_privs=YES
# user id를 매핑할 문자열, local_root 에서 사용자 매핑에 사용할 문자열값을 지정합니다.
user_sub_token=$ID
# 사용자가 ftp용 홈디렉토리를 설정합니다.
local_root=/home/vsftpuser/$ID
# 유저의 가상루트 영역 제한 여부
chroot_local_user=YES
#
chroot_list_enable=YES
# ftp통신내역 로깅하기
log_ftp_protocol=YES
# 사용자 인증방법 설정
pam_service_name=vsftpd.pam.conf
2. pam 설정을 해야합니다.
이는 passwd 파일을 이용해서 인증이 되도록 하기 위함입니다.
/etc/pam.d/vsftpd 파일을 vsftp.pam.conf로 복사합니다. 해당 파일을 수정합니다.
$cd /etc/pam.d
$sudo cp vsftpd vsftp.pam.conf
$sudo vi vsftp.pam.conf
아래 내용을 파일 상단에 삽입
auth sufficient pam_pwdfile.so pwdfile /etc/vsftpd/passwd
account required pam_permit.so
3. /etc/vsftpd/passwd 파일에 사용자(user1)추가
$sudo mkdir /etc/vsftpd
$sudo htpasswd -c /etc/vsftpd/passwd user1
설정에 대한 상세한 도움말 링크
https://security.appspot.com/vsftpd/vsftpd_conf.html
4. /etc/vsftpd/users/[사용자] 설정파일 만들기
$sudo mkdir /etc/vsftpd/users
$sudo vi /etc/vsftpd/users/user1
아래 내용을 파일에 추가
guest_username=vsftpuser
설정이 끝나면 서비스를 시작합니다.(데몬모드)
$sudo service vsftpd start
또는 어플리케이션모드 실행하기
$sudo /usr/sbin/vsftpd
문제가 있을경우 아래 로그확인 방법으로 진행 상황을 확인합니다.
vsftpd 실행상태를 로그로 확인합니다.
$sudo tail -f /var/log/vsftpd.log
인증 처리 로그를 확인합니다
$sudo tail -f /var/log/auth.log