더북(TheBook)

특정 사용자를 위한 FTP 서버 운영하기

이번에는 특정 사용자를 위한 FTP 서버 운영 방법을 알아봅시다. vsftpd 설정 파일인 /etc/vsftpd.conf를 수정합니다.

administrator@server01:~$ sudo vi /etc/vsftpd.conf

익명 사용자를 위한 설정은 모두 주석처리하고(설정 항목 앞에 # 표시 입력), local_enable=YES는 활성화하여 로컬 사용자의 접근을 허용합니다.

#anonymous_enable=YES
local_enable=YES
write_enable=YES
#anon_upload_enable=YES
#anon_root=/srv/ftp

보안을 위해서라도 FTP 서버에 접속한 사용자는 사용자 계정의 홈 디렉터리를 벗어나지 않도록 제한해야 합니다. chroot_local_user=YES 항목을 찾아 활성화시키고 FTP 디렉터리에 쓰기 가능하도록 allow_writeable_chroot=YES 항목을 추가로 입력합니다.

chroot_local_user=YES
allow_writeable_chroot=YES

설정 내용을 적용하기 위해 vsftpd를 재시작합니다.

administrator@server01:~$ sudo service vsftpd restart

익명 사용자를 위한 FTP 서버를 운영할 때와 달리 사용자 계정의 홈 디렉터리에 접속하게 됩니다. 홈 디렉터리에 다운로드를 테스트할 파일을 생성합니다.

administrator@server01:~$ touch test_ftp_user_down

업로드를 테스트할 파일을 만들어두고 클라이언트에서 ftp를 이용해서 FTP 서버에 접속합니다. 이번에는 FTP 서버의 사용자 계정을 입력합니다.

administrator@server02:~$ touch test_ftp_user_up
administrator@server02:~$ ftp 192.168.122.201
Connected to 192.168.122.201
220 (vsFTPd 3.0.2)
Name (192.168.122.201:administrator): administrator
331 Please specify the password.
Password: ********
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>

get, put으로 파일 다운로드, 업로드가 정상적으로 이루어지는지 확인합니다.

ftp> ls
...
-rw-rw-r--    1 1000     1000              13 Mar 13 06:31 test_ftp_user_down
ftp> get test_ftp_user_down
ftp> put test_ftp_user_up

chroot 옵션이 제대로 동작하는지 확인해봅시다. 루트 디렉터리로 이동한 다음( cd /) 다시 ls 명령을 해봐도 FTP 홈 디렉터리를 벗어나지 않는 것을 알 수 있습니다.

ftp> cd /
250 Directory successfully changed.
ftp> ls
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
-rw-------    1 1000    1000             13 Apr 07 23:33 test_ftp_user_down
-rw-rw-r--    1 1000    1000             13 Mar 13 06:31 test_ftp_user_up
226 Directory send OK.
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.