본문 바로가기

Study/라즈베리파이 공부

[라즈베리파이] Ubuntu Linux에 FTP 서버 설치

반응형

지난 시간에는 라즈베리파이에 Samba Server를 설치하는 방법에 대해서 기록했습니다. 

오늘은 FTP Server를 설치하는 방법에 대해서 기록해두고자 합니다. 

 


 

컴퓨터와 컴퓨터 사이에 파일을 교환하는 방법은 여러가지가 있겠습니다. 

아래는 대표적인 파일 교환 프로토콜들이며, 상황에 따라서 장단점을 가집니다. 

 

[Windows 공유폴더]

Windows PC와  Windows PC 사이의 파일 교환이라면 윈도우즈 공유폴더가 가장 편리합니다. 

 

[SCP]

Linux PCLinux PC 사이의 파일 교환이라면 SSH에 기반한 scp 명령으로 손쉽게 파일을 교환할 수 있겠습니다. 

 

 

[Samba Server]

서버가 Linux PC이고, 클라이언트가 Windows PC라면 Linux 서버에 SAMBA server를 구성하고, Windows PC에서 마치 공유폴더처럼 Linux PC와 파일 교환을 할 수 있겠습니다. 

 

[FTP Server]

반면 FTP 프로토콜의 경우 OS와 관련없이 Linux PC에서도 Windows PC에서도 편리하게 파일을 교환할 수 있습니다. 

Windows PC에서는 탐색기를 이용해서 ftp 서버에 접속할 수 있고, 반대로 Linux에서도 ftp 명령을 통해서 손쉽게 파일 교환이 가능한 장점이 있습니다. 

 


그럼 이제 라즈베리파이에 FTP 서버를 구성하는 방법에 대해서 설명드리겠습니다. 

 

[FTP 패키지 설치]

$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install vsftpd

위의 3가지 명령으로 ftp server 패키지를 설치할 수 있습니다.  

패키지 설치 전에 반드시 sudo apt-get update, sudo apt-get upgrade는 반드시 관용적으로 해주시기 바랍니다. 

 

$ sudo apt-get update && sudo apt-get upgrade && sudo apt-get install vsftpd

한줄에 끝내고 싶다면 위와 같이 입력해줘도 됩니다. 

 

ubuntu@ubuntu:~$ sudo apt-get install vsftpd
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
  ssl-cert
Suggested packages:
  openssl-blacklist
The following NEW packages will be installed:
  ssl-cert vsftpd
0 upgraded, 2 newly installed, 0 to remove and 3 not upgraded.
Need to get 126 kB of archives.
After this operation, 402 kB of additional disk space will be used.
Do you want to continue? [Y/n] Y
Get:1 http://ports.ubuntu.com/ubuntu-ports focal/main arm64 ssl-cert all 1.0.39 [17.0 kB]
Get:2 http://ports.ubuntu.com/ubuntu-ports focal/main arm64 vsftpd arm64 3.0.3-12 [109 kB]
Fetched 126 kB in 2s (69.0 kB/s)
Preconfiguring packages ...
Selecting previously unselected package ssl-cert.
(Reading database ... 101381 files and directories currently installed.)
Preparing to unpack .../ssl-cert_1.0.39_all.deb ...
Unpacking ssl-cert (1.0.39) ...
Selecting previously unselected package vsftpd.
Preparing to unpack .../vsftpd_3.0.3-12_arm64.deb ...
Unpacking vsftpd (3.0.3-12) ...
Setting up ssl-cert (1.0.39) ...
Setting up vsftpd (3.0.3-12) ...
Created symlink /etc/systemd/system/multi-user.target.wants/vsftpd.service → /lib/systemd/system/vsftpd.service.
vsftpd.conf:1: Line references path below legacy directory /var/run/, updating /var/run/vsftpd/empty → /run/vsftpd/empty; please update the tmpfiles.d/ drop-in file accordingly.
Processing triggers for man-db (2.9.1-1) ...
Processing triggers for systemd (245.4-4ubuntu3.4) ...
ubuntu@ubuntu:~$

중간에 Y를 한번만 입력해주면 설치가 완료됩니다. 

 

Y를 입력하는 것 마저도 귀찮다면 install 시에 -y 옵션을 붙여주면 됩니다.

$ sudo apt-get update && sudo apt-get upgrade && sudo apt-get install vsftpd -y

 

놀랍게도 이것만으로 FTP 서버 구성이 끝났습니다.

 


[FTP 서버 동작 확인]

 

다음 단계는 FTP 서버가 제대로 동작하는지 확인하는 방법입니다. 

$ sudo service vsftpd status

 

ubuntu@ubuntu:~$ sudo service vsftpd status
● vsftpd.service - vsftpd FTP server
     Loaded: loaded (/lib/systemd/system/vsftpd.service; enabled; vendor preset: enabled)
     Active: active (running) since Tue 2021-01-19 16:09:00 UTC; 8min ago
   Main PID: 72988 (vsftpd)
      Tasks: 3 (limit: 9258)
     CGroup: /system.slice/vsftpd.service
             ├─72988 /usr/sbin/vsftpd /etc/vsftpd.conf
             ├─73988 /usr/sbin/vsftpd /etc/vsftpd.conf
             └─73990 /usr/sbin/vsftpd /etc/vsftpd.conf

Jan 19 16:14:39 ubuntu vsftpd[73977]: pam_unix(vsftpd:auth): Couldn't open /etc/securetty: No such file or directory
Jan 19 16:14:39 ubuntu vsftpd[73977]: pam_unix(vsftpd:auth): check pass; user unknown
Jan 19 16:14:39 ubuntu vsftpd[73977]: pam_unix(vsftpd:auth): authentication failure; logname= uid=0 euid=0 tty=ftp ruser=anonymous rhost=::ffff:192.168.25.3
Jan 19 16:14:43 ubuntu vsftpd[73982]: pam_unix(vsftpd:auth): Couldn't open /etc/securetty: No such file or directory
Jan 19 16:14:43 ubuntu vsftpd[73982]: pam_unix(vsftpd:auth): check pass; user unknown
Jan 19 16:14:43 ubuntu vsftpd[73982]: pam_unix(vsftpd:auth): authentication failure; logname= uid=0 euid=0 tty=ftp ruser=anonymous rhost=::ffff:192.168.25.3
Jan 19 16:14:55 ubuntu vsftpd[73985]: pam_unix(vsftpd:auth): Couldn't open /etc/securetty: No such file or directory
Jan 19 16:14:55 ubuntu vsftpd[73985]: pam_unix(vsftpd:auth): Couldn't open /etc/securetty: No such file or directory
Jan 19 16:14:56 ubuntu vsftpd[73988]: pam_unix(vsftpd:auth): Couldn't open /etc/securetty: No such file or directory
Jan 19 16:14:56 ubuntu vsftpd[73988]: pam_unix(vsftpd:auth): Couldn't open /etc/securetty: No such file or directory

위의 명령을 통해서 FTP 서비스가 제대로 동작하고 있는 것을 확인할 수 있습니다. 

Active: active (running) 이라는 부분을 보시면 알 수 있듯이, 정상적으로 activated된 상태이고, running 중입니다. 

 

$ sudo systemctl status vsftpd

혹은 systemctl 명령으로도 확인할 수 있습니다. 

입맛에 맞춰서 좀 더 편리하신 명령을 사용하시면 됩니다. 

 


[FTP 서버 접속 테스트]

 

이제 FTP 서버 접속 테스트를 해보겠습니다. 

윈도우즈 탐색기에서 주소에 아래와 같이 입력합니다. 

제 라즈베리파이의 IP가 192.168.25.2 이므로 저는 아래와 같이 입력했습니다. 

ftp://192.168.25.2

 

 

 

 

주소를 입력후에 엔터키를 누르면 아래와 같이 ID와 PW를 입력할 수 있는 창이 뜨게 됩니다. 

 

 

 

ID와 Password를 입력하고 "로그온" 버튼을 클릭하면 됩니다. 

 

 

 

 

접속이 허가되면 위의 화면과 같이 저의 홈디렉토리 안에 있는 파일들이 표시됩니다. 

근데 아쉽게도 이것이 전부가 아닙니다. 

FTP 서버로부터 파일을 다운로드할 수는 있지만, FTP 서버로 파일을 업로드할 수는 없습니다.

 

 

 

이런 현상이 발생하는 이유는 기본적인 설정파일자체의 보안성을 높여놨기 때문입니다. 

read 권한은 있지만 write 권한은 없기 때문입니다. 
조금 성가실 수 있겠지만 네트웍에서는 보안성이라는 부분이 상당히 중요합니다. 
설정파일을 변경하면 되므로 너무 낙심하지 마시고 계속 이 기록을 읽어주세요.

 

 


 

[FTP 서버 설정파일 변경]

 

그렇다면 지금부터는 설정파일을 변경하여 write 권한을 부여하도록 하겠습니다. 

실제로 config 파일을 편집하기에 앞서서 기본 설정파일은 백업해두겠습니다.

$ sudo cp /etc/vsftpd.conf /etc/vsftpd_default.conf

 

선호하는 편집기를 이용해서 vsftpd.conf 파일을 편집해보도록 하겠습니다.

$ sudo vi /etc/vsftpd.conf

 

write_enable이 주석처리되어 있는 것을 확인하실 수 있습니다.

# Allow anonymous FTP? (Disabled by default).
anonymous_enable=NO
#
# Uncomment this to allow local users to log in.
local_enable=YES
#
# Uncomment this to enable any form of FTP write command.
#write_enable=YES
#
# Default umask for local users is 077. You may wish to change this to 022,
# if your users expect that (022 is used by most other ftpd's)
#local_umask=022

 

주석처리된 write_enable 설정을 주석해제합니다.

# Allow anonymous FTP? (Disabled by default).
anonymous_enable=NO
#
# Uncomment this to allow local users to log in.
local_enable=YES
#
# Uncomment this to enable any form of FTP write command.
write_enable=YES
#
# Default umask for local users is 077. You may wish to change this to 022,
# if your users expect that (022 is used by most other ftpd's)
#local_umask=022

 

변경사항을 저장하고 종료한 이후에 아까 백업해둔 기본 설정파일로부터 어떤 부분이 변경되었는지 한번 더 체크해보겠습니다.

$ diff /etc/vsftpd.conf /etc/vsftpd_default.conf

 

변경사항을 살펴봤더니 우리가 원하던대로 write_enable 설정의 주석만 해제되었네요. 

ubuntu@ubuntu:~$ diff /etc/vsftpd.conf /etc/vsftpd_default.conf
31c31
< write_enable=YES
---
> #write_enable=YES

 

이제 FTP 서비스를 재시작 시켜줄 시간입니다. 

$ sudo service vsftpd restart

 

서비스 재시작 이후에는 파일 업로드도 가능한 것을 확인하실 수 있습니다.

 

 

제가 업로드하려고했던 그림파일이 정상적으로 올라갔네요. 

 


[끝맺음말]

 

이것으로 라즈베리파이에 FTP 서버를 구성하는 방법에 대한 설명을 모두 마칩니다. 

궁금한점이 있으시면 댓글로 문의주시면 감사하겠습니다. 

 

이상입니다. 

 

오만뒤 작성

반응형