우분투 FTP 서버 설치와 구성 - ubuntu vsftpd

vsftpd는 리눅스 운영체제에서 많이 사용하는 간편한 FTP 서버입니다. 가볍게 동작하고 구성도 쉬운편입니다. sftp 사용이 여의치 않거나 조금 더 본격적인 FTP 서버가 필요할 때 사용을 권장합니다.

1. vsftpd 패키지 설치

apt로 설치합니다. 패키지 크기도 작습니다.

sudo apt-get install vsftpd

2. 환경설정 수정

vi 에디터로 vsftpd 설정 파일을 수정합니다.

vsftpd 환경 설정 파일은 /etc/vsftpd.conf 입니다.

sudo vi /etc/vsftpd.conf

주로 사용하는 환경설정 항목들은 다음과 같습니다. vsftpd 설정 항목 중에서 다음 행들을 찾아서 앞의 "#"을 제거해 항목을 활성화합니다.

listen=YES
listen_ipv6=NO
anonymous_enable=NO
port_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
use_localtime=YES
xferlog_enable=YES
chroot_local_user=YES
allow_writeable_chroot=YES
secure_chroot_dir=/var/run/vsftpd/empty

write_enable은 업로드 및 쓰기를 켜는 것입니다. 첫 6개 설정 항목은 대부분의 경우 필수로 사용하도록 켜야 하는 옵션 항목입니다.

패시브 모드 접속을 허용하려면 다음 항목 앞의 "#"을 제거해 항목을 활성화 해야 합니다. 항목이 없으면 추가합니다. 대부분 방화벽 환경 안에서 FTP 서버를 운영하기 때문에 패시브 모드로 접속할 때는 패시브 모드로 접속하는 포트를 제한해야 방화벽을 설정하고 운영하기가 편합니다.

pasv_min_port, pasv_max_port 항목으로 패시브 모드 포트 범위를 한정합니다. 다음 설정은 패시브모드로 5000~5005 사이의 포트로 접속하도록 하는 설정입니다.

pasv_enable=YES
pasv_min_port=5000
pasv_max_port=5005

계정 홈이 아닌 다른 경로를 FTP 홈으로 사용할 경우 다음과 같이 FTP 사이트 루트 경로를 명시해야 합니다.

local_root=ftp_home_path_here

3. vsftpd 서비스 재실행

vsftpd.conf 환경 설정을 수정한 후에는 서비스를 재실행해야 환경 설정 변경이 적용됩니다.

sudo service vsftpd restart

4. FTP 용 우분투 계정 추가

FTP로 사용할 계정을 하나 추가하고 패스워드 설정을 합니다. ㅜ무ㅐ보안상 FTP로 접근하는 계정은 루트 계정이 아닌 별도의 계정을 만들어서 사용하는 것이 좋습니다.

계정 추가

sudo useradd apost

패스워드 설정

sudo passwd apost

5. FTP 폴더 생성 및 권한 설정

FTP 루트로 사용할 폴더를 정합니다. 폴더가 없으면 새로 만든 후

mkdir ftpsite

새로 만든 디렉토리(ftpsite)의 소유 권한을 새로 만든 FTP 계정으로 변경합니다.

계정 홈 폴더가 아닌 경우 소유 권한을 부여하지 않으면 vsftp 설정에서 쓰기 옵션을 켰어도 권한이 없어서 업로드(삭제)를 할 수 없습니다.(계정 홈 이하 폴더를 FTP 루트로 사용하면 필요 없음)

sudo chown apost:apost /var/www/ftpsite

6. 동작 확인

ftp 클라이언트로 접속해서 파일 업로드 다운로드가 잘 되는지 확인합니다. 디렉토리 리스팅까지 되어야 합니다. 중간에 에러가 발생하면 다음 에러상황 대처 방법을 보고 vsftpd.conf 파일 옵션 변경을 하거나, 방화벽 설정을 변경해야 합니다.

7. 에러 상황 대응하기

refusing to run with writable root inside chroot() 에러

FTP 접속을 하면 로그인은 되지만 "vsftpd: refusing to run with writable root inside chroot()"와 같은 에러베시지가 표시되고 FTP 서버에 접속하지 못하는 경우 다음 설정 항목을 "YES"로 설정해야 합니다.

속성 항목을 vsftpd.conf 파일에 추가해주면 됩니다.

allow_writeable_chroot=YES

소유자 접근 권한 에러와 소유권 변경

소유자 권한이 없어서 업로드한 파일에 접근할 수 없을 경우, 업로드하는 파일의 소유자 권한을 변경할 수 있습니다. vsftpd.conf 파일에서 다음 2가지 옵션 항목을 주석을 해제(# 제거), 또는 추가해주면 됩니다.

ftp_account에는 실제 사용하는 FTP 계정을 입력해야 합니다.

chown_uploads=YES
chown_username=ftp_account

업로드한 파일의 접근 권한이 600(-rw-——)으로 설정되는 경우

vsftpd.conf 파일의 다음 옵션의 주석을 해제(# 제거)하면 됩니다.

local_umask=022

기본 권한 마스크 값은 077이기 때문에 업로드한 파일은 600(666 - 066)이 됩니다. umask 옵션을 따로 설정해야 업로드하는 파일의 권한을 변경할 수 있습니다.

022는 666 - 022를 해서 644(rw-r– r--)로 파일 권한이 설정됩니다.

  • 폴더는 777 - umask값
  • 파일은 666 - umask값