본문 바로가기
컴퓨터사용

Ubuntu Linux_vsftpd에 사용자별 루트 사용하도록 하기!

by 비손 2013. 4. 2.

Ubuntu Server 12.04, 64bit 버전을 기준으로 작업한 내용입니다.

vsftpd는 2.3.5-1ubuntu2 라고 나오네요


하고자 하는 작업은 단순합니다.

user1이라는 사용자를 추가했을 때 그 사용자가 FTP 접속을 한 경우 /home/user1 이 FTP 접속 창의 루트가 되도록 설정하는 것입니다.

전 이게 아주 당연하다고 생각하고 작업을 했는데... 아니더군요!


vsftpd를 설치하고, 기본적인 설정을 갖춘 후 접속을 하면, 모든 디렉토리를 자유롭게 돌아다닐 수 있는 상태가 됩니다. 물론 권한이 없는 파일을 만질 순 없지만, 볼 수는 있는 상태가 되는 것이죠.


이럼 안되는거 맞죠?

그래서 인터넷에 여러 방법을 찾아 찾아 다니다가 여러 방법을 조합해 본 결과 가장 깔끔한 방법이라고 생각되는 것을 적어보겠습니다.

vsftpd를 설치하는건 다른 곳에서도 쉽게 찾을 수 있기 때문에 여기서는 패스!


준비 1. 설정 파일은 /etc/vsftpd.conf 입니다. (다른 경우가 있을 수 있습니다.)

준비 2. vsftpd를 재시작 하는 명령어는 sudo /etc/init.d/vsftpd restart 입니다.

1. chroot_local_user=YES 의 주석을 해제해 줍니다. 없는 경우 작성해 줍니다.

사용자 디렉토리를 루트로 변경시키라는 속성 값 입니다. 사실 이것만 해주면 될 줄 알았는데 아닙니다.

2. vsftpd의 루트가 되는 디렉토리는 쓰기 권한이 있으면 안됩니다. /home/user1 의 권한 설정에서 쓰기권한을 제거합니다.

sudo chmod a-w /home/user1

3. 그리고 그 안에 디렉토리를 하나 만들어 줍니다. 쓰기 권한이 없기 때문에 관리자가 만들어 주고 권한 설정도 해 줍니다.

sudo mkdir /home/user1/public_html

sudo chmod 777 /home/user1/public_html


이 방법의 문제는 저 public_html 디렉토리를 지우거나 변경할 때 관리자 권한이 필요하다는 것입니다. 그런데 생각해보면 거의 대부분의 웹 호스팅이 이런 구조로 되어 있는 것 같군요. 사용하는데는 큰 지장이 없어 보입니다.