FTP 명령어

접속
open aaa.bbb.ccc.ddd 0000

REMOTE DIR 이동
ftp> cd .........................

PASSIVE MODE 설정
ftp> passive ports 0.0.0.0/0
Passive mode on.

UPLOAD
ftp> put /.../file /.../file                                         LOCAL REMOTE

크리에이티브 커먼즈 라이센스
Creative Commons License

Posted by shiftkey

2009/08/28 17:30 2009/08/28 17:30
, ,
Response
No Trackback , No Comment
RSS :
http://shiftkey.org/rss/response/231

먼저 아래 옵션을 NO로 설정합니다.
anonymous_enable=NO

그리고 ftp 루트를 다음과 같이 설정해줍니다. (/var/ftp를 쓴다고 가정)
groupadd ftpusers
mkdir /var/ftp
chmod 3775 /var/ftp
chown root:ftpusers /var/ftp

다음과 같이 noshell 을 하나 만듭니다. ftp 전용 계정으로 쉘을 안준다고 가정합니다.
touch /bin/noshell
chmod 755 /bin/noshell
/etc/shells 에 /bin/noshell 추가

다음과 같이 noshell을 쉘로 가지는 계정을 추가해주면 됩니다.
useradd -g ftpusers -d /var/ftp -s /bin/noshell 유저명
passwd 유저명 - 패스워드 등록

원문 : http://debianusers.org/DebianWiki/wiki.php/vsftpd 7번 항목


크리에이티브 커먼즈 라이센스
Creative Commons License

Posted by shiftkey

2008/05/16 13:22 2008/05/16 13:22
, ,
Response
No Trackback , No Comment
RSS :
http://shiftkey.org/rss/response/141

sftpd.conf 파일에서 아래처럼 설정해주신후에

chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list

/etc/vsftpd/chroot_list 파일안에 상위로 못가게 만들 계정을 적어주시면 됩니다.

크리에이티브 커먼즈 라이센스
Creative Commons License

Posted by shiftkey

2007/12/04 17:43 2007/12/04 17:43
, ,
Response
No Trackback , No Comment
RSS :
http://shiftkey.org/rss/response/111


FTP서버 vsftpd 설치와 운영 (한글로그 패치 포함)
글쓴이 : 좋은진호 (2003년 10월 09일 오전 02:54) 읽은수: 20,688 [ 네트워크 인쇄용 페이지 본문 E-Mail로 보내기 ] 네트워크 작성자 : 좋은진호(truefeel, http://coffeenix.net/)
작성일 : 2003.10.01(수)
수정일 : 2004.01.08(목), chroot_list_enable 글 추가

이 글은 7월에 썼던 'vsftpd에서 한글파일로그와 lastlog 로긴확인하기'를 기초로 작성하였다.

1. vsftpd FTP 서버에 대해

vsftpd는 UNIX 시스템에서 사용할 수 있는 free FTP 서버(라이센스는 GPL)이다.
vsftpd가 내세우고 있는 것은 보안, 성능, 안정성이다. 지금까지 vsftpd의 자체 보안 문제가 있어
보안권고가 나온 적은 없다.(Redhat의 rpm 패키지중에 tcp_wrappers 지원없이 만들어져서 업데이트
rpm은 나온 적 있음)

* 지원 및 테스트된 OS

- Linux (Redhat, SuSE, Debian)
- Solaris (버전에 따라 IPv6나 inet_aton함수때문에 설치가 잘 안될 수 있음)
- FreeBSD, OpenBSD
- HP-UX
- IRIX

* 주요 기능

- 가상 IP별 별도의 환경 설정 기능 (설정파일의 listen_address= 이용)
- 가상 사용자 설정
- 전송 대역폭 지정
- PAM 지원 (버전 1.2.0부터는 PAM을 통한 wtmp에 로긴 로그를 남김)
- xferlog 표준 로그 파일보다 상세한 자체 로그 파일 형식 지원
- Standalone 방식과 inetd(xinetd)를 통한 운영 모두 지원
- IP별 다른 환경 파일 지정 기능 (tcp_wrappers와 함께 사용할 때)
- ...

2. vsftpd 설치

※ 설치는 Redhat 기준. 솔라리스의 PAM에 대한 것은 README.solaris 파일 참조한다.

http://vsftpd.beasts.org/ 에서 최신버전(현재 1.2.0)의 소스를 받아온다.

-------------------------------------------------------------
# tar xvfz vsftpd-1.2.0.tar.gz
# cd vsftpd-1.2.0
-------------------------------------------------------------

한글로 된 파일명을 전송할 때 로그에 파일명이 ???? 로 남지 않도록
logging.c 파일을 연 후 140번째 줄의

str_replace_unprintable(p_str, '?');

를 다음처럼 주석 처리한다.

/* str_replace_unprintable(p_str, '?'); */

또한 tcp_wrappers를 통한 접속제어를 사용하려면 builddefs.h 에서

#undef VSF_BUILD_TCPWRAPPERS 를
#define VSF_BUILD_TCPWRAPPERS 로 바꾼다.

-------------------------------------------------------------
# make
# make install (vsftpd 데몬, man page, xinetd 용 설정 파일 설치)
# cp vsftpd.conf /etc (환경설정 파일 복사)
# chmod 600 /etc/vsftpd.conf
# cp RedHat/vsftpd.pam /etc/pam.d/vsftpd (PAM 설정 파일 복사)
-------------------------------------------------------------

/etc/pam.d/vsftpd 첫번째 줄에 다음과 같이 있다.

pam_listfile.so item=user sense=deny file=/etc/ftpusers onerr=succeed

즉, /etc/ftpusers 파일에 존재하는 ID는 접속할 수 없게된다.(sense=deny)

-------------------------------------------------------------
# FTP 접속을 허용하지 않을 ID를 등록한다.
# /etc/passwd를 참조해서 설치할 서버의 환경에 맞게 등록
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
news
uucp
operator
games
nobody
smmsp
xfs
gdm
mysql
-------------------------------------------------------------

3. vsftpd.conf 의 주요 설정

-------------------------------------------------------------
# anonymous 사용자의 접속 허용 여부 (default = YES)
# 공개된 형태의 FTP 서버로 운영할 것이 아니라면 NO로 한다.
anonymous_enable=NO
# 로컬 계정 사용자의 접속 허용 여부 (default = NO)
local_enable=YES

# write 명령어 허용 여부 (defualt = NO)
write_enable=YES
# 로컬 계정 사용자용 umask (default = 077)
local_umask=022

# anonymous 사용자가 파일을 업로드 할 수 있는지 여부 (default = NO)
# anon_upload_enable=YES
# anonymous 사용자의 디렉토리 생성 허용 여부 (default = NO)
# anon_mkdir_write_enable=YES

# 파일 전송 로그를 남길 것인지 여부 (default = YES)
xferlog_enable=YES
# xferlog 표준 포맷으로 로그를 남길지 여부 (기본 설정파일은 YES)
# 아래에서 NO로 설정했을 때를 설명함
xferlog_std_format=YES
# 파일 전송 로그 파일명
xferlog_file=/var/log/vsftpd.log

# FTP 서버 접속할 때 로긴 메시지 (default = vsFTPd 버전번호)
# 한글 사용 가능
# ftpd_banner=Welcome to blah FTP service.

# 사용자의 홈디렉토리를 벗어나지 못하도록 제한하기 위한 설정 (default=NO)
# 제한이 필요할 경우 YES로 바꾼 후 제한할 사용자 ID를 chroot_list_file= 에 설정한 파일에
# 지정한다.
# chroot_local_user= 설정과 관련이 있으니 '3. 문제 해결'을 꼭 읽어보라.
#
# chroot_list_enable=YES
# chroot_list_file=/etc/vsftpd.chroot_list

# -------------------------------------------------------------------
# 기본 설정 파일에는 없는 설정값으로 필요한 설정만 추가한다.
# ※ 중요한 설정은 굵은 글씨로 표시
# -------------------------------------------------------------------

# PAM 파일명을 지정 (설치할 때 /etc/pam.d/vsftpd명으로 복사함)
pam_service_name=vsftpd

# wtmp에 로그 남기기 (YES로 해야만 last 명령어로 접속 여부 확인 가능)
session_support=YES

# 사용자가 자신의 home directory를 벗어나지 못하도록 설정
chroot_local_user=YES

# 새로운 디렉토리에 들어갔을 때 뿌려줄 환경 메시지를 저장한 파일명
# message_file=.message

# xferlog 형식으로 log를 남기려면 (위에서 이미 YES로 했음)
# xferlog_std_format=NO
#
#  - xferlog 표준 포맷은 로긴, 디렉토리 생성등의 로그를 남기지 않음
#   그러나 vsftpd 스타일 로그는 이를 포함한 보다 상세한 로그를 남김
#  - vsftpd 스타일 로그 예
#
#  Sun Jul 12 01:38:32 2003 [pid 31200] CONNECT: Client "127.0.0.1"
#  Sun Jul 12 01:38:34 2003 [pid 31199] [truefeel] FAIL LOGIN: Client "127.0.0.1"
#  Sun Jul 12 01:38:38 2003 [pid 31199] [truefeel] OK LOGIN: Client "127.0.0.1"
#  Sun Jul 12 01:38:41 2003 [pid 31201] [truefeel] OK MKDIR: Client "127.0.0.1", "/mp3"
#  Sun Jul 12 01:39:06 2003 [pid 31201] [truefeel] OK UPLOAD: Client "127.0.0.1", "/델리
#  스파이스 5집 - [04]키치죠지의 검은 고양이.mp3", 6855473 bytes, 3857.39Kbyte/sec

# 전송속도 제한 (0은 제한없음, 단위는 초당 bytes)
anon_max_rate=0
local_max_rate=0
trans_chunk_size=0

# 최대 접속 설정 (단 xinetd를 통하지 않고 standalone으로 동작할 때만 사용 가능)
# standalone을 위해서는 listen=YES 추가하고 별도로 vsftpd를 띄워야 함
#
# max_clients=최대 접속자 수, max_per_ip=IP당 접속 수
# max_clients=100
# max_per_ip=3

# Standalone 으로 운영할 때 listen=YES. 포트 변경을 원할 경우 listen_port 설정
# 디폴트 포트는 21번 포트이다.
# listen=YES
# listen_port=21
-------------------------------------------------------------

필요한 설정이 끝났으면 xinetd를 재실행한다.

-------------------------------------------------------------
# /etc/rc.d/init.d/xinetd restart
-------------------------------------------------------------

4. 문제 해결

1) ftpwho 같은 명령은 있나?
  또한 last를 해도 접속된 걸 확인할 수가 없는데 방법이 없나?

 ftpwho 형태의 명령은 없으며 임시적으로 다음 명령어 등으로 확인할 수 있다.

 # ps -ef|grep vsftpd
 # fuser -v ftp/tcp

 vsftpd v1.2.0이상부터 PAM을 통해 wtmp에 로그를 남기므로 last로 접속여부를 확인할 수 있다.

2) 한글 파일명이 전송될 때는 vsftpd.log 에 ???? 로 남는다. 해결책은?

 vsftpd는 출력할 수 없다고 판단하는
 ASCII 코드 31 이하, 128~159, 177 문자를 모두 ? 로 바꿔서 저장을 한다.
 따라서 이 부분을 처리하지 않고 저장하도록 소스를 수정한 후 컴파일하면 해결된다.

3) 사용자가 홈디렉토리를 못 벗어나게 하고 싶는데?

/etc/vsftpd.conf에 다음을 추가하면, 모든 사용자는 자신의 홈디렉토리만 접근할 수 있다.

chroot_local_user=YES

또한 특정 사용자로만 제한을 하고 싶다면 다음과 같이 한다. /etc/vsftpd.chroot_list에는 제한할
사용자 ID를 한줄에 하나씩 나열하면 된다.

chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list

주의할 것은 chroot_local_user=YES와 chroot_list_enable=YES를 함께 사용할 경우에는
/etc/vsftpd.chroot_list에 포함된 사용자 ID만 제한없이 홈디렉토리를 벗어날 수 있다.
즉, 반대로 작용한다.

standalone으로 FTP서버가 동작중이면 재실행 필요. standalone에 대해서는 6)번에서.

4) root로 접속할 수는 없나?

 가능하면 root 접속은 허용하지 않기를 바란다.
 /etc/ftpusers 파일에서 root를 빼면 접속이 가능하다.

5) ID/비밀번호가 정확히 맞는데 로긴할 때 자꾸 530 Login incorrect. 라고 나온다.

 /etc/ftpusers (또는 vsftpd.ftpusers)에 등록된 사용자인지 확인한다.
 여기에 등록된 사용자는 로긴할 수 없다. 이럴 때 /var/log/messages에 다음과 같은 로그가 남는다.

 Aug 16 22:21:52 truefeel vsftpd: PAM-listfile: Refused user xxxxxxxx for service vsftpd

6) standalone으로 운영하고 싶다.
  (즉, apache나 sendmail처럼 xinetd 통하지 않고 운영을 원한다.)

 /etc/xinetd.d/vsftpd (vsftpd가 아닌 다른 파일명일 수 있음) 에서 disable = yes 로 변경하여
 xinetd로 서비스 하지 않도록 설정한다. xinetd 를 재실행하면 이제 xinetd를 통한 ftp 서비스는 종료된다.

 레드햇의 경우 /etc/rc.d/init.d/xinetd restart

 이제 vsftpd 데몬를 실행한다. (소스로 설치시 기본 경로는 /usr/local/sbin)

 # /usr/local/sbin/vsftpd &

7) 다른 포트(기본 21번)를 사용하고 싶다. (예를 들어 11121번 포트를 원할 때)

 * xinetd를 이용하는 경우

  /etc/service 에 'ftp2  11121/tcp' 한 줄을 추가한다.
  그리고 /etc/xinetd.d/vsftpd (vsftpd가 아닌 ftp와 같은 다른 파일명일 수 있음) 에서
  service ftp 를 service ftp2로 바꾸고, xinetd 를 재실행한다.

 * standalone으로 운영하는 경우

  /etc/vsftpd.conf 에서 listen_port=11121 을 추가하고 vsftpd 서버를 재실행한다.

 바뀐 포트로 운영중인지 확인은 netstat -atnp(리눅스) 또는 netstat -an(그 이외 유닉스)

8) 업로드 파일 크기를 제한하는 방법은 없나요? 이를테면 5MB이상의 파일은 업로드 못한다든지.

현재 1.2.1버전까지 vsftpd 자체에 설정하는 방법은 없습니다.

5. 참고할만한 문서

* vsftpd 1.2.0 설치 문서
 ftp://vsftpd.beasts.org/users/cevans/untar/vsftpd-1.2.0/INSTALL
* vsftpd.conf man page
* vsftpd에서 한글파일로그와 lastlog 로긴확인하기 (좋은진호)
 http://coffeenix.net/board_view.php?bd_code=4
* vsftpd에서 전송속도 제한 (bandwidth limit) (좋은진호)
 http://coffeenix.net/board_view.php?bd_code=21

원문 링크 : http://kltp.kldp.org/stories.php?story=03/10/09/5659809

참고자료 : 데비안에서 VSFTPD설치


크리에이티브 커먼즈 라이센스
Creative Commons License

Posted by shiftkey

2007/12/04 17:40 2007/12/04 17:40
,
Response
No Trackback , No Comment
RSS :
http://shiftkey.org/rss/response/110

cmd ftp

간단하게 윈도우에서 ftp로 파일을 업로드 해보자!!!

아래의 글은 웹의 어딘가에서 베껴온 내용인데 출처를 기록해두는걸 깜빡해서
이 글을 공개할까말까하다가 그냥 공개하기로했다.

출처를 아시는분은 댓글을 달아주시면 감사하겠습니다.

그리고 아래 글들을 복잡하게 읽을 필요가 없고 간단하게 말하자면
ftp_run.bat라는 배치파일을 만들고
ftp_upload.txt라는 ftp에서 해야 할 일을 적어둔 txt파일 하나만 있으면된다.

ftp_run.bat
ftp -s:"C:\ftp_upload.txt" shiftkey.org >> ftplog.txt //로그남기는걸 좋아해서......
del ftplog.txt//근데 여기선 지워버렸다...ㅋㅋㅋ


ftp_upload.txt
shiftkeyid
shiftkeypwd

put "c:\uploadfile.txt" "./upload/pds/uploadfile.txt"
quit


=== 아래 ===



file.runwait(0, ?"d:\Program Files\WinRAR\WinRAR.exe",?#a -r "c:\windows\temp\ftp_to_upload.rar" "F:\PowerPro\temp\"#,"","hide") ;; 주1
file.runwait(0, "cmd",?#/c ftp -s:"F:\PowerPro\ftp_test.txt" ftp.test.com#,"","hide") ;; 주2
file.deletenorecycle(?"c:\windows\temp\ftp_to_upload.rar") ;; 주3



압축과 ftp 전송 모두 TC 를 이용해도 됩니다만, 여기서는 모든 과정을 백그라운드에서 돌아가도록 하기 위해, winrar 와 윈도우 내장 ftp 명령을 hide 옵션을 주고 실행했습니다.



do 를 쓰지 않고 file.runwait 를 쓴 이유는, do(명령) 과 do(명령) 사이에 wait 을 줘야 하는데, 이 경우는 wait 의 값이 일정하지 않습니다. 압축되는 시간과 파일 전송 시간 모두 일정치 않으므로, 이 경우 wait 의 값을 적절히 주기가 까다롭다는 것이죠. file 플러그인의 runwait 서비스는 이런 경우 매우 유용한데, 아래와 같은 모양을 가집니다.



file.runwait(최대대기시간, "실행파일경로", "파라미터", "작업폴더", "min, max, hide, normal 중 하나")



최대대기시간의 단위는 밀리초이며, 그 값을 지정하면 실행파일의 명령이 종료되기 전이라도 최대 지정 밀리초까지 기다린 후 다음 스크립 라인으로 넘어갑니다. 지정된 최대대기시간 이전에 실행파일의 명령이 종료되면 바로 다음 스크립 라인으로 넘어갑니다. 그 값을 0 으로 지정하면 실행파일경로에 지정한 명령이 종료될때까지 무한정 기다리다가 그 명령이 종료되는 순간 바로 다음 스크립 라인으로 넘어갑니다.



실행파일경로는 경로를 포함한 exe 혹은 bat 혹은 cmd 파일이어야 합니다.



주1. 백그라운드 작업은 여전히 cli 모드가 여전히 유용합니다. winrar 는 매우 강력한 cli 모드를 지원하고 있습니다. a 는 압축하겠다는 것, -r 은 서브폴더까지 포함하겠다는 것.. winrar 명령행 옵션의 좀 더 자세한 내용은 winrar 도움말 참조하시면 되고요. 물론 모든 경로는 상황에 맞게 수정하시고요.



주2. 윈도우에서 기본 내장되어 있는 ftp 명령을 이용해서 전송합니다. ftp 명령에 대한 자세한 내용은 win F1 눌러서 ftp 로 검색해 보시면 됩니다. cmd 창에서 ftp 명령을 수행하는데, ftp.test.com 서버에 접속한 후, 자동으로 -s 옵션으로 지정된 파일의 내용을 모두 실행하고, cmd 창을 닫습니다.(/c)


ftp_test.txt 파일의 내용은 다음과 같습니다.


ftp_test.txt

id
pw

put "c:\windows\temp\ftp_to_upload.rar"
quit



---



id 와 패쓰워드, 수행명령을 각각 한줄씩 적으면 됩니다. 3번째 줄에서 ftp 서버에 저장될 파일명을 적지 않아도 상관 없는데, 이 경우는 리모트 서버에 로컬 파일명으로 자동 저장됩니다.



주3. 전송이 끝난 압축파일을 휴지통으로 보내지 않고, 바로 삭제합니다.






참고. 윈도우 내장 ftp 명령은 리모트 서버에 동일 파일이 있는 경우, 덮어쓸지 어떨지 안 물어보네요. 무조건 덮어씁니다. 오히려 물어보도록 하는 옵션이 있는지 어떤지 그게 궁금하군요.. ㅎㅎ



>1. 예를 들어서...

>e:\personal Data\안에 있는 폴더와 기타 파일들을 압축해서 제 개인 ftp서버(ftp://abc.com)로 올리는거 까지..

>이거 파워프로로 구현할수 있을까요? 뭐.. 반복작업이야... 원하는대로 파워프로에서 스케쥴 잡으면 가능할거 같은데.. 폴더를 압축하고 업로드 하는거 까지를 어떻게 하면 좋을지 대책이 안섭니다...

>아시는분... 좀 알려주세요.. 부탁 드릴께요...

>

>2. 위의 작업이 가능하다는 전재하에.. 서버에 올릴때 같은 파일이존재할 경우 덮어쓰냐는 확인창이 뜨는데.. 여기서 파워프로가 '덮어씀'이라는 버튼을 자동으로 클릭하게 할수 있을까요? 제가 원하는건.. 압축부터 서버에 업로드... 덮어쓰기 까지.. 완전 자동으로 이루어 졌으면 좋겠습니다.(자동화 프로그램은 많더군요... 아니면.. 별도의 매크로 프로그램으로는 가능하구요... 하지만.. 파워프로로 가능했으면 정말 편할거 같습니다...)

>

>3. 이런 방법도 생각해 봤습니다.

>폴더 내용을 압축하고 서버에 올릴때 서버에 해당 년 월 일로 폴더를 작성하고 거기에 압축된 파일을 올리는 겁니다.

>그리고.. 그 폴더를 제외하고 나머지 폴더는 다 삭제를 하는 거지요... 가능 할까요??

>'

>

>음.. 제가... 너무 많은걸 바라는지도 모르겠습니다. 혹시.. 가능하다면.. 알려주시면 감사드리겠습니다.

>

>

>마지막으로...

>새로운 한해가 시작되었습니다... 라고 하기엔 좀 이상하지만.. 여하튼... 회원분들 새해 복 많이 받으세요~



오... 이런방법도 있군요...~ 주석까지 자세한 설명 감사드립니다.
몇가지 질문이 있습니다.

1. c:\windows\temp\ftp_to_upload.rar" "F:\PowerPro\temp\
이부분을 해석하자면 어떻게 되는건지요? 제 생각으로는 "F:\PowerPro\temp\안의 파일과 폴더 모두를
c:\windows\temp\안에 ftp_to_upload.rar라는 이름으로 압축하라는거 같은데 맞는지요?

2. ftp.test.com이걸 ftp://aaa.aaa.com 이런식으로 바꿔도 되는지요?(안된다면 어떻게 표시하면 될까요?제가 보유하고 있는 서버의 접속 주소가 ftp://aaa.aaa.com이런 식입니다.)

이카루스 역쉬 범석님입니다.
범석 1. 예.. 맞습니다.

2. ftp:// 를 빼고, 도메인명만 넣으셔야 합니다. 말씀하신 경우라면, aaa.aaa.com 만 넣으셔야겠죠.
noriyo 그렇군요.... 잘 사용하겠습니다.~~
그리구... 이카루스님!!! 토커로 FTP제어하는거.. 마저 알려주셔야죠...ㅎㅎㅎ
참가번호 대단.. 정말 대단.. 파일 올리는 것은 힘들 것 같았는데..
나제곤 요기서 file.runwait에 대해 좀 더 배울 수 있어서 좋네요. 좋은 팁입니당
참가번호 사용례를 보는 것은 즐거운 일이죠. runwait 에 대한 것도.. 일단 읽은 기억만 있으면, 나중에 좋은 예가 되거든요..
그런 의미로, 오늘 window position 에 대한 설정 하나..
window position 100 100 800 600 autorun 이라고 도움말에 나와 있는데요.
window position 100 100 800 600 "down.txt"
window.position(" 100 100 800 600 down.txt ") 정도로 해도 되더군요.
앞의 autorun 은 사전에는 좀전에 실행한 창인데요. 그냥, 캡션으로 해도 되더군요. 이것을 몰라서 ... 참..


* 패시브모드 - "quote pasv"
크리에이티브 커먼즈 라이센스
Creative Commons License

Posted by shiftkey

2007/10/17 12:10 2007/10/17 12:10
, ,
Response
No Trackback , No Comment
RSS :
http://shiftkey.org/rss/response/101


블로그 이미지

Shiftkey가 살아가는 이런 저런 이야기......

- shiftkey

Notices

Archives

Authors

  1. shiftkey

Calendar

«   2012/02   »
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29      

Site Stats

Total hits:
135403
Today:
139
Yesterday:
312