이 름
ftpd − DARPA 인 터 넷 파 일 전 송 프 로 토 콜 서 버
개 요
ftpd [ −d ] [ −v ] [ −l ] [ −t timeout ] [ −T maxtimeout ] [ −a ] [ −A ] [ −L ] [ −i ] [ −o ] [ −p ctrlport ] [ −P dataport ] [ −q ] [ −Q ] [ −r rootdir ] [ −s ] [ −S ] [ −u umask ] [ −V ] [ −w ] [ −W ] [ −X ]
설 명
Ftpd 는 DARPA internet file 전 송 프 로 토 콜 server의 역 할 을 한 다 . server는 TCP protocol을 사 용 하 며 ’’ftp’’ service로 지 정 된 특 정 한 prot에 귀 를 기 울 인 다 .; 자 세 한 것 은 services(5) 을 참 조 하 라 .
−V 옵 션 은 저 작 권 과 버 젼 정 보 를 출 력 한 다 .
−d 또 는 −v options을 지 정 하 면 , syslog에 디 버 깅 정 보 가 기 록 된 다 .
−l option은 syslog에 각 ftp의 session을 기 록 한 다 .
ftp server는 15분 이 지 나 도 록 아 무 입 력 이 없 으 면 (inactive session이 발 생 하 면 ) timeout이 된 다 . −t option으 로 inactive timeout 시 간 을 지 정 할 수 있 다 . 설 정 은 단 위 로 하 며 options과 초 를 붙 여 서 쓴 다 . −t option을 지 정 하 지 않 았 을 때 의 기 본 값 은 900초 이 다 . 또 한 이 와 는 다 른 timeout period가 있 는 데 이 는 −T option을 이 용 하 여 최 대 로 열 어 놓 을 수 있 는 session timeout period를 지 정 할 수 있 다 . 이 것 은 inactive session과 무 관 하 다 . 설 정 은 −t 와 동 일 하 며 default는 2시 간 이 다 .
−a option은 ftpaccess(5) 설 정 file을 사 용 하 도 록 한 다 .
−A option은 ftpaccess(5) 설 정 file을 사 용 하 지 않 도 록 한 다 . 이 option은 기 본 option이 다 .
−L option은 syslog에 ftpd(8) server에 보 내 지 는 명 령 들 을 기 록 하 도 록 한 다 . −L option은 ftpaccess(5) file의 사 용 에 의 해 무 시 되 어 질 수 도 있 다 . −L flag가 사 용 되 어 진 다 면 , 기 본 적 으 로 ftp server가 요 청 될 때 마 다 명 령 이 logging 되 어 질 수 있 다 . 이 것 은 모 든 USER들 의 명 령 이 기 록 되 는 것 을 뜻 하 며 만 약 user가 우 연 히 username을 대 신 하 는 명 령 으 로 password를 보 냈 을 때 syslog를 통 해 서 password가 누 출 될 수 도 있 다 .
−i option을 지 정 하 면 ftpd(8) server에 의 해 받 아 들 였 던 file들 이 xferlog(5) 로 log되 어 진 다 . −i option은 ftpaccess(5) file을 사 용 하 면 무 시 되 어 진 다 .
−o option을 지 정 하 면 ftpd(8) server에 의 해 전 해 진 file들 이 xferlog(5) 로 log되 어 진 다 . −o option은 ftpaccess(5) file을 사 용 하 면 무 시 되 어 진 다 . 만 약 −X option을 지 정 하 면 , −i 와 −o options에 의 해 생 성 된 output은 xferlog에 저 장 되 지 않 는 다 . 그 러 나 하 나 의 중 앙 loghost에 여 러 host들 로 부 터 의 output을 받 아 들 이 는 경 우 에 는 syslog를 통 해 저 장 이 된 다 .
−u option은 umask 를 기 본 umask로 setting을 한 다 .
−W option은 user login을 wtmp file에 기 록 하 지 않 게 한 다 . Default ( −w ) 로 는 모 든 login과 logout이 기 록 이 된 다 .
−s 와 −S option들 은 standalone 작 동 모 드 로 daemon을 실 행 하 게 한 다 . −S option은 daemon을 background로 실 행 을 하 며 , system booting시 에 startup srcitps(ie., in rc.local)를 이 용 할 때 사 용 한 다 . −s option은 daemon을 foreground로 실 행 을 시 키 며 , init로 부 터 실 행 될 때 주 로 사 용 을 한 다 . (ie., /etc/inittab)
−p 와 −P option들 은 daemon에 의 해 사 용 되 어 지 는 port number를 무 시 한 다 . 일 반 적 으 로 daemon은 "ftp"와 ftp-data"에 대 해 /etc/services 를 참 조 하 여 port number를 결 정 한 다 . 만 약 /etc/services에 "ftp-data"가 지 정 되 어 있 지 않 고 −P option이 지 정 되 어 있 지 않 다 면 daemon은 control connection port 보 다 앞 선 port를 사 용 한 다 . −p option은 standalone mode로 실 행 될 때 만 사 용 을 할 수 가 있 다 .
−q and −Q option들 은 daemon이 PID file들 의 사 용 여 부 를 결 정 한 다 . 이 file들 은 각 접 근 class마 다 현 재 user의 수 를 결 정 하 는 limit 지 시 자 에 의 해 요 구 되 어 진 다 . PID file들 의 사 용 을 안 하 면 user limit를 사 용 할 수 없 다 . Default ( −q ) 로 는 PID file들 을 사 용 을 한 다 . access permission이 PID file의 사 용 을 막 을 때 일 반 user로 서 server를 test할 때 −Q 를 지 정 한 다 . 좀 더 나 아 가 서 동 시 사 용 자 의 수 를 제 한 하 는 것 을 막 고 싶 은 busy site에 서 는 PID file의 사 용 을 불 가 능 하 게 하 는 것 을 고 려 해 볼 만 하 다 .
−r option은 이 미 loading시 에 rootdir로 지 정 되 어 진 거 을 chroot로 daemon을 지 정 한 다 . 이 것 은 daemon을 통 해 발 생 한 손 상 을 입 은 file들 을 제 한 함 으 로 서 system security를 증 진 시 킬 수 있 다 . Set is much like anonymous FTP, with additional files needed which vary from system to system.
ftp server는 현 재 아 래 에 나 열 된 ftp reuest들 을 지 원 을 한 다 .; case는 구 별 되 어 있 지 않 다 .
Request
설 명
ABOR 이 전 명 령 을 중
지
ACCT 지 정 한 account를 무
시
ALLO 비 어 있 는 저 장
공 간 을 할 당
APPE file에 첨 가
CDUP 현 재 작 업 directory를
부 모 directory로 이 동
CWD 작 업 directory를 이 동
DELE file 삭 제
HELP help 정 보 출 력
LIST directory의 file list 출 력
(’’ls -lgA’’)
MKD directory 생 성
MDTM file의 마 지 막 변
경 시 간 출 력
MODE data transfer mode 를 지 정
NLST directory의 file list name만 보
여 준 다 .
NOOP do nothing
PASS password를 지 정
PASV server와 server간 은 전
송 비 교
PORT data connection port를 지 정
PWD 현 재 작 업 중 인
directory를 출 력
QUIT session 마 침
REST 불 완 전 한 전 송
을 재 시 도
RETR file 정 정
RMD directory 제 거
RNFR filename으 로 부 터 rename
지 정
RNTO filename으 로 rename 지 정
SITE 일 반 적 이 지 않
은 commands (다 음 section 참
조 )
SIZE file size 출 력
STAT server 상 태 출 력
STOR file 저 장
STOU 특 정 한 이 름 으
로 file 저 장
STRU data transfer structure 지 정
SYST server system의 OS type 출 력
TYPE data transfer type 지 정
USER user name 지 정
XCUP 현 재 작 업 directory를
부 모 directory로 이 동
(deprecated)
XCWD change working directory (deprecated)
XMKD directory 생 성 (deprecated)
XPWD 현 재 작 업 directory 출
력 (deprecated)
XRMD directory 제 거 (deprecated)
아 래 에 나 열 된 것 은 일 반 적 인 명 령 이 아 니 거 나 UNIX 특 수 명 령 들 이 며 SITE 명 령 에 수 반 되 어 사 용 되 어 진 다 .
Request
설 명
UMASK umask를 변 경 . E.g. SITE
UMASK 002
IDLE idle-timer를 지 정 . E.g. SITE
IDLE 60
CHMOD file의 mode을 변 경 .
E.g. SITE CHMOD 755 filename
HELP help 정 보 를 출 력 .
E.g. SITE HELP
NEWER 특 정 날 짜 이 후
의 file을 출 력
MINFO SITE NEWER와 유 사 , 하
지 만 좀 더 자 세
한 정 보 를 출 력
GROUP 특 정 gourp 접 근 을
요 구 . E.g. SITE GROUP foo
GPASS 특 정 group 접 근 암
호 를 지 정 . E.g. SITE GPASS
bar
EXEC program을 실 행 . E.g. SITE
EXEC program params
여 기 서 생 략 된 Internet RFC 959에 지 정 된 몇 몇 의 ftp request들 은 인 식 은 되 지 만 그 리 쓸 모 있 지 는 않 다 . MDTM과 SIZE는 RFC 959에 지 정 되 어 있 지 는 않 지 만 다 음 FTP RFC에 update될 예 정 이 다 .
ftp server는 internet RFC 959에 기 술 되 어 진 것 처 럼 telnet "Interrupt Porcess" (IP) signal과 Telnet stream 명 령 의 Telnet "Synch" signal에 의 해 서 ABOR 명 령 이 진 행 될 때 active file 전 송 은 중 지 될 것 이 다 . 만 약 STST 명 령 이 data 전 송 중 에 받 아 진 다 면 , Telnet IP와 Synch에 의 해 진 행 된 transfer status는 되 돌 려 질 것 이 다 .
Ftpd interpret file name들 은 csh(1) 에 의 하 여 사 용 되 어 지 는 "golbbing" 규 약 에 따 른 다 . 이 것 은 user들 이 metacharacter "*?[]{}~"를 이 용 할 수 있 도 록 한 다 .
인 증 된 Ftpd user들 은 4가 지 규 칙 을 따 른 다 .
1) |
username은 password data base, /etc/passwd, 또 는 OS를 통 새 접 근 할 수 있 는 무 엇 에 존 재 해 야 한 다 . 이 경 우 password는 어 떤 file 작 용 이 실 행 되 어 지 기 전 에 client에 의 해 서 준 비 되 어 야 한 다 . | ||
2) |
user name이 /etc/ftpusers 에 있 어 서 는 안 된 다 . | ||
3) |
user는 getusershell(3) 에 의 해 반 환 되 어 지 는 standard shell을 가 져 야 한 다 . | ||
4) |
username이 "anonymous" 또 는 "ftp" 일 때 , anonymous ftp 계 정 이 password file(user "ftp")에 존 재 해 야 만 한 다 . 이 경 우 client의 hostname이 나 e-mail address를 password로 하 여 login을 허 락 을 한 다 . |
마 지 막 의 경 우 ftpd 는 client의 접 근 권 한 을 제 한 하 기 위 해 특 별 한 작 업 을 수 행 한 다 . server는 보 안 의 침 해 를 막 기 위 하 여 "ftp" user의 home directory로 chroot(2) 명 령 으 로 변 경 시 켜 버 린 다 . (anonymous의 를 file에 존 재 하 는 "ftp"라 는 user의 home directory-보 통 은 /home/ftp-로 바 꿔 버 린 다 는 의 미 이 다 .) 이 것 은 "ftp" subtree는 조 심 해 서 구 성 되 어 진 다 는 것 을 의 미 하 며 아 래 에 나 열 된 규 칙 을 따 른 다 .
~ftp) |
home directory의 소 유 권 을 super-user와 쓰 기 권 한 이 없 는 다 른 user로 지 정 을 한 다 . |
~ftp/bin)
home directory의 소 유 권 을 super-user와 쓰 기 권 한 이 없 는 다 른 user로 지 정 을 한 다 . ls(1) program은 list 명 령 을 지 원 하 기 위 하 여 반 드 시 존 재 해 야 한 다 . 이 program은 mode 111의 소 유 권 을 가 져 야 한 다 .
~ftp/etc)
home directory의 소 유 권 을 super-user와 쓰 기 권 한 이 없 는 다 른 user로 지 정 을 한 다 . passwd(5) 와 group(5) file은 ls 명 령 을 실 행 했 을 때 숫 자 (UID, GID)가 아 닌 사 용 자 명 이 나 오 도 록 하 기 위 해 서 이 다 . OS에 의 존 하 며 , 다 른 요 구 되 는 file들 이 있 다 . libary rutine getpwent(3) 에 대 한 man page를 check하 도 록 한 다 . passwd의 password field는 사 용 되 지 않 으 며 실 제 의 암 호 화 된 password들 이 포 함 되 어 있 지 않 다 . 이 file들 은 mode 444의 permision을 가 지 며 super-user에 게 소 유 권 이 있 다 . ~ftp/etc directory안 의 group, passwd file들 을 system의 /etc/passwd와 /etc/group file로 복 사 를 하 여 사 용 하 면 안 된 다 .
~ftp/pub)
~ftp/pub에 서 일 반 user들 에 게 file upload를 허 락 하 려 면 적 당 히 mode 777 또 는 mode 733의 permision으 로 directory를 만 들 면 된 다 . 하 지 만 pub dirctory는 read permision만 을 주 는 것 을 권 장 하 며 upload는 ~ftp/incoming 이 라 는 directory를 만 들 어 사 용 하 기 를 권 장 하 며 upload directory의 소 유 권 은 super-user가 아 닌 ftp에 있 어 야 한 다 는 것 을 명 심 한 다 . 또 한 ftp user의 권 한 으 로 upload 한 file은 지 울 수 가 없 으 므 로 file만 올 리 는 것 보 다 는 설 명 서 도 같 이 올 리 도 록 message file을 이 용 하 여 권 고 하 도 록 한 다 .
BSD/OS SYSTEM만 의 인 증 MECHANISM
ftpd에 의 해 사 용 되 어 지 는 인 증 machanism은 /etc/login.conf 에 있 는 users class와 match되 는 "auth-ftp" entry에 의 해 결 정 된 다 . ( login.conf(5) 를 참 조 하 라 ) 만 약 class에 대 한 "auth-ftp" entry가 없 다 면 대 신 에 일 반 적 인 "auth" entry가 사 용 되 어 질 것 이 다 . 교 차 하 는 인 증 machanism은 "joe:skey" 처 럼 콜 론 (":")이 첨 가 되 어 지 정 이 된 다 .
일 반 적 인 FTP 확 장 자 들
FTP server에 는 아 래 와 같 이 특 정 한 file 확 장 자 로 서 몇 가 지 기 능 을 수 행 할 수 있 다 :
실
제 Filename 지 정 한 Filename
실 행
------------- ------------------
-----------------------------------
<filename>.Z <filename> 압 축
을 풀 고 나 서 전
송
<filename> <filename>.Z 전 송
전 file을 압 축
<filename> <filename>.tar 전 송
전 file을 Tar로 묶 음
<filename> <filename>.tar.Z 전 송
전 file을 Tar로 묶 고 압
축
또 한 FTP server는 확 실 한 e-mail 주 소 를 위 한 check를 시 도 하 며 , 이 test를 통 과 하 지 못 하 면 user에 게 경 고 message를 출 력 한 다 . FTP client가 "long replies" (i.e multiline responses)에 걸 려 있 는 user들 을 위 해 password의 첫 번 째 character를 dash를 사 용 하 는 것 은 server의 lreply() 함 수 를 불 가 능 하 게 한 다 .
FTP server는 또 한 모 든 file의 전 송 과 수 신 을 log 할 수 있 으 며 , 발 생 되 는 각 file의 전 송 에 대 한 정 보 에 따 라 서 관 리 를 한 다 .
Mon Dec 3
18:52:41 1990 1 wuarchive.wustl.edu 568881 /files.lst.Z
a _ o a chris [AT] wugate.edu ftp 0 *
%.24s %d %s %d
%s %c %s %c %c %s %s %d %s
1 2 3 4 5 6 7 8 9 10 11 12 13
1 DDD MMM dd
hh:mm:ss YYYY 형 식 의 현 재
시 간
2 초 단 위 의 전 송
시 간
3 remote host name
4 byte 단 위 의 file size
5 name of file
6 전 송 type (a>scii, b>inary)
7 특 수 action flags (필 요 에
따 라 연 계 ):
C file이 압 축 되 어 짐
U file이 압 축 되 어 지
지 않 음
T file이 tar로 묶 임
_ 아 무 것 도 발 생
하 지 않 음
8 file 이 user에 게 보 내
지 거 나 (o>utgoing), user로
부 터 받 음 (i>ncoming)
9 접 근 한 방 식 (r>eal,
a>nonymous, g>uest) -- mostly for FTP
10 local username 또 는 "ftp"
user의 경 우 login시 에
password로 입 력 한
e-amil address
11 service 명 (’ftp’, other)
12 인 증 방 식 (bitmask)
0 none
1 RFC931 인 증
13 인 증 되 어 진 user id (if
available, ’*’ otherwise)
관 련 항 목
ftp(1), getusershell(3), syslogd(8), ftpaccess(5), xferlog(5), umask(2)
버 그
anonymous 계 정 은 안 전 하 지 가 못 하 며 가 능 한 막 는 것 이 좋 다 .
server는 지 정 된 port number로 서 socket들 을 만 들 기 위 하 여 super-user로 서 실 행 이 되 어 져 야 한 다 . 이 것 은 login 되 어 진 user의 영 향 력 있 는 user id를 지 속 하 며 socket에 address를 속 박 할 때 super-user의 권 한 을 얻 을 수 가 있 기 때 문 이 다 . 가 능 한 보 안 구 멍 에 대 해 서 세 밀 히 조 사 되 어 져 야 하 지 만 아 무 리 해 도 불 가 능 하 다 .
역 자
김 정 균 <admin [AT] oops.org> 2000년 8월 4일