vsFTPd 설정

snowall의 이미지

vsFTPd설정하다가 삽질한게 아까워서 남겨둡니다. 누군가에게는 도움이 될지도 모르겠네요...

혹시 틀린 부분이나 필요없는 부분이 있으면 댓글 부탁드립니다. :D

참고로, 다음 글에 대한 해법입니다.
http://kldp.org/node/134760

설정 목표: 두개의 계정을 만들어서, 하나는 읽기 전용, 다른 하나는 관리자용으로 설정한다.

FTP서버 및 버전: vsFTPd 2.3.5
안내: 이 문서는 Ubuntu 12.04 LTS 서버 버전을 기준으로 작성되었다.
안내: 명령어 앞의 #는 shell의 프롬프트를 의미한다.
안내: 명령어 뒤의 & 이후는 주석을 의미한다. 따라서 &를 포함한 &이후는 입력하지 않는다.
안내: 이 문서에 나온 모든 명령어는 대/소문자를 구분한다.
안내: 모든 명령어는 특별히 언급하지 않는 한 root 권한으로 실행한다.
1. 계정 생성
A. data 계정 생성
i. #adduser data & 계정을 만든다.
ii. #passwd data & 계정의 비밀번호를 바꾼다.
B. dataadmin 계정 생성
i. #adduser dataadmin & 계정을 만든다.
ii. #passwd dataadmin & 계정의 비밀번호를 바꾼다.
C. datauser 그룹 생성
i. #addgroup datauser & 그룹을 만든다.
ii. #gpasswd datauser & 그룹의 비밀번호를 바꾼다.
iii. #gpasswd -a data datauser & datauser 그룹에 data를 추가한다.
iv. #gpasswd -a dataadmin datauser & datauser 그룹에 dataadmin을 추가한다.
v. #gpasswd ?A dataadmin datauser & datauser 그룹의 관리자를 dataadmin으로 지정한다.
2. 디렉토리 설정
A. group 파일에서 그룹 인덱스를 확인한다.
i. #vi /etc/group
ii. 가장 마지막 부분에 datauser:x:1005:data,dataadmin 과 같은 부분이 있다. 여기서 1005라는 숫자를 확인해둔다. 이 수치는 바뀔 수 있다.
iii. 내용을 확인한 후 vi편집기를 종료한다.
B. passwd 파일의 내용을 수정한다.
i. #vi /etc/passwd
ii. vi 편집기에서 data가 있는 행과 dataadmin이 있는 다음의 두 행을 찾는다.
1. data:x:1003:1003:,,,:/home/data/:/bin/bash
2. dataadmin:x:1004:1004:,,,:/home/dataadmin/:/bin/bash
iii. data 행에 있는 1003:1003을 1003:1005로 수정한다. 1003, 1005등의 수치는 바뀔 수 있다.
iv. dataadmin 행에 있는 1004:1004를 1004:1005로 수정한다. 1004, 1005등의 수치는 바뀔 수 있다.
v. data 행에 있는 /home/data/ 를 /home/./data/ 로 수정한다. 이 과정은 data 계정의 접속후 root디렉토리가 /home/data가 되도록 하기 위하여 필요하다.
vi. dataadmin 행에 있는 /home/dataadmin/ 를 /home/./data/ 로 수정한다. 이 과정은 dataadmin 계정의 접속후 root디렉토리가 /home/data가 되도록 하기 위하여 필요하다.
vii. 참고사항: 수정이 끝나면 data 행과 dataadmin 행은 다음과 같을 것이다.
1. data:x:1003:1005:,,,:/home/./data/:/bin/false
2. dataadmin:x:1004:1005:,,,:/home/./dataadmin/:/bin/false
viii. 파일을 저장 하고 vi 편집기를 종료한다.
C. data 디렉토리의 소유와 권한을 수정한다.
i. #chown dataadmin:datauser /home/data & 이 과정은 data 디렉토리를 dataadmin의 소유로 바꾸고, datauser 그룹의 소유로 귀속시킨다.
ii. #chmod 755 /home/data & 이 과정은 dataadmin 계정에게는 data 디렉토리의 읽기, 쓰기, 실행 권한을 주고 그 외에는 읽기, 실행 권한만을 준다. 디렉토리에 접근하기 위해서는 실행 권한이 필요하다.
3. vsFTPd 데몬 설치
A. #apt-get install vsftpd & 우분투의 경우이며, 다른 리눅스 배포판의 경우 적절한 명령어를 사용한다.
4. vsFTPd 데몬 설정
A. vsftpd.conf 파일을 수정한다.
i. #vi /etc/vsftpd.conf & vsftpd의 환경설정 파일을 편집한다.
ii. 다음의 옵션을 모두 활성화 시킨다.
1. listen=YES & 서버가 외부 접속에 응답하기 위하여 필요하다.
2. anonymous_enable=NO & 익명 로그인을 거부하기 위하여 필요하다.
3. local_enable=YES & 로컬에서 접속하기 위하여 필요하다.
4. write_enable=YES & 쓰기가 가능해야 하므로 필요하다.
5. local_umask=022 & 업로드 후 권한을 자동설정하기 위하여 필요하다. 777-umask=자동설정된 권한이다.
6. chroot_list_enable=YES & chroot_list 파일에 등록된 사용자는 passwd파일에서 지정된 디렉토리보다 상위로 올라갈 수 없다.
7. chroot_list_file=/etc/vsftpd.chroot_list & chroot_list 파일의 경로를 지정한다.
8. passwd_chroot_enable=YES & passwd 파일에 등록된 대로 chroot를 실행할지 결정한다.
9. local_root=/home/ & chroot를 위해 로컬 root디렉토리를 설정하는 부분이다.
10. 참고사항: vsFTPd에서는 기본적으로 chroot된 이후의 루트 디렉토리에 쓰기를 금지하고 있다. 따라서, local_root는 vsFTPd에서 실행된 chroot이고, 이때의 루트는 /home/ 으로 설정한다. passwd 파일에서는 /./ 이후에 지정된 디렉토리가 접속후 chroot의 root로 지정되고, 따라서 /home/./data/ 로 설정한다.
11. 나머지 옵션은 그대로 두어도 무방하다.
iii. 파일을 저장하고 vi 편집기를 종료한다.
B. vsftpd.chroot_list 파일을 수정한다.
i. #vi /etc/vsftpd.chroot_list & chroot를 해줄 계정을 설정하기 위하여 이 파일을 편집해야 한다.
ii. 첫번째 줄에 data 를 입력한다.
iii. 두번째 줄에 dataadmin 를 입력한다.
iv. vi 편집기를 종료한다.
v. 참고사항: 이 파일에 등록되지 않은 계정은 FTP접속이 차단된다.
5. 변경된 환경설정을 다시 불러오기 위하여 vsFTPd를 재시작한다.
A. #service vsftpd restart
B. 접속이 잘 되는지 테스트 한다.
6. 추가 설정
A. ssh 접속을 차단하고 싶은 경우 passwd 파일을 수정한다.
B. passwd 파일에서, ssh 접속을 차단하고 싶은 계정이 있는 행에서, /bin/bash 부분을 /bin/false 로 수정한다.
C. 특정 FTP 클라이언트의 경우 ssh 접속이 차단되면 아예 접속할 수 없는 경우도 있으므로 유의한다.

Forums: 
snowall의 이미지

pdf도 첨부합니다.

댓글 첨부 파일: 
첨부파일 크기
PDF icon vsftpd.pdf129.64 KB

피할 수 있을때 즐겨라! http://melotopia.net/b

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.