Skip to content
TUWLAB.com
TUW
조회 수 14487 댓글 0
Atachment
첨부 '2'

vsFTP에서 최초 설치시 모든 계정의 FTP 루트 디렉토리가 실제 시스템의 루트 디렉토리와 같도록 설정되어 있습니다. 즉, FTP상에서 보이는 최상위 디렉토리가 시스템의 루트 디렉토리와 같습니다.

root.png

이렇게 사용하면, 한 개 혹은 소수의 계정을 가지고 서버를 혼자 사용하는 경우는 크게 문제가 되지 않겠지만, 여러 사람이 서버를 함께 사용하는 경우 보안상의 문제가 발생할 수 있습니다.

꼭 다중 사용자가 아니더라도, 사용할 기능별로 계정을 달리 설정하는 것이 유지관리나 미관상(?)으로도 좋을 것입니다.

리눅스에서는 계정별로 쉘에 표시되는 홈 디렉토리를 서로 다르게 보이도록 하는 명령어인 chroot를 제공하고 있습니다. 이와 비슷한 기능을 vsFTP에서도 제공합니다.

이 글에서는 각 계정의 FTP 루트 디렉토리를 각 계정의 홈 디렉토리로 한정하는 방법을 다루도록 하겠습니다.


FTP에 Chroot 적용하기

vsftpd.conf의 다음 부분을 찾아서 주석을 제거하고 저장합니다.

chroot_local_user=YES

FTP 데몬을 재시작해준다.

sudo service vsftpd restart

다음과 같이 FTP 접속시 표시 가능한 최상위 디렉토리가 홈 디렉토리로 한정된 것을 확인할 수 있습니다.

chroot.png


'vsftpd: refusing to run with writable ...' 오류 해결

위와 같이 설정을 바꿨는데, 간혹 FTP 접속이 아예 이루어지지 않는 경우가 있습니다.

이는 홈 디렉토리에 쓰기 권한이 허용되어 있어서 발생하는 문제로, 홈 디렉토리의 쓰기 권한(w)를 모두 해제해주면 간단히 해결됩니다.

sudo chmod a-w /home/foo_user

무슨 이유인지는 잘 모르겠지만, vsFTP뿐만이 아니라 다른 FTP 데몬에서도 FTP 루트 디렉토리에 쓰기를 허용하지 않고 있습니다.

권한이 없어서가 아니라 있어서 문제가 발생한다니, 약간 이해가 가지 않는 대목이기도 하지만 무엇인가 이유가 있었을거라 생각해 봅니다.

루트 쓰기를 허용하기 위한 옵션으로 allow_writ(e)able_(ch)root=YES로 설정하면 된다는 말도 있지만, 직접 해 본 결과 환경설정 오류로 인해 아예 FTP 접속이 되지 않는 문제만 발생했습니다. 이 환경설정 옵션은 vsFTP 매뉴얼에서 나와 있지 않습니다.

FTP를 통해 홈디렉토리 루트에 직접 쓸 수 없으니, 필요한 디렉토리는 root계정을 이용해 직접 생성해 주어야 합니다.


규칙 예외 지정하기

root와 같은 일부 계정에는 홈디렉토리가 아닌 실제 루트 디렉토리를 FTP의 루트 디렉토리로 표시해 줄 필요가 있습니다.

vsFTP에서는 이를 위해 예외 리스트를 만들고 적용하는 방법을 제공하며, 역시 vsftpd.conf에서 지정할 수 있습니다.

vsftpd.conf에서 다음 두 줄의 주석을 삭제하고, /etc/vsftpd.chroot_list 파일을 다음과 같이 작성합니다.

chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list

root
(그 외 설정을 적용할 ID를 나열한다.)

이렇게 하면 root 계정에 한해서 FTP에 접속할 때 실제 루트 디렉토리를 보여주게 됩니다.

단, chroot_local_user=YES를 지정하지 않은 경우, chroot_list_file에 있는 계정에 한해서 루트 디렉토리로 홈 디렉토리를 보여주게 됩니다. 즉, chroot_local_user의 설정값에 따라서 chroot_list_file의 동작 방식이 반대로 바뀌는 것입니다.


연관글
  1. [2012/12/27] [vsFTP] 생성 파일 기본 권한 설정하기 (11529)
  2. [2011/08/30] [vsFTP] 설치 및 설정하기 (10253)
서비스 선택
이용중인 SNS 버튼을 클릭하여 로그인 해주세요.
SNS 계정을 통해 로그인하면 회원가입 없이 댓글을 남길 수 있습니다.
댓글
?
Powered by SocialXE

List of Articles
번호 분류 제목 글쓴이 최근 수정일 조회 수
48 Linux [Ubuntu] 원격 Shell에서 로그인 사용자 디스플레이에 GUI 프로그램 실행하기 TUW 2016.03.06 1116
47 Linux Root권한 없이 Wireshark 사용하기 file TUW 2016.07.05 839
46 Linux fstab과 sshfs fuse를 활용한 원격 디렉토리 자동 마운트하기 TUW 2016.01.11 3889
45 Linux 한글 입력기 나비(Nabi)에서 한/영 키가 인식되지 않는 경우 file TUW 2015.06.12 730
44 Linux [VirtualBox] 가상머신 Windows 7 에서 Aero 기능 활성화하기 file TUW 2015.05.30 1441
43 Linux [VirtualBox] Windows 7 물리 디스크 부팅 (Raw Disk Booting or Native Booting) - 방법 1 file TUW 2015.10.08 1559
42 Linux [VirtualBox] Windows 7 물리 디스크 부팅 (Raw Disk Booting or Native Booting) - 배경 file TUW 2015.05.30 1551
41 Linux [Linux] Screen 터미널 에뮬레이션 프로그램 사용하기 TUW 2015.08.19 1479
40 Linux Intelli Backup: File system 및 Database 백업 자동화 Bash 스크립트 TUW 2014.12.19 2334
39 Linux [Linux] Sudo 명령의 Secure Path TUW 2015.04.24 2353
38 Linux [Linux] fdisk 활용 외: 파티션 생성, 배드블록 검사, 파일시스템 생성 TUW 2015.04.24 4250
37 Linux TCPDump를 활용하여 패킷 모니터링하기 TUW 2014.10.28 3155
36 Linux [ColorGCC] 컴파일 경고 및 오류메시지 컬러로 출력하기 file TUW 2014.04.24 8044
35 Linux Linux 루트 디렉토리 구성 TUW 2015.09.20 10387
34 Linux SSHFS를 활용한 원격 디렉토리 마운트 TUW 2014.04.24 8772
33 Linux Ubuntu에서 Global Menu Bar 해제하기 TUW 2014.04.24 11380
목록
Board Pagination Prev 1 2 3 Next
/ 3

Powered by Xpress Engine / Designed by Sketchbook

sketchbook5, 스케치북5

sketchbook5, 스케치북5