현재 vsftd를 운영하면서 chroot로 상위 디렉토리로 사용자가 임의로 이동하지 못하도록 막아두었다. 상황은 외장하드를 추가하면서 /mnt/usbdrive 라는 디렉토리에 마운트시키고 이를 사용자의 디렉토리에서 접근하고자 할 때 발생한다.

ftp로 사용자 홈디렉토리에서 /mnt/usbdrive 디렉토리는 접근할 수 없다. 왜냐하면 홈디렉토리 이상으로 접근하지 못하도록 막아놓았기 때문이다. 그래서 홈디렉토리에 저 디렉토리에 해당하는 심볼릭 링크를 생성하였다. SSH상에서는 디렉토리 이동이 잘 되었다. 하지만, ftp클라이언트에서는 변경할 수 없었다. 이유는 보안상 chroot 옵션을 활성화하였는데, 이는 사용자의 홈디렉토리 이상으로 이동하지 못하도록 제한을 두어 루트 디렉토리 아래에 있는 mnt디렉토리를 인식하지 못하기 때문에 그렇다.

이런 경우 심볼릭링크를 제거하고, 다음과 같은 작업을 진행한다.

  1. 사용자의 홈디렉토리에 임의의 디렉토리 생성
  2. mount –-bind [원본 디렉토리] [생성한 디렉토리]
  3. 원본 디렉토리에 rwx권한 부여
  4. 재부팅이 될 경우 mount가 풀리므로 추가 설정
    • vi /etc/fstab 명령으로 편집모드에서 다음 내용추가
    • 원본 디렉토리명 생성한 디레토리명 none bind 0 0


이렇게 하면 ftp클라이언트에서도 해당 폴더로 접근 가능하다.


Centos인 경우 만약 이렇게 한 후 해당 폴더에 writing을 할 수 없다면 selinux의 설정을 변경하여 가능하도록 할 수 있다.

setsebool -P allow_ftpd_full_access 1


참고 : http://blog.naver.com/boss6030?Redirect=Log&logNo=40173536623

저작자 표시 비영리 변경 금지
신고
Posted by Life 스토리