2015년 11월 10일 화요일

CentOS 7 vsftp설정

1. centos를 설치 후 yum으로 전체 시스템을 update한다.
# yum update -y

2. vsftpd가 설치되어 있는지 확인한다.
# yum list installed vsftpd

3. vsftpd가 설치되어 있지 않으면 vsftpd를 설치한다.
# yum install vsftpd -y

4. yum으로 vsftpd 업데이트
# yum update vsftpd

5. /etc/vsftpd/vsftpd.conf 파일 수정정
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 로컬계정 사용자의 접속허용여부
local_enable=YES
# 쓰기(upload) 허용여부
write_enable=YES
local_umask=022
dirmessage_enable=YES
# 파일전송 결과 로깅 여부
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES

 6. systemctl 명령어로 vsftpd를 시작/중지/상태확인한다.
# systemctl status vsftpd.service <– vsftpd 상태확인
# systemctl start vsftpd.service <– vsftpd 시작
# systemctl stop vsftpd.service <– vsftpd 중지
# systemctl restart vsftpd.service <– vsftpd 재시작

7. yum으로 ftp client설치
# yum install ftp -y

8. vsftpd 자동실행
# systemctl enable vsftpd.service

** 에러처리
A. # systemctl restart vsftpd.service 명령어로 vsftpd서버를 시작할때 Job for vsftpd.service failed. See ‘systemctl status vsftpd.service’ and ‘journalctl -xn’ for details. 라는 메세지가 나온다면 vsftpd.conf설정파일에 문제가 있어서 발생하는 경우가 있다, 예를 들어 잘못된 키워드가 있다던가 특수 문자가 편집중에 입력이 되었을 경우.
B. vsftpd 서버에 접속하여 파일을 업로드하거나 다운로드할 때 550 Failed to open file. 라는 메세지가 나올 경우가 있다. 이는 SELinux의 보안 정책에 의해 업로드/다운로드 할 수 없을 경우이다. SELinux를 비활성화 하고 서버를 재부팅하면 파일 업로드/다운로드를 할 수 있다.
– SELinux 비활성화 방법
/etc/selinux/config 파일을 열어서 SELINUX=enforcing 를 SELINUX=disabled로 변경후 재부팅 하고 다시 활성화 하려면 SELINUX=enforcing으로 변경하고 리눅스 시스템을 재부팅 한다.
– SELinux 상태보기
sestatus
getsebool -a | grep ftp
C. 로컬에서 vsftpd서버에 접속해서 업로드/다운로드가 잘 되는데 원격에서는 접속조차 되지 않는 경우가 있다. 이는 firewalld 방화벽 때문일수도 있다. firewalld가 실행중인지 확인하고 실행중이라면 firewalld를 중지하고 원격에서 vsftpd서버에 접속해 본다.
— firewalld 실행 상태 확인
# systemctl status firewalld.service
— firewalld 중지
# systemctl stop firewalld.service
— firewalld 자동중지(시스템시작시 자동시작 안함)
# systemctl disable firewalld.service

출처-- http://blog.iotinfra.net/?p=734 에서 옮김.

위의 내용중 550 error인경우는
나는 무시했는 데  발생하더라....
위와 같이 하지 않으면
selinux 설정 변경(꼭 -P 옵션을 붙임)
# setsebool -P ftp_home_dir=1
# setsebool -P ftp_home_dir on
# setsebool -P allow_ftpd_full_acess on처

출처-- http://shuiky.tistory.com/83 참조


#방화벽 21번 포트개방
#systemctl status firewalld.service
#firewall-cmd --permanent --add-port=21/tcp
#firewall-cmd --reload
출처--http://blog.naver.com/knut1031/220948465825


위에서 설명한  /etc/vsftpd/vsftpd.conf 파일은 나의 경우는 다음과 같다
anonymous_enable=NO
listen=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
listen_port=포트번호1
port_enable=YES
pasv_enable=YES
pasv_min_port=포트번호2
pasv_max_port=포트번호3
local_enable=YES
write_enable=YES

다른 글과 달리 비교적 자세히 빼껴놓은 편인데
별로 어렵지 않은 내용임에도 계속 실패를 했었는데
원인이 포트적용이 제대로 되지 않은 탓인경우도 있었고
vsftpd.conf설정이 잘못된 경우였기 때문에
처음 하시는 분들은 참고 바랍니다.




댓글 3개:

  1. vsftpd 디렉터리 목록 조회 실패
    ==>
    FTP는 제어 채널과 데이터 채널이 따로 있었습니다. 제어 채널은 보통 21번 포트, 데이터 채널은 서버에서 지정해준 포트를 쓰는데 방화벽에서 데이터 채널 포트 범위를 막고 있었던 게 원인이었습니다.
    먼저 포트 범위를 확인하고 방화벽에서 INBOUND 정책을 설정해주면 해결됩니다.

    원문:http://forum.falinux.com/zbxe/index.php?document_srl=879541&mid=lecture_tip

    답글삭제
  2. 553 Could not create file==>업로드 할 공간에대한 permission denied 문제
    chown -R ftpusername /var/www/html

    원문 http://forum.falinux.com/zbxe/index.php?document_srl=879541&mid=lecture_tip


    답글삭제
  3. ftp로 파일 업로드시 기본 파일권한 바꾸기

    #nano /etc/vsftpd/vsftpd.conf
    local_umask=001
    file_open_mode=0644



    원문 : http://blog.work6.kr/65

    답글삭제

vsftpd FTP 서버 접속은 성공하였으나, "디렉토리 목록 조회 실패" 현상 발생시

FTP Passive 모드를 활성화 필요. 1. vsftpd 설정 변경 /etc/vsftpd/vsftpd.conf 상에 아래 내용 추가 기입 #passive modpasv_enable=YES pasv_min_port=5001 pasv...