본문 바로가기
RaspberryPi

ftp 서버 만들기

by 미사사 고라쿠 2017. 11. 27.

어디서든

라즈베리파이의 하드디스크에 파일을 업로드/다운로드 하기 위해서는

ftp 설정이 필요하다.

ftp (File Transfer Protocol) : 파일 upload/download 를 위한 방식이다.


라즈베리파이에 ftp 설치하기. 일반적인 ftp 프로그램으로 vsftpd를 이용한다.

$ sudo apt-get install vsftpd

를 실행하여 vsftpd(ftp 서버 프로그램)을 설치한다.

$ sudo nano /etc/vsftpd.conf 를 실행하여

 local_enable = YES : 이 줄의 앞에 있는 # 을 제거하면 된다.

 write_enable = YES


anonymous_enable=Yes # 어느 user 이든 모든 상위디렉토리까지 전부 허용한다.

anonymous_enable=No # 어느 user 이든 모든 상위디렉토리까지 전부 허용하지 않고, 본인 디렉토리만 허용한다.

편리하게 Yes를 사용하면 된다.


chroot_local_user=YES

일 경우 chroot_list_file에 유저를 기록해 줘야한다.

500 OOPS: could not read chroot() list file:/etc/vsftpd.chroot_list



vsftpd.conf 파일을 변경하면 서비스를  재실행하여야, 옵션이 적용된다.


sudo service vsftpd restart # 서비스 재 실행 명령


그런다음 아래와 같이 접속해 보니

접속이 잘 되었다.

아래처럼

ftp 전용 프로그램을 통한 업.다운로드가 가능하다.


ftp 크라이언트 프로그램으로는

파일질라가 유명하다.


위 이미지에서 한글 파일명이 제대로 표시되지 않고 있는데

제대로 한글파일명을 보기 위해서는




문자셋을 위와 같이 변경해 주면 된다.


업로드를 해보니

에러가 발생했다. 치명적인 전송오류 라는 메시지와 함께...

---

에러 발생 원인은 /etc/vsftpd.conf 파일 설정 때문이다.

---

/etc/vsftpd.conf 파일 설정 후에

reboot 했더니 파일삭제 업로드 등이 잘 되었다.


외장 하드가 자동으로 연결된 곳은

/media/이  위치....에 마운트 되어 있다.


다시보니 아래는 불필요한 것 같다.


/home/pi/ 디렉토리로는 업로드가 되는데

현재 마운트 되어 있는

/media/pi/외장하드이름/ 이곳으로 업로드가 되지 않았다.

아마도 권한이 없어서 그런 거 같다.


그래서

1 step : ntfs 포맷 방식을 인식할수 있도록 해 준다/

2 step : /home/exhdd(임의의 dir이름)으로 마운트 해준다.

3 step : 부팅될때마다 자동마운트 되도록 변경해준다.


1step : sudo apt-get install ntfs-3g

2step : mount -t  

$sudo mkdir /mnt/exhdd #마운트할 폴더 생성

$sudo mount -t ntfs -o uid=pi,gid=pi /dev/sda1 /mnt/exhdd  #마운트합니다.


3step
$sudo nano /etc/fstab
이곳에 아래 문장 추가한다
/dev/sda1 /mnt/usb1 ntfs defaults,uid=1000,gid=1000 0 0


rebooting 했더니 잘 된다.


upload 에러 발생 (/home/pi 가 아닌 media/pi 에 업로드 할 경우 발생, 즉 /home/pi에 업로드 할 경우 문제 없다)

명령: STOR Game.of.Thrones.S01E10.smi

응답: 553 Could not create file.

오류: 치명적인 파일 전송 오류

상태: 서버와의 연결이 종료됨


이 에러는 아마도 다른 디렉토리에 대해 write 권한이 없어서 그럴 것이다. 

해결책은 ???





접속은 되는데 여러 에러가 되는 이유

(에러는 업로드 에러, 삭제 등이 않되는 경우) 

대부분 권한이 없기 때문이다. 

따라서 이러한 문제를 해결 하기 위해서는 

본 블로그의 --> ftp 서버와 외장하드(usb 포함) 마운트 방법
을 참고하면 된다.

연결된 hdd, usb 를 언마운트하고
새로 마운트를 해주면 되는 것이다.