서버로 사용하는 리눅스 박스의 문자셋이 UTF-8로 설정되어 있는 상황에서 시스템의 문자셋이 UTF-8이 아닌 MS
Windows에서 리눅스 박스의 FTP 서버에 접속했을 경우 UTF-8로 되어 있는 한글 파일이름이 깨져 나오거나 아예 보이지
않는 현상이 발생한다. 나의 경우 FTP Client를 서버의 문자셋을 따로 설정할 수 있는 FileZilla를 사용하기 때문에
상관 없지만 MS IE나 서버의 문자셋을 설정할 수 없는 여타 다른 FTP Client로 FTP 서버에 접속하였을 경우
UTF-8로된 한글 파일이름이 깨어지게 되고 MS IE에서 업로드한 한글 파일 이름 역시 리눅스 박스에서 깨져나오게 된다.
이러한 이유로 서버단에서 문자셋을 변경해 줄수 있는 FTP 데몬을 찾고 있었는데 구글님의 도움으로 Pure-FTPd가 RFC2640을 지원기 때문에 서버와 클라이언트의 문자셋이 다를 경우 서버에서 문자셋을 바꿔주는 기능이 있다는 사실을 알게 되었다.
Pure-FTPd를 설치 하고 서버의 문자셋을 UTF-8로 클라이언트의 문자셋을 CP949(EUC-KR)로 설정하니 원했던되로 MS IE에서도 한글을 훌륭하게 표현된다.
우분투 박스에서 Pure-FTPd를 설치하고 설정하는 방법을 간단하게 적는다.
우선 Pure-FTPd를 설치한다.
sudo apt-get install pure-ftpd
다른 FTP Client와는 다르게 Pure-FTPd 데몬 실행 옵션으로 FTP 데몬을 설정할 수 있게 되어 있다.
Ubuntu에서는 /etc/pure-ftpd/conf 디렉터리에 실행시 적용할 옵션의 이름과 같은 파일을 만들고 그 파일에 해당
옵션에 주어야할 값이나 해당 옵션이 on/ff의 기능을 하는 경우 파일에 yes/no를 적어 주면 데몬 실행 wrapper에서
conf 디렉터리에 있는 파일들을 읽어 옵션을 적용하여 데몬을 실행하게 된다. 실행시 사용할 수 있는 옵션은 --help
옵션으로 알 수 있다.
pure-ftpd --help
익명 FTP를 사용하고 싶지 않다면 --noanonymous (-E) 옵션을 사용하면 되는데
/etc/pure-ftpd/conf 디렉터리에 NoAnonymous 파일을 만들고 이 파일에 yes를 적어 주면 실행시에 이
옵션을 적용된다. 만드는 파일의 이름은 첫글자는 대문자 다른 글자는 소문자, 여러 단어가 합쳐져 있을 경우는 각단어의 시작을
대문자로, 옵션의 이름이 약어일 경우 모두 대문자로 만들어 주면 된다.
몇가지 예를 들어 보면 로그 파일의 위치를
지정하는 altlog 옵션의 경우 AltLog, 시스템 계정 사용자의 인증을 허용하는 옵션인 unixauthentication
옵션의 경우 UnixAuthentication, 보안을 위해 TCL/SSL을 활성화 하는 옵션인 tls 옵션의 경우 약자이므로
TLS 파일을 만들어 주면 된다.
앞에서도 설명했지만 파일안의 내용은 옵션이 on/off 기능을 담당하는 경우 yes/no를 옵션이 특정 값을 요구하는 경우는 해당 값을 적어 주면 된다.
다음은 설치시 기본적으로 적용되는 옵션외에 문자셋 변환을 위한 옵션 (FsCharset, ClientCharset),
FTP 로깅시 호스트 이름 대신 IP를 로깅하게 하게 하는 옵션 (DontResolve), MS IE 등 일부 FTP
Client와 의 호환을 위해 일부 표준을 무시하는옵션(BrokenClientsCompatibility, MS IE로 접속했을때
주소창에 ID@example.com와 같이 ID를 넣지 않고 ftp 서버의 주소만 넣을 경우 익명 FTP 로 접속되는데 익명
FTP로 접속하지 않고 ID/PW를 물어 보는 창을 표시하고 싶을 때 사용.)들을 적용하는 예다.
echo "utf8" | sudo tee /etc/pure-ftpd/conf/FsCharset echo "cp949" | sudo tee /etc/pure-ftpd/conf/ClientCharset echo "yes" | sudo tee /etc/pure-ftpd/conf/BrokenClientsCompatibility echo "yes" | sudo tee /etc/pure-ftpd/conf/DontResolve
적용후 데몬으로 재시작 하면 해당 옵션이 적용되어 데몬이 시작되는 것을 볼 수 있다.
sudo /etc/init.d/pure-ftpd restart
한가지 아쉬운 점이라면 이런 옵션을 특정 사용자나 특정 디렉터리에만 적용하는 방법을 찾을 수 없었다는 것이다.