파일 전송을 위한 프로토콜
$ sudo apt-get install vsftpd $ sudo vim /etc/vsftpd.conf
아래 세군데 주석해제 후 아래와 같이 수정
anonymous_enable = NO local_enable = YES write_enable = YES
그 뒤 vsftpd 재시작
$ sudo /etc/init.d/vsftpd restart
/etc/vsftpd.conf 에서 다음 부분 수정
local_root=/home/
다음 글에 대한 해법이다.1)
설정 목표 : 두개의 계정을 만들어서, 하나는 읽기 전용, 다른 하나는 관리자용으로 설정한다.
계정을 만든 후 계정의 비밀번호를 바꾼다.
$ adduser seminar
$ passwd seminar
마찬가지
$ adduser seminaradmin
$ passwd seminaradmin
$ addgroup seminaruser $ gpasswd seminaruser $ gpasswd -a seminar seminaruser // seminaruser 그룹에 seminar를 추가한다. $ gpasswd -a seminaradmin seminaruser // seminaruser 그룹에 seminaradmin을 추가한다. $ gpasswd –A seminaradmin seminaruser // seminaruser 그룹의 관리자를 seminaradmin으로 지정한다.
$ vi /etc/group
가장 마지막 부분의 다음 내용 확인
seminaruser:x:1005:seminar,seminaradmin
여기서 1005라는 숫자를 확인해둔다. 이 수치는 바뀔 수 있다. 내용을 확인한 후 vi편집기를 종료한다.
$ vi /etc/passwd
seminar가 있는 행과 seminaradmin이 있는 다음의 두 행을 찾는다.
seminar:x:1003:1003:,,,:/home/seminar/:/bin/bash seminaradmin:x:1004:1004:,,,:/home/seminaradmin/:/bin/bash
그 후 아래와 같이 수정한다.
참고사항 : 수정이 끝나면 seminar 행과 seminaradmin 행은 다음과 같을 것이다.
seminar:x:1003:1005:,,,:/home/./seminar/:/bin/false seminaradmin:x:1004:1005:,,,:/home/./seminaradmin/:/bin/false
파일을 저장 하고 vi 편집기를 종료한다.
seminar 디렉토리를 seminaradmin의 소유로 바꾸고, seminaruser 그룹의 소유로 귀속시킨다.
$ chown seminaradmin:seminaruser /home/seminar
그 후 seminaradmin 계정에게는 seminar 디렉토리의 읽기, 쓰기, 실행 권한을 주고 그 외에는 읽기, 실행 권한만을 준다. 디렉토리에 접근하기 위해서는 실행 권한이 필요하다.
$ chmod 755 /home/seminar
$ apt-get install vsftpd
$ vi /etc/vsftpd.conf
그 후 다음의 옵션을 모두 활성화 시킨다.
listen=YES // 서버가 외부 접속에 응답하기 위하여 필요하다. anonymous_enable=NO // 익명 로그인을 거부하기 위하여 필요하다. local_enable=YES // 로컬에서 접속하기 위하여 필요하다. write_enable=YES // 쓰기가 가능해야 하므로 필요하다. local_umask=022 // 업로드 후 권한을 자동설정하기 위하여 필요하다. 777-umask=자동설정된 권한이다. chroot_list_enable=YES // chroot_list 파일에 등록된 사용자는 passwd파일에서 지정된 디렉토리보다 상위로 올라갈 수 없다. chroot_list_file=/etc/vsftpd.chroot_list // chroot_list 파일의 경로를 지정한다. passwd_chroot_enable=YES & passwd 파일에 등록된 대로 chroot를 실행할지 결정한다. local_root=/home/ // chroot를 위해 로컬 root디렉토리를 설정하는 부분이다.
참고사항 : vsFTPd에서는 기본적으로 chroot된 이후의 루트 디렉토리에 쓰기를 금지하고 있다. 따라서, local_root는 vsFTPd에서 실행된 chroot이고, 이때의 루트는 /home/ 으로 설정한다. passwd 파일에서는 /./ 이후에 지정된 디렉토리가 접속후 chroot의 root로 지정되고, 따라서 /home/./seminar/ 로 설정한다. 나머지 옵션은 그대로 두어도 무방하다.
편집을 마친 후 파일을 저장하고 vi 편집기를 종료한다.
chroot를 해줄 계정을 설정하기 위한 편집.
$ vi /etc/vsftpd.chroot_list
다음 내용을 가장 위에 입력 후 저장한다.
seminar seminaradmin
이 파일에 등록되지 않은 계정은 FTP접속이 차단된다.
$ service vsftpd restart
접속이 잘 되는지 테스트 한다.
방화벽 문제일수도 있으나 처음 우분투 서버 설치 후 vsftpd를 설치한 경우라면 그럴리 없다. apt-get –purge remove
로 vsftpd 지우고 다시 설치했더니 되더라. 처음엔 왜 접속이 안됐던거지?