[펌] ubuntu – vsftpd 소스 컴파일 하기 –

여러번 인터넷을 뒤져봤지만 잘 안나와서 포기했었는데, 결국 해냈다.

1. vsftpd 소스코드를 다운받는다.
  $ apt-get source vsftpd

2. 패치들을 적용시킨다.
  $ cd vsftpd-2.0.6  # 문서 만드는 당시의 ubuntu repository에 저장된 vsftpd 버전은 2.0.6이었음.
  $ gunzip ../vsftpd_2.0.6-1ubuntu1.diff.gz
  $ patch -i ../vsftpd_2.0.6-1ubuntu1.diff

3. 그 외에 필요할것 같은 4개의 패치들을 적당히 적용한다. (아마 이 단계는 안해도 될 것 같다.)
  $ patch -i xxx.patch # xxx는 보이는 .patch 파일 중 맘에 드는것들

4. sysdeputil.c 파일을 수정한다.
  다음 내용과 같은 파일을 sysdeputil.c.patch 로 만든 뒤

158c158
< #include <linux/unistd.h>

> #include <unistd.h>
162c162
< _syscall2(int, capset, cap_user_header_t, header, const cap_user_data_t, data)

> #define capset(head,data) syscall(__NR_capset,head,data)
  다음과 같은 명령을 내려준다.
  $ patch sysdeputil.c sysdeputil.c.patch

5. charset_filter 를 적용시킬 수 있게 해주는 패치를 다운받아 적용한다.
  $ wget “http://bugs.gentoo.org/attachment.cgi?id=157171” -O charset.patch
  $ patch -i charset.patch

6. 컴파일시 필요한 라이브러리들을 설치해준다.
  $ sudo apt-get install libwrap0-dev libssl-dev

7. make 실행
  $ make

8. 설치(make install이 잘 되지 않는다. 수동 설치)
  $ sudo install -m 755 vsftpd /usr/sbin/vsftpd
  $ sudo install -m 644 vsftpd.8 /usr/share/man/man8/vsftpd.8
  $ sudo install -m 644 vsftpd.conf.5 /usr/share/man/man5/vsftpd.conf.5

여기서 설치는 끝. charset_filter 를 적용하려면,
9. 설정파일을 열어 설정해준다.
  $ sudo vim /etc/vsftpd.conf
맨 밑줄이나 적당한 곳에

charset_filter_enable=yes
charset_client=cp949
charset_server=utf-8
인코딩은 알아서 할것.

이미 vsftpd가 설치된 상태에서 소스를 받아 갈아끼웠다.
/etc/init.d/vsftpd 스크립트를 만들어주는 부분은 찾기도 귀찮고 이미 되어 있었기 때문에 손은 대지 않았다.

!! 주의: man페이지를 보면 알겠지만, charset_filter 기능을 추가한 패치에서 이 기능을 켤 경우 보안상 위험할 수 있다고 한다. 아마 vsftpd에서 이 기능을 넣지 않는 것은 이런 문제 때문인 것 같다.

여튼 이 짓거리를 끝내면 윈도나 기타 OS에서 cp949 또는 euc-kr 인코딩으로 ftp에 접속할 수 있게 될 것이다.

참조페이지:

댓글 남기기