출처 : http://egloos.zum.com/sakuragis/v/5740235
pogoplug를 구입하고 가장 먼저 한 작업이기도 한데, 어영부영 시간이 지나다보니 포스팅이 늦어졌다. 더 미루다가는 아예 포스팅을 하지 못할 것 같아서 간단하게라도 적어두려고 한다.
vsftpd를 설치하고 지인에게 ftp 주소와 계정을 알려주려고 하다보니, 계정별 권한 관리가 필요하게 되었다. 여기서 얘기하는 권한은 두 가지이다.
- 해당 계정이 home 디렉토리보다 상위로 접근할 수 없을 것
- 해당 계정으로 파일 업로드(STOR), 파일 삭제(DELE), 디렉토리 생성(MKDIR, MKD, XMKD), 디렉토리 삭제(RMD, XRMD)를 할 수 없을 것
검색을 하다 보니 Virtual User 설정에 관해서 복잡해 보이는 설정 법을 찾을 수 있었는데, 적용해 보려니 생각처럼 쉽지 않았다. 그렇게 이런 저런 키워드로 검색하다가 찾은 것이 바로 계정 별 chroot 설정과 계정 별 cmds_allowed 설정이었다.
첫 번째로 chroot 설정은 /etc/vsftpd.chroot_list 라는 파일을 만들고, home 디렉토리보다 상위로 접근할 수 있는(allow) 계정을 적어준다.
user1
user2
user3
이렇게 적어주면 user1, user2, user3 계정이 home 디렉토리 보다 상위로 접근할 수 있게 된다.
설정은 여기서 끝나는 것이 아니고 chroot에 관한 설정을 /etc/vsftpd.conf에 적용해 주어야 한다. 그 설정은 아래와 같다. #으로 시작하는 부분은 주석이고 굵게(bold) 표시된 부분만 설정 해 주면 된다. chroot_list_file=에 적어준 /etc/vsftpd.chroot_list는 앞서 만들어 준 파일 이름으로 달리 원하는 파일 이름이 있으면 원하는 파일 이름으로 변경해주어도 된다.
You may restrict local users to their home directories. See the FAQ for
# the possible risks in this before using chroot_local_user or
# chroot_list_enable below.
chroot_local_user=YES
#
# You may specify an explicit list of local users to chroot() to their home
# directory. If chroot_local_user is YES, then this list becomes a list of
# users to NOT chroot().
chroot_list_enable=YES
# (default follows)
chroot_list_file=/etc/vsftpd.chroot_list
두 번째로 cmds_allowed 설정은 chroot 설정과 유사한 방식으로 적용해 주면 되는데, 우선 vsftpd에서 권한을 관리할 디렉토리를 하나 만들어 준다. 나는 /etc/vsftpd_user_conf 라는 이름으로 디렉토리를 생성했다. 그리고 나서 별도로 관리 할 계정의 이름으로 파일을 하나 생성한다. 파일명은 이미 존재하는 계정의 이름으로 생성해야 한다. 이렇게 설정된 파일명과 동일한 이름의 계정에 관해서 별도의 설정이 적용되고, 나머지 계정에 대해서는 기본(default) 설정이 적용된다.
/etc/vsftpd_user_conf 디렉토리 안에 ftp라는 파일을 아래와 같은 내용으로 생성해준다. 이는 ftp라는 이름의 계정에 관한 설정이 된다.
cmds_allowed=ABOR,ACCT,ALLO,APPE,CDUP,CWD,EPRT,EPSV,FEAT,HELP,LIST,MDTM,MODE,NLST,NOOP,
OPTS,PASS,PASV,PORT,PWD,QUIT,REIN,REST,RETR,RNFR,RNTO,SITE,SIZE,SMNT,STAT,STOU,STRU,SYST,
TYPE,USER,XCUP,XCWD,XPWD
user_config_dir=/etc/vsftpd_user_conf
이는 사용자별로 설정을 따로 관리하겠다는 의미로 user_config_dir에 지정한 디렉토리 안에 있는 파일명과 동일한 계정에 별도의 권한 및 설정을 적용하겠다는 의미이다.
이렇게 하고 지인에게 해당 서버의 ip 혹은 domain과 계정명(ftp)을 알려주면 된다. 그러면 해당 계정은 ftp에 파일을 업로드 하거나 디렉토리를 추가/삭제할 수 없게 된다.
만약에 지인에게 외장 하드로만 접근 하게 하고 싶다면 해당 내용이 자세하게 설명된 comta.kr의 ftp 관련 강좌를 참고하길 바란다.
'프로그램개발 > Linux(Apache.vim)' 카테고리의 다른 글
wget 전체 웹사이트 다운 받기 (0) | 2018.11.05 |
---|---|
아파치 최적화 같은것도 개발자가 다 해야되나요? (0) | 2018.10.15 |
서버 성능측정 (벤치마크 방법) (0) | 2018.09.20 |
[참고] crontab 50초마다 실행시 (0) | 2018.09.06 |
VIM에서 Vundle 사용하기 (0) | 2018.05.18 |