이 름
ftpaccess − ftpd 설 정 file
설 명
ftpaccess file은 ftpd(1) 의 운 영 을 설 정 하 는 데 사 용 한 다 .
접 근 방 법 설 정
autogroup <groupname> <class> [<class> ...]
Anonymous user가 특 정 <class>의 member일 때 , ftp server는 <groupname>에 setegid()를 실 행 할 것 이 다 . 이 것 은 특 정 group의 anonymous user들 에 게 file과 directory를 group-and-owner-read-only의 권 한 으 로 접 근 을 허 락 하 는 것 을 말 한 다 . <groupname>은 /etc/group에 존 재 하 는 group이 어 야 한 다 .
class <class> <typelist> <addrglob> [<addrglob> ...]
<addrglob> 형 식 의 source address들 로 user의 <class>를 정 의 한 다 . <class>는 중 복 되 어 설 정 을 할 수 있 으 며 "class"를 중 복 되 게 나 열 하 여 class의 추 가 member를 정 의 할 수 있 다 . 이 중 복 된 "class"들 이 현 재 session에 적 용 이 된 다 면 access file에 나 열 되 어 있 는 것 들 중 가 장 먼 저 나 오 는 것 이 사 용 되 어 진 다 . class의 설 정 을 잘 못 하 면 접 속 거 부 를 당 하 게 된 다 . <typelist>는 "anonymous", "guest", "real"의 keyword가 존 재 하 며 이 3개 의 keyword는 comma(컴 마 )로 서 구 분 을 한 다 . "real"은 real account로 ftp를 사 용 하 는 user를 말 하 며 , "anonymous"는 anonymous FTP를 위 한 user(anonymous, ftp)를 말 한 다 . "guest"는 손 님 사 용 자 로 처 리 되 는 user를 말 한 다 . ( "guestgroup"을 참 조 하 면 더 많 은 정 보 를 얻 을 수 있 다 .)
<addrglob>는 도 메 인 네 임 또 는 ip address로 설 정 을 하 며 , 슬 래 쉬 (’/’) 로 시 작 을 하 는 file 이 름 일 수 도 있 다 . 이 파 일 은 address:netmask 또 는 address/cidr의 형 식 과 같 은 추 가 주 소 를 포 함 한 다 .
<addrglob>
앞 에 "!"를 위 치
시 키 면 , 예 를 들
어
class rmtuser real !*.example.com
rmtuser class처 럼 example.com 도 메
인 외 에 서 접 근
할 수 있 는 실 제
유 저 를 지 정 할
수 있 다 .
deny <addrglob> <message_file>
<addrglob>와 비 교 하 여 매 치 도 는 host의 접 근 을 거 절 하 며 <message_file> 에 서 지 정 할 file의 내 용 을 출 력 한 다 . <addrglob>는 nameserver에 등 록 되 어 있 지 않 은 site들 의 접 속 을 거 부 하 기 위 한 nameser의 역 할 을 하 며 <addrglob>와 같 이 슬 래 쉬 (’/’)로 시 작 하 는 file의 이 름 을 지 정 할 수 도 있 으 며 이 파 일 에 는 address:netmask 또 는 address/cidr의 형 식 과 같 은 추 가 주 소 를 포 함 한 다 .
guestgroup <groupname>
[<groupname> ...]
guestuser <username> [<username> ...]
realgroup <groupname> [<groupname> ...]
realuser <username> [<username> ...]
REAL user가 <groupname>의 한 member라 면 , guestgroup을 위 한 session은 anonymous FTP와 같 이 정 확 하 게 설 정 되 어 야 한 다 . 다 시 말 해 , chroot()가 실 행 되 어 져 야 하 며 , USER와 PASS 명 령 이 제 공 되 어 져 야 한 다 . <groupname>은 /etc/group에 존 재 하 는 group이 어 야 한 다 .
user의 home directory는 anonymous FTP가 그 러 한 것 처 럼 정 확 하 게 설 정 되 어 야 한 다 . passwd entry의 home directory field는 두 개 의 directory 들 로 나 뉘 어 져 있 다 . 첫 번 째 field는 chroot(2)가 부 르 는 인 자 가 될 root directory이 다 . 두 번 째 반 은 root directory로 연 관 된 user의 home directory이 다 . 두 디 렉 토 리 의 구 분 은 "/./"로 서 한 다 .
예
를 들 어 /etc/passwd에 서 ,
real entry:
guest1:<passwd>:100:92:Guest
Account:/ftp/./incoming:/etc/ftponly
guest1이 log in을 성 공 적
으 로 수 행 했 을
때 ftp server는 chroot("/ftp")
를 한 다 음
chdir("/incoming") 을 할
것 이 다 . guest user는 anonymous
FTP user가 그 러 하 듯
이 오 직 /ftp 하 위
의 directory 구 조 에 접
근 이 가 능 하 다 .
(guest1에 게 는 /로 서
보 이 며 작 동 한
다 .)
group name은 이 름 이 나 숫 자 ID로 지 정 되 어 야 한 다 . 숫 자 로 된 group ID를 사 용 하 기 위 해 서 는 , 숫 자 이 전 에 ’%’를 위 치 시 켜 야 한 다 . 모 든 goup을 나 타 내 는 asterisk(*)-를 사 용 하 는 것 처 럼 영 역 을 지 정 할 수 도 있 다 .
guestuser는 user name(또 는 숫 자 ID)을 사 용 하 지 않 는 것 을 제 외 하 고 는 guestgroup처 럼 작 동 한 다 .
realuser와 realgroup은 동 일 한 문 법 을 가 지 지 만 , guestuser와 guestgroup의 영 향 과 는 반 대 이 다 . relauser와 realgroup은 원 격 접 속 user가 guest로 결 정 되 어 지 는 것 이 아 닐 때 real user 접 속 을 허 락 한 다 .
예
를 들 어 :
guestuser *
realgroup admin
와 같 이 설 정 을
했 을 때 유 일 하
게 real user 접 근 을 허
락 받 은 admin group에 있
는 user들 을 제 외 하
고 는 모 든 non-anonymous
user들 은 guest로 취 급
이 되 어 지 기 때
문 이 다 .
nice <nice-delta> [<class>]
원 격 user가 <class>에 정 의 된 멤 버 라 면 지 정 된 <nice-dalta> 의 해 ftp server process의 process nice value를 조 절 한 다 . 만 약 <class>가 지 정 되 지 않 으 면 , ftp server process nice value 는 기 본 으 로 지 정 된 <nice-delta> 를 사 용 한 다 . 이 기 본 nice value 조 정 은 ftpaccess file에 존 재 하 는 class-specific ’nice’ 지 시 자 에 대 해 어 떤 class에 도 속 하 지 않 는 user들 을 위 해 server process의 nice value를 조 정 하 기 위 하 여 사 용 되 어 진 다 .
defumask <umask> [<class>]
원 격 user가 class에 정 의 된 멤 버 라 면 , daemon에 의 해 만 들 어 진 file들 의 umask를 지 정 한 다 . <class>가 지 정 되 지 않 으 면 , 어 떤 것 도 지 정 되 지 않 은 class들 을 위 해 umask는 기 본 값 으 로 사 용 이 된 다 .
tcpwindow <size> [<class>]
data connection에 대 한 TCP window size를 지 정 한 다 . 이 것 은 network traffic을 조 정 하 기 위 해 사 용 할 수 있 다 . 예 를 들 어 느 린 PPP dialin link들 은 효 율 을 높 이 기 위 해 더 작 은 TCP window들 이 필 요 하 게 된 다 . 이 것 에 대 해 잘 모 르 겠 다 면 그 냥 나 두 도 록 한 다 .
keepalive <yes|no>
data socket을 위 하 여 TCP SO_KEEPALIVE를 지 정 하 여 네 트 워 크 를 끊 는 것 을 조 절 할 수 있 다 . Yes: 는 사 용 을 하 는 것 이 며 No는 system의 기 본 값 을 사 용 하 겠 다 는 것 을 의 미 한 다 (보 통 off이 다 ). 당 신 은 아 마 도 이 것 을 셋 팅 하 는 것 을 원 할 것 이 다 .
timeout accept
<seconds>
timeout connect <seconds>
timeout data <seconds>
timeout idle <seconds>
timeout maxidle <seconds>
timeout RFC931 <seconds>
다 양 하 게 timeout을 지 정 할 수 있 다 .
Accept (기 본 120초 ) : 데 몬 이 얼 마 나 incoming(PASV) data 접 속 을 기 다 릴 지 를 설 정 한 다 .
Connect (기 본 120초 ) : 데 몬 이 얼 마 나 outgong(PORT) data 접 속 을 이 루 기 위 해 위 해 시 도 하 는 것 을 기 다 릴 지 를 설 정 하 며 , 실 제 접 속 시 도 에 영 향 을 미 친 다 . 데 몬 은 여 러 번 시 도 를 하 게 되 며 , 완 전 히 접 속 이 되 기 전 까 지 각 각 의 시 도 사 이 에 텀 을 가 지 게 된 다 .
Data (기 본 1200초 ): 데 몬 이 어 떤 실 제 data접 속 을 이 루 기 위 해 기 다 리 는 시 간 을 지 정 한 다 . 원 격 접 속 자 들 이 클 라 이 언 트 를 통 해 아 주 작 은 데 이 타 큐 와 느 린 결 합 을 가 질 수 있 도 록 길 게 잡 아 줘 야 한 다 .
Idle (기 본 900초 ): 데 몬 이 새 로 운 명 령 을 수 행 할 때 까 지 얼 마 나 기 다 릴 지 를 설 정 한 다 . 기 본 으 로 ftp 데 몬 을 실 행 할 때 -a 옵 션 을 사 용 하 여 지 정 할 수 지 정 할 수 있 으 며 이 때 에 는 설 정 파 일 에 서 의 값 은 무 시 되 어 진 다 .
MaxIdle (기 본 1200초 ): SITE IDLE 명 령 은 원 격 유 저 가 idle 시 간 초 과 를 통 하 여 높 은 값 을 형 성 하 도 록 한 다 . 이 것 은 클 라 이 언 트 가 요 청 하 는 것 들 을 제 한 하 는 최 대 값 을 지 정 한 다 . ftpd 시 작 시 에 -A 옵 션 으 로 지 정 할 수 있 으 며 이 때 에 는 설 정 파 일 에 서 의 값 은 무 시 되 어 진 다 .
RFC931 (기 본 10초 ): 데 몬 이 전 체 RFC931(AUTH/ident) 소 통 을 허 락 할 최 대 사 간 을 지 정 한 다 . 0으 로 설 정 을 하 면 데 몬 이 이 프 로 토 콜 을 사 용 하 는 것 을 완 전 히 막 는 다 . RFC931을 통 해 얻 는 정 보 들 은 시 스 템 로 그 에 기 록 이 되 고 , 실 제 로 어 떠 한 인 증 에 도 사 용 이 되 지 는 않 는 다 .
file-limit [<raw>] <in|out|total> <count> [<class>]
지 정 된 class에 서 user가 전 송 할 수 있 는 data file들 의 수 를 제 한 한 다 . limit는 in, out 또 는 둘 다 file안 에 위 치 한 다 . class가 지 장 되 지 않 았 다 면 , limit는 limit가 지 정 되 지 않 은 class들 을 위 한 기 본 값 으 로 사 용 된 다 . 부 가 적 으 로 raw parameter는 단 지 date file들 보 다 는 total traffic을 제 한 하 는 데 적 용 을 한 다 .
data-limit [<raw>] <in|out|total> <count> [<class>]
class에 지 정 된 user가 전 송 하 는 data를 byte 단 위 로 제 한 한 다 . limit는 in, out 또 는 둘 다 를 byte를 기 준 으 로 한 다 . class를 지 정 하 지 않 으 면 , limit 는 limit를 지 정 하 지 않 은 class들 을 위 한 기 본 값 으 로 사 용 된 다 . limit를 지 정 을 하 면 지 정 한 이 상 을 초 과 하 여 전 송 을 할 수 없 다 . 하 지 만 진 행 중 인 전 송 에 는 적 용 이 되 지 않 는 다 . 부 가 적 으 로 raw parameter는 단 지 date file들 보 다 는 total traffic을 제 한 하 는 데 적 용 을 한 다 .
limit-time {*|anonymous|guest} <minutes>
session이 가 질 수 있 는 총 시 간 을 제 한 한 다 . 기 본 적 으 로 제 한 이 걸 려 있 지 않 다 . real user들 은 제 한 을 받 지 않 는 다 .
guestserver [<hostname>]
anonymous 또 는 guest 접 속 을 위 해 사 용 되 어 지 는 host들 을 조 정 한 다 . <hostmane> 없 이 사 용 을 한 다 면 , 모 든 guest 나 anonymous 접 속 은 접 근 을 거 부 당 한 다 . 하 나 이 상 의 <hostname>을 지 정 해 야 한 다 . guest와 anonymolus 접 속 은 machain들 의 이 름 에 기 반 해 서 허 락 되 어 진 다 . 접 근 이 거 절 되 면 , user는 먼 저 <hostname> list에 등 록 이 되 어 져 야 만 사 용 이 가 능 하 다 .
limit <class> <n> <times> <message_file>
<class>에 서 접 근 을 하 는 <n> user들 을 <times> 시 간 에 제 한 하 며 , user가 접 근 을 거 절 당 할 때 <message_file>을 출 력 한 다 . Limit check는 login시 에 만 수 행 된 다 . 다 중 "limit" 명 령 이 현 재 의 session에 적 용 이 된 다 면 먼 저 설 정 된 것 이 사 용 되 어 진 다 . limit 정 의 가 빠 지 거 나 limit가 -1로 설 정 이 되 면 unlimit로 작 동 을 한 다 . <times>는 UUCP L.sys file에 서 의 time과 같 은 형 식 이 다 .
noretrieve
[absolute|relative] [class=<classname>] ... [-]
<filename>
<filename> ...
설
정 된 file들 의 상 대
적 기 능 을 제 한
한 다 . file들 이 절 대
경 로 설 정 을 사
용 (’/’ character로 시
작 하 는 것 처 럼 )
한 다 면 , 이 file들 은
얻 을 수 없 는 것
으 로 표 기 가 되
어 진 다 . 다 시 말
해 filename과 매 치 되
는 모 든 file들 은 전
송 이 거 절 된 다 .
예 를 들 어
noretrieve /etc/passwd core
설 정 은 /etc/passwd file을 얻
어 갈 수 없 게 한
다 . 이 에 반 해 이
것 이 /etc에 있 지 않
는 다 면 ’passwd’ file을
전 송 받 아 갈 수
가 있 다 . 다 른 면
에 서 ’core’라 는
이 름 을 가 진 file은
어 디 서 도 전 송
을 받 을 수 가 없
다 .
슬
래 쉬 (’/’)로 끝
나 는 절 대 경 로
는 그 directory안 의 모
든 file들 을 전 송 할
수 없 게 표 기 되
어 지 는 것 을 의
미 한 다 . <filename>은 file
golb 처 럼 지 정 을 해
야 한 다 . 예 를 들
어
noretrieve /etc /home/*/.htaccess
/etc 에 있 는 어 떠 한
file들 이 나 하 위 디
렉 토 리 들 을 제
한 하 도 록 정 의
하 는 것 이 다 . 또
한 , /home 디 렉 토 리
하 위 의 어 느 곳
에 서 나 ’.htaccess’의
파 일 이 름 을 가
진 파 일 을 제 한
한 다 .
부 가 적 인 첫 번 째 의 매 개 변 수 는 현 재 의 chroot’d 환 경 에 절 대 적 또 는 상 대 적 으 로 해 석 되 어 지 는 이 름 들 인 지 아 닌 지 를 선 택 한 다 . 기 본 은 slash로 시 작 하 는 절 대 경 로 로 해 석 을 한 다 .
noretrieve
제 한 은 특 정 class들
의 member들 을 기 반 으
로 한 다 . 어 떤 class가
지 정 되 어 져 있
고 현 재 user가 어 떤
주 어 진 class들 의
member들 이 라 면 지 정
된 file들 은 상 대 적
인 것 이 아 니 다 .
allow-retrieve [absolute|relative]
[class=<classname>]... [-]
<filename> ...
noretrieve에 의 해 거 부 되 어 진 file들 의 복 구 를 허 락 한 다 .
loginfails <number>
<number> login 실 패 후 에 , "repeated login failusers" message를 출 력 한 후 , FTP 연 결 을 종 료 한 다 . 기 본 값 은 5이 다 .
private <yes|no>
user login 후 , SITE GROUP과 SITE GPASS 명 령 은 강 화 된 접 속 group과 연 결 된 password를 지 정 하 기 위 해 사 용 되 어 진 다 . group name과 password가 지 정 되 면 , user는 setgid()를 통 해 서 group 접 근 file /etc/ftpgroups 에 정 의 된 group의 member가 된 다 .
group access
file의 형 식 은 아 래
와 같 다 .
access_group_name:encrypted_password:real_group_name
access_group_name은 문 자 숫
자 식 (alphanumeric)과 구 둣
점 (punctuation) 으 로 이 루
어 진 임 의 의 문
자 열 이 며 ,
encrypted_password는 /etc/passwd 와
같 이 정 확 하 게
crypt(3) 를 통 해 서 암
호 화 되 어 진
password이 다 . real_group_name 은
/etc/group 에 속 해 있
는 유 효 한 group 이 름
이 다 .
주 의 :anonymous FTP user들 에 대 한 작 업 을 하 기 위 하 여 이 option들 을 통 해 ftp server는 /etc/group 을 계 속 참 고 를 하 며 , group access file은 memory에 load가 되 어 져 있 어 야 한 다 . 이 것 은 (1) ftp server는 additional file descriptor open을 가 져 야 하 며 , (2) necessary password들 과 접 근 권 한 들 은 FTP session의 지 속 을 위 해 SITE GROUP을 통 해 정 적 으 로 user들 에 게 주 어 진 다 는 것 을 뜻 한 다 .만 약 access group들 과 /또 는 password를 변 경 하 기 위 해 서 는 작 동 하 고 있 는 모 든 FTP server들 을 죽 여 야 한 다 .
Informational Capabilities
greeting
full|brief|terse
greeting text <message>
remote user가 login 하 기 전 에 얼 마 나 많 은 정 보 를 보 여 줄 지 를 설 정 할 수 있 다 . ’greeting full’이 기 본 이 며 , hostname과 daemon version을 보 여 준 다 . ’greeting brief’는 hostname을 보 여 준 다 . 비 록 full이 기 본 이 지 만 brief도 많 이 사 용 되 어 진 다 .
원 한 다 면 ’text’ 형 태 로 도 지 정 을 할 수 가 있 다 . <message>는 어 떠 한 문 자 열 도 사 용 할 수 있 다 . whitespace(공 백 문 자 와 tab)은 하 나 의 single space로 변 환 된 다 .
banner <path>
banner는 user가 username/password를 입 력 하 기 전 에 출 력 이 된 다 는 것 을 제 외 하 고 는 message 명 령 과 유 사 하 게 작 동 을 한 다 . <path>는 anonymous FTP directory 의 base(/home/ftp)가 아 니 라 real system root를 기 준 으 로 한 다 .
WARNING:
이 명 령 을 사 용
하 는 것 은 FTP server의
사 용 을 표 시 하
는 것 으 로 부 터
좋 지 않 은 의 도
의 FTP client들 을 완 전
하 게 막 을 수 있
다 . 모 든 client들 이
multi-line 응 답 들 을 조
정 할 수 있 는 것
은 아 니 다 . (어 떻
게 banner들 이 출 력 되
어 지 는 지 )
hostname <some.host.name>
ftp server의 기 본 host name을 정 의 한 다 . 이 string은 magic cookie %L을 사 용 할 때 마 다 greeting message에 출 력 이 되 어 진 다 . virtual server들 의 host name은 이 값 을 덮 어 쓰 게 된 다 . 지 정 을 하 지 않 으 면 , local machine의 기 본 host name이 사 용 되 어 진 다 .
email <name>
ftp main 관 리 자 의 email address를 정 의 한 다 . 이 string은 magic cookie %E를 사 용 할 때 마 다 출 력 이 되 어 진 다 .
message <path> {<when> {<class> ...}}
<path>와 함 께 file을 지 정 하 며 user가 login을 할 때 나 working directory를 변 경 할 때 ftpd가 user에 게 이 file의 내 용 을 출 력 하 게 끔 한 다 . <when> parameter는 "LOGIN" 또 는 "CWD=<dir>"을 이 용 한 다 . <when>이 "CWD=<dir>"이 면 <dir>에 는 공 지 를 보 여 줄 새 로 운 기 본 directory를 지 정 을 한 다 .
<class>는 부 가 적 으 로 사 용 이 되 어 지 며 , 오 직 특 정 class의 member 들 에 게 출 력 이 되 어 질 message를 지 정 을 한 다 . 하 나 이 상 의 class가 지 정 되 어 질 수 있 다 .
readmi
file에 서 지 정 된 text
string로 서 cookie를 대 체
하 기 위 해 "magic
cookie"를 사 용 할 수
가 있 다 .
%T 시 스 템 시 간 (형
식 Thu Nov 15 17:12:42 1990)
%F 현 재 파 티 션 의
여 유 공 간 (kbytes)
[모 든 system에 서 적 용
되 지 는 않 음 ]
%C 현 재 작 업 중 인
directory
%E ftpaccess 에 서 정 의 한
admin의 Email address
%R 원 격 host name
%L local host name
%u RFC931 인 증 을 통 해
결 정 된 username
%U login time때 주 어 진 username
%M 해 당 class의 최 대
접 속 자 수
%N 해 당 class에 서 의
현 재 접 속 자 수
%B disk block들 에 할 당 되
어 진 절 대 적 limit
%b disk block들 에 할 당 되
어 진 limit
%Q 현 재 block 수
%I inode (+1)에 할 당 된 최
대 값
%i 할 당 된 inode limit
%q inode에 할 당 된 현
재 값
%H excessive disk use 에 대 한 시
간 제 한
%h texcessive files에 대 한 시
간 제 한
ratios:
%xu 업
로 드 bytes
%xd 다 운 로 드 bytes
%xR 업 로 드 /다 운 로
드 비 율 (1:n)
%xc Credit bytes
%xT 시 간 제 한 (분 )
%xE Elapsed time since login (minutes)
%xL 남 은 시 간
%xU 업 로 드 한 계
%xD 다 운 로 드 한
계
이
message는 user들 을 귀 찮
게 하 는 것 을 피
하 기 위 하 여 오
직 한 번 만 출 력
이 된 다 . 메 세 지
들 이 익 명 FTP user에
의 해 서 수 행 되
었 을 때 <path>는 익
명 FTP directory tree의 root로 변
경 이 됨 을 기 억
해 야 한 다 .
readme <path> {<when> {<class>}}
ftp가 login시 나 file들 이 존 재 하 고 그 file들 의 date가 변 경 된 working directory로 이 동 을 할 때 user들 에 게 공 지 할 file들 을 <path>로 서 정 의 한 다 . <when> parameter는 "LOGIN" 또 는 "CWD=<dir>" 중 에 하 나 를 선 택 한 다 . <when>이 "CWD=<dir>" 이 면 , <dir>은 공 지 가 실 행 될 새 로 운 기 본 directory를 지 정 한 다 . message는 user들 을 귀 찮 게 하 는 것 을 피 하 게 하 기 위 하 여 오 직 한 번 만 출 력 이 될 것 이 다 . README message 들 이 익 명 FTP user에 의 해 수 행 이 될 때 , <path>는 익 명 FTP directory tree의 root로 변 경 이 됨 을 기 억 해 야 한 다 .
<class> option 지 정 은 message들 이 오 직 특 정 class의 member 들 에 게 만 출 력 이 되 어 지 도 록 할 수 있 다 . 하 나 이 상 의 class가 지 정 될 수 있 다 .
로 그 활 용
log commands <typelist>
user들 에 의 해 개 별 적 인 명 령 의 logging을 가 능 케 한 다 . <typelist>는 "anonymous", "guest", "real" 이 라 는 keyword들 의 list를 쉼 표 (comma) 로 서 분 리 하 여 지 정 할 수 있 다 . "real" keyword가 포 함 되 어 있 다 면 , logging은 real account로 접 근 하 기 위 해 FTP를 사 용 하 는 user들 을 위 해 작 동 을 할 것 이 다 . 그 리 고 "anonymous" keyword가 포 함 되 어 진 다 면 , logging은 anonymous FTP를 사 용 하 는 user들 을 위 해 작 동 할 것 이 다 . "guest" keyword는 guest 접 근 계 정 들 과 매 치 가 된 다 . (더 많 은 정 보 를 얻 기 위 해 서 는 "guestgroup"을 참 조 하 라 )
log transfers <typelist> <directions>
real user나 anonymous user들 모 두 를 위 한 file 전 송 의 logging을 가 능 케 하 며 , inbound와 outbound를 분 리 하 여 logging을 할 수 가 있 다 . <typelisst>는 "anonymous", "guest", "real"과 같 은 keyword의 list들 을 쉼 표 (comma)로 서 구 분 을 한 다 . "real" keyword가 포 함 되 어 있 다 면 , logging은 real account로 접 근 하 기 위 해 FTP를 사 용 하 는 user들 을 위 해 작 동 을 할 것 이 다 . 그 리 고 "anonymous" keyword가 포 함 되 어 진 다 면 , logging은 anonymous FTP를 사 용 하 는 user들 을 위 해 작 동 할 것 이 다 . "guest" keyword는 guest 접 근 계 정 들 과 매 치 가 된 다 . (더 많 은 정 보 를 얻 기 위 해 서 는 "guestgroup"을 참 조 하 라 ) <directions>은 "inbound"와 "outbound" 두 개 의 keyword를 쉼 표 로 서 구 분 을 하 여 지 정 을 하 며 , 이 option으 로 서 server로 보 내 고 받 는 file들 을 위 한 전 송 log를 기 록 한 다 .
log security <typelist>
real, guest, anonymous user들 을 위 한 보 안 rule들 (noretrieve, .notar, 등 )을 어 기 는 것 들 의 log를 기 록 하 도 록 한 다 . <typelist>는 "anonymous", "guest", "real" 이 라 는 keyword들 의 list를 쉼 표 (comma)로 서 분 리 하 여 지 정 할 수 있 다 . "real" keyword가 포 함 되 어 있 다 면 , logging은 real account로 접 근 하 기 위 해 FTP를 사 용 하 는 user들 을 위 해 작 동 을 할 것 이 다 . 그 리 고 "anonymous" keyword가 포 함 되 어 진 다 면 , logging은 anonymous FTP를 사 용 하 는 user들 을 위 해 작 동 할 것 이 다 . "guest" keyword는 guest 접 근 계 정 들 과 매 치 가 된 다 . (더 많 은 정 보 를 얻 기 위 해 서 는 "guestgroup" 을 참 조 하 라 )
log syslog+xferlog
incoming, outgoing 전 송 들 에 대 한 logging message들 을 syslog로 향 하 게 한 다 . 이 옷 변 이 없 으 면 메 세 지 들 은 xferlog에 기 록 이 된 다 .
syslog+xferlog는 system log와 xferlog 양 쪽 에 메 세 지 를 기 록 한 다 .
Upload/Download 비 율
이
명 령 들 을 사 용
하 기 위 해 서 는
WU-FTPD 컴 파 일 시 에
--enable-ratios 옵 션 을 줘 야
한 다 .
ul-dl-rate <rate> [<class> ...]
업 로 드 /다 운 로 드 비 율 을 지 정 한 다 . (1:rate) ftp user가 1 byte를 업 로 드 할 때 <rate> byte를 얻 게 된 다 . 기 본 값 으 로 는 비 율 이 없 다 .
dl-free <filename> [<class> ...]
<filename> file은 다 운 로 드 가 ratio에 적 용 받 지 않 는 다 .
dl-free-dir <dirname> [<class> ...]
<dirname> 디 렉 토 리 에 있 는 모 든 파 일 들 은 ratio에 적 용 을 받 지 않 는 다 . dl-free and dl-free-dir는 chroot() 환 경 이 아 닌 시 스 템 root를 사 용 하 여 제 한 을 하 게 된 다 는 것 을 주 의 해 야 한 다 .
여 러 가 지 활 용
alias <string> <dir>
directory에 대 한 alias와 <string>을 정 의 한 다 . 논 리 적 directory의 개 념 을 추 가 하 여 사 용 할 수 있 다 .
예
를 들 어 :
alias rfc: /pub/doc/rfc
은 user들 이 명 령 어
"cd frc:"에 의 해 어
떤 directory로 부 터
/pub/doc/rfc로 access하 는 것
을 가 능 케 한 다 .
cdpath <dir>
cdpath안 에 entry를 정 의 한 다 . 이 것 은 directory 변 경 시 에 사 용 되 어 지 는 search path를 정 의 한 다 .
예
를 들 어 :
cdpath /pub/packages
cdpath /.aliases
은 user들 이 /pub/packages 또
는 /.aliases directory들 하 위
에 있 는 어 떤
directory로 직 접 cd를 하
는 것 을 허 락 한
다 . search path는 ftpaccess file에
기 록 된 line들 의 순
서 에 의 해 정 의
되 어 진 다 .
user들
이 명 령 을 실 행
하 면 :
cd foo
directory들 은 아 래 의
순 서 를 통 해 찾
아 질 것 이 다 .
./foo
an alias called "foo"
/pub/packages/foo
/.aliases/foo
cd path는
오 직 cd 명 령 어 로
서 만 가 능 하 다 .
만 약 많 은 수 의
alias들 을 가 지 고 있
다 면 아 마 user들 에
게 사 용 가 능 하
게 만 들 고 싶 은
모 든 곳 으 로 링
크 를 하 는 것 으
로 alias들 을 설 치 하
기 를 원 할 것 이
다 .
compress <yes|no> <classglob> [<classglob>
...]
tar <yes|no> <classglob> [<classglob>
...]
<classglob>와 매 치 하 는 class를 위 해 compress와 tar 사 용 을 가 능 하 게 한 다 . 실 제 전 환 은 외 부 file FTPLIB/ftpconversions에 의 해 정 의 가 되 어 진 다 .
shutdown <path>
<path>에
file이 지 정 이 되 면 ,
서 버 는 정 기 적
으 로 이 file의 내 용
을 확 인 을 하 여
셧 다 운 을 하 도
록 한 다 . 셧 다 운
계 획 이 존 재 하
면 user는 서 버 로 부
터 이 에 대 한 통
보 를 받 게 된 다 .
셧 다 운 전 의 지
정 된 시 간 이 후
에 는 새 로 운 접
속 이 거 절 되 며 ,
셧 다 운 이 전 의
지 정 된 시 간 에
는 현 재 접 속 자
들 의 연 결 이 해
제 된 다 . <path>에 지
정 된 파 일 의 구
조 는 아 래 와 같
다 :
<연 도 > <월 > <일
> <시 > <분 > <거
절 _offset> <해 제 _offset>
<text>
<연
도 > 1970년 도 이 후
로 지 정 을 한 다 .
<월 > 1-12월 을 0-11로
지 정 을 한 다 .
<일 > 0-23
<분 > 0-59
<거 절 _offset> 와 <해
제 _offset> 은 셧 다 운
을 하 기 전 에 새
로 운 접 속 을 거
절 하 는 것 과 현
재 존 재 하 는 접
속 을 해 제 하 는
offset을 HHMM 형 식 으 로
지 정 을 한 다 . 0120은
1시 간 20분 을 의 미
한 다 .
<text>는
"message"의 rule들 을 따
르 며 , 아 래 에 나
열 되 어 있 는 추
가 적 인 magic cookie를 사
용 할 수 도 있 다 .
%s 시 스 템 이 셧 다
운 되 는 시 간
%r 새 로 운 접 속 이
거 부 되 는 시 간
%d 현 재 사 용 자 들
이 강 제 logout되 는 시
간
모 든 시 간 들 은 ddd
MMM DD hh:mm:ss YYYY 의 형 태 로
사 용 이 된 다 . 설
정 file에 는 오 직 하
나 의 "shutdown" 명 령
만 가 능 하 다 .
설
정 file에 서 의 shutdown 명
령 은 외 부 프 로
그 램 인 ftpshut(8)을 자
동 으 로 사 용 을
하 게 된 다 .
daemonaddress <address>
이 값 이 지 정 이 되 어 있 지 않 으 면 , 서 버 는 모 든 IP address에 서 의 접 속 에 귀 를 귀 울 이 게 된 다 . 반 면 에 지 정 이 되 어 있 으 면 오 직 지 정 된 IP address 에 만 귀 를 귀 울 이 게 된 다 .
이
절 의 사 용 은 안
하 는 것 이 좋 다 .
이 것 은 하 나 의
site만 을 지 원 할 때
추 가 가 되 어 진
다 . 이 것 은 virtual hosting
설 정 을 무 시 하
며 , 구 문 은 아 마
도 daemon의 다 음 버 젼
에 서 는 변 화 할
것 같 다 .
virtual <address> <root|banner|logfile>
<path>
virtual ftp server를 가 능 하 게 한 다 . <address>는 virtual server의 ip address를 지 정 한 다 . 두 번 째 인 자 중 root 는 virtual server를 위 한 ftproot의 경 로 를 지 정 을 하 며 , banner 는 virtual server에 접 속 을 할 때 user에 게 출 력 을 할 내 용 의 경 로 를 지 정 을 하 며 logfile 은 virtual server를 위 한 전 송 을 기 록 하 기 위 한 file의 경 로 를 지 정 을 한 다 . 만 약 logfile 를 지 정 하 지 않 으 면 기 본 적 인 ftp logfile이 사 용 이 되 어 진 다 . virtual server들 에 적 용 이 되 어 지 는 message file들 의 문 법 과 permission들 은 다 른 message file에 서 사 용 하 는 것 과 같 다 .
주 의 : OS에 서 이 요 소 가 지 원 이 안 될 수 도 있 다 . 이 것 은 BSD/OS, Solaris 2.X 와 Linux 에 서 테 스 트 가 되 어 졌 다 .
<address>는 IP number보 다 는 hostname으 로 지 정 이 되 어 져 야 한 다 . 만 약 FTP session이 시 작 되 어 질 때 DNS check가 불 가 능 하 다 면 hostname이 match가 되 어 지 지 않 으 므 로 이 때 는 사 용 을 하 지 말 아 야 한 다 .
나
(번 역 자 ^^)의 경 험
으 로 는 hostname보 다
는 ip address로 지 정 을
하 는 것 이 좋 다 .
특 히 ip address 하 나 로
name-based virtual server를 운 영 하
기 를 원 한 다 면
wu-ftpd 에 서 는 지 원
을 하 지 않 는 다
는 점 을 주 의 하
도 록 하 자 .
virtual <address> <hostname|email>
<string>
환 영 message와 status 명 령 에 hostname을 보 여 주 도 록 설 정 을 한 다 . 또 한 message file과 HELP 명 령 에 서 주 어 진 <string> 에 email address를 사 용 하 도 록 한 다 .
virtual <address>
allow <username> [<username> ...]
virtual <address> deny <username>
[<username> ...]
일 반 적 으 로 , real과 guest 유 저 들 은 이 들 이 guest들 이 고 virtual root로 chroot가 지 정 이 되 기 전 까 지 는 virtual server로 접 근 이 허 락 되 지 않 는 다 . virtual allow line들 의 list에 있 는 user 들 은 접 근 을 허 락 된 다 . username에 ’*’를 지 정 하 면 모 든 user들 이 접 속 을 허 락 한 다 는 의 미 로 사 용 이 되 어 진 다 . virtual deny 절 들 은 virtual allow 절 들 이 후 에 진 행 이 되 며 , 모 든 user들 이 허 락 되 어 졌 을 때 deny access를 지 정 을 하 기 위 하 여 사 용 되 어 진 다 .
virtual <address> private
일 반 적 으 로 , 익 명 사 용 자 들 은 virtual server에 log가 허 락 되 어 진 다 . 이 option은 그 들 의 접 근 을 거 절 하 는 데 사 용 을 한 다 .
virtual <address> passwd <file>
가 상 도 메 인 마 다 다 른 패 스 워 드 파 일 을 사 용 할 수 있 다 . 이 옵 션 을 사 용 하 기 위 해 서 는 컴 파 일 시 에 --enable-passwd(또 는 다 른 PASSWD)를 주 고 컴 파 일 을 해 야 한 다 .
virtual <address> shadow <file>
가 상 도 메 인 마 다 다 른 쉐 도 우 파 일 을 사 용 할 수 있 다 . 이 옵 션 을 사 용 하 기 위 해 서 는 컴 파 일 시 에 --enable-passwd(또 는 다 른 PASSWD)를 주 고 컴 파 일 을 해 야 한 다 .
defaultserver deny
<username> [<username> ...]
defaultserver allow <username> [<username>
...]
일 반 적 으 로 , 모 든 user들 은 default FTP server (virtual FTP server가 아 닌 )로 의 접 근 이 허 락 되 어 진 다 . defaultserver 는 특 정 user들 의 접 속 을 거 부 를 하 는 데 사 용 을 한 다 ; ’*’를 지 정 을 하 면 모 든 user들 의 접 근 을 거 절 한 다 . 특 정 한 user들 은 defaultserver allow를 사 용 함 으 로 서 접 근 이 가 능 하 게 된 다 .
defaultserver private
일 반 적 으 로 , 익 명 user들 은 virtual FTP가 아 닌 기 본 FTP server로 접 근 이 허 락 되 어 진 다 . 이 문 장 은 익 명 접 근 을 거 부 하 는 데 사 용 을 한 다 .
virtual과 defaultserver의 allow, deny, private절 은 어 떤 user들 이 어 떠 한 FTP server들 에 접 근 이 허 락 되 어 지 는 것 을 조 절 할 수 있 다 는 의 미 를 제 공 한 다 .
passive address <externalip> <cidr>
PASV 명 령 으 로 온 응 답 으 로 리 포 트 된 주 소 의 조 절 을 허 락 한 다 . 어 떤 control connection이 <cidr> 이 요 구 하 는 passive data connection (PASV)와 매 치 를 할 때 <externalip> 주 소 가 리 포 트 되 어 진 다 . 주 의 : 이 것 은 daemon이 실 제 로 귀 를 귀 울 이 는 주 소 를 변 화 시 키 는 것 은 아 니 다 . 오 직 client로 리 포 트 되 는 주 소 일 뿐 이 다 . 이 요 소 는 IP-renumbering firewall들 뒤 에 서 daemon들 이 정 확 하 게 동 작 하 게 하 는 것 을 허 락 을 한 다 .
예
를 들 어 :
passive address 10.0.1.15 10.0.0.0/8
passive address 192.168.1.5 0.0.0.0/0
모 든 곳 으 로 부
터 의 접 속 이
192.168.1.5에 귀 를 귀 울
이 고 있 는 동 안 A
class의 network 10으 로 부 터
의 client의 접 속 은 passive
connection 이 ip address 10.0.1.15에 귀
를 귀 울 이 고 있
다 는 것 을 의 미
한 다 .
Multiple
passive address들 은 complex의 조
정 으 로 정 의 가
되 거 나 , multi-gateway 또 는
network들 의 조 정 으 로
정 의 가 되 어 진
다 .
passive ports <cidr> <min> <max>
passive data connection을 통 해 사 용 되 어 지 는 TCP port number들 의 control을 허 락 한 다 . control connection이 <min> 에 서 <max> 까 지 의 영 역 에 있 는 <cidr> 포 트 와 매 치 된 다 면 , daemon이 귀 를 귀 울 이 는 것 을 통 해 마 구 잡 이 로 선 택 이 될 것 이 다 . 이 요 소 는 remote client들 이 안 전 장 치 가 되 어 있 는 network에 접 근 을 할 때 사 용 을 하 는 port들 을 제 한 하 는 firewall들 을 허 락 한 다 .
<cidr>
은 machine address와 는 반 대
되 는 slash뒤 에 4자 리
로 표 기 되 고 또
는 각 자 리 의 bit의
합 으 로 표 시 되
는 network address를 통 해 표
시 된 다 . 예 를 들
어 , 10대 의 A class로 예
약 된 대 역 을 사
용 한 다 면 , netmask 255.0.0.0
대 신 CIDR "/8"을 사
용 할 수 있 으 며
network를 10.0.0.0/8 로 표 현
을 할 수 가 있 다 .
pasv-allow <class> [<addrglob> ...]
port-allow <class> [<addrglob> ...]
일 반 적 으 로 데 몬 은 지 정 지 않 은 주 소 에 서 는 PORT 명 령 을 허 락 하 지 않 는 다 . 그 리 고 이 것 은 다 른 주 소 로 부 터 PASV 접 속 을 허 락 하 지 않 는 다 는 것 을 의 미 한 다 .
port-allow 절 은 PORT 명 령 이 주 어 진 유 저 class로 지 정 된 주 소 의 리 스 트 들 을 규 정 한 다 . 이 주 소 들 은 비 록 클 라 이 언 트 쪽 의 IP address가 매 치 가 되 지 않 는 다 해 도 허 락 이 된 다 .
pasv-allow 절 은 데 이 터 접 속 을 만 드 는 유 저 클 래 스 로 지 정 된 주 소 리 스 트 를 규 정 한 다 . 이 주 소 들 은 비 록 클 라 이 언 트 쪽 의 IP address가 매 치 가 되 지 않 는 다 해 도 허 락 이 된 다 .
lslong <command>
[<options> ...]
lsshort <command> [<options> ...]
lsplain <command> [<options> ...]
lslogn, lsshort, lsplain 절 은 commnad와 options들 을 열 거 하 여 directory listing을 사 용 하 는 것 을 허 락 한 다 . option들 은 공 백 을 포 함 할 수 없 으 며 , 기 본 적 인 것 들 은 이 절 들 을 통 해 일 반 적 으 로 조 정 이 된 다 는 것 을 주 의 해 야 한 다 ; 절 대 적 으 로 필 요 할 경 우 에 만 lslong, lsshort 또 는 osplain 을 사 용 한 다 .
mailserver <hostname>
FTP 데 몬 이 어 떠 한 upload가 발 생 했 을 경 우 메 일 을 보 낼 메 일 서 버 를 지 정 한 다 . 한 줄 에 하 나 씩 써 서 여 러 개 의 메 일 서 버 를 지 정 할 수 있 다 ; 데 몬 은 하 나 의 메 세 지 가 받 아 질 까 지 각 업 로 드 통 지 의 배 달 을 시 도 하 게 된 다 . 메 일 서 버 를 지 정 하 지 않 으 면 로 컬 호 스 트 로 보 내 게 된 다 . 이 옵 션 은 익 명 업 로 드 의 공 지 를 의 미 한 다 . (incmail을 참 조 하 라 )
incmail <emailaddress>
virtual <address> incmail <emailaddress>
defaultserver incmail <emailaddress>
익 명 업 로 드 시 통 지 를 할 메 일 어 드 레 스 를 기 록 한 다 . 여 러 개 를 지 정 하 여 각 각 통 지 를 받 을 수 가 있 다 . 지 정 하 지 않 으 면 , 통 지 를 보 내 지 않 는 다 .
가 상 호 스 트 에 대 해 지 정 을 하 면 , 오 직 이 주 소 만 이 익 명 업 로 드 에 대 한 통 지 를 받 게 된 다 . 반 대 로 지 정 하 지 않 으 면 전 체 주 소 로 통 지 가 보 내 진 다 .
Defaultserver 주 소 는 오 직 FTP session이 하 나 의 가 상 호 스 트 로 만 사 용 되 지 않 을 경 우 에 만 적 용 된 다 . 이 경 우 에 는 기 본 익 명 영 역 에 대 해 서 만 통 지 를 받 게 되 며 통 지 를 지 정 하 지 않 은 가 상 호 스 트 들 에 게 는 통 지 를 볼 수 가 없 다 .
mailfrom
<emailaddress>
virtual <address> mailfrom <emailaddress>
defaultserver mailfrom <emailaddress>
익 명 업 로 드 통 지 를 위 한 보 내 는 사 람 의 메 일 주 소 를 지 정 한 다 . 하 나 의 주 소 는 지 정 이 되 어 있 어 야 한 다 . mailfrom이 적 용 되 어 있 지 않 다 면 , 메 일 은 기 본 메 일 박 스 이 름 인 ’wu-ftpd’로 메 일 을 보 재 게 된 다 . 통 지 에 답 장 을 시 도 하 는 것 을 피 하 기 위 해 서 는 또 는 반 송 이 되 는 것 을 막 기 위 해 서 , mailfrom 주 소 를 반 드 시 지 정 하 는 것 이 좋 다 .
권 한 활 용
chmod
<yes|no> <typelist>
delete <yes|no> <typelist>
overwrite <yes|no> <typelist>
rename <yes|no> <typelist>
umask <yes|no> <typelist>
특 정 function들 을 수 행 할 수 있 는 권 한 들 을 허 락 하 고 불 허 한 다 . 기 본 적 으 로 , 모 든 user들 에 게 허 락 이 되 어 진 다 .
<typelist>는
keyword "anonymous", "guest",
"real", "class=" 들 을
컴 마 (",")로 서 구
분 하 여 나 열 한
다 . "class="를 나 타
낼 때 는 , classname 이 꼭
따 라 와 야 한 다 .
어 떤 "class=" 를 나
타 낼 때 , <typelist> 제
한 은 오 직 class의
user들 에 게 만 적 용
이 된 다 .
passwd-check <none|trivial|rfc822>
(<enforce|warn>)
anonymous
ftp를 통 해 server에 접
근 을 할 때 level과 password
check 의 형 태 를 정 의
한 다 .
none password check를 하 지 않
는 다 .
trivial password에 ’@’이 반
드 시 포 되 어 있
는 지 를 check한 다 .
rfc822 password가 rfc822에 의 거
한 주 소 로 되 어
있 는 지 를 확 인
한 다 .
warn user에 게 경 고 는
하 되 , login은 허 락 한
다 .
enforce user에 게 경 고 를
하 며 login은 허 락 하
지 않 는 다 .
deny-email <case-insensitive-email-address>
e-mail 주 소 를 효 력 이 없 는 요 소 로 서 검 토 를 하 게 한 다 . 만 약 passwd-check가 enforce로 셋 팅 되 어 있 으 면 , 익 명 user들 은 이 주 소 를 password로 사 용 하 여 login할 수 가 없 다 . 이 것 을 이 용 하 여 IE?0User@ or mozilla@ 와 같 은 어 리 석 을 WWW brosers가 사 용 을 하 는 거 짓 된 주 소 들 을 사 용 하 는 user들 을 막 을 수 가 있 다 . (이 것 을 사 용 함 으 로 서 , ftp를 위 해 WWW browser를 사 용 하 는 user들 을 막 는 것 에 대 해 고 심 할 필 요 가 없 다 . 단 그 들 이 사 용 을 하 는 browser를 정 확 하 게 setting을 해 야 한 다 .) 오 직 한 line당 하 나 의 주 소 만 설 정 이 되 지 만 , 원 하 는 만 큼 의 deny-email address를 가 질 수 가 있 다 .
path-filter <typelist>
<mesg> <allowed_charset> {<disallowed
regexp>
...}
<typelist>의
user들 을 통 해 ,
path-filter는 정 규 표 현
식 을 filename으 로 할
지 안 할 지 를 정
의 한 다 . 다 중 으
로 정 규 표 현 식
들 을 허 락 하 지
는 않 는 다 . 만 약
filename이 정 규 표 현
식 의 척 도 와 매
치 하 지 않 는 다
면 , <mesg> 가 user 들 에
게 출 력 이 되 어
질 것 이 다 . 예 를
들 어 :
path-filter anonymous /etc/pathmsg ^[-A-Za-z0-9._]*$ ^\. ^-
는 익 명 사 용 자
들 을 통 한 모 든 upload
filename 들 은 반 드 시 A-Z,
a-z, 0-9, "._- "으 로 으
로 이 루 어 져 야
하 며 시 작 시 에
"."와 "-" 는 사
용 할 수 가 없 다
는 것 을 정 의 한
다 . 만 약 filename이 위
의 내 용 과 부 합
하 지 않 는 다 면
/etc/pathmsg 이 user들 에 게
출 력 이 될 것 이
다 .
upload [absolute|relative]
[class=<classname>]... [-] <root-dir>
<dirglob> <yes|no> <owner> <group>
<mode> ["dirs"|"nodirs"]
[<d_mode>]
<dirlob>로 서 upload를 허 락 하 거 나 허 락 하 지 않 을 directory를 지 정 한 다 .
upload를 허 락 한 다 면 , 모 든 file들 은 <owner>와 <goupr>으 로 소 유 권 을 가 질 것 이 며 , permissions들 은 <mode>에 따 른 다 .
directory들 은 가 장 매 치 가 잘 되 는 원 칙 에 따 른 다 .
예
를 들 어 :
upload /var/ftp * no
upload /var/ftp /incoming yes ftp daemon 0666
upload /var/ftp /incoming/gifs yes jlc guest 0600 nodirs
이 것 은 /incoming 과 /incoming/gifs
에 만 upload를 허 락 한
다 . /incoming 에 upload 된 file들
은 ftp/daemon 의 소 유 권
을 가 지 며 , 퍼 미
션 은 0666을 가 지 게
된 다 . /incoming/gifs에 upload 되
어 진 file은 jlc/guest의 소
유 권 을 가 지 며 ,
0600의 퍼 미 션 을 가
지 게 된 다 . 여 기
서 <root-dir>은 passowrd file에
서 "ftp" user에 게 지
정 된 directory와 반 드
시 매 치 가 되 어
야 한 다 는 것 을
명 심 해 야 한 다 .
부 가 적 으 로 "dirs" 와 "nodirs" keyword는 mkdir 명 령 을 사 용 하 여 어 떠 한 새 로 운 subdirectory를 만 드 는 것 을 허 락 하 거 나 허 락 하 지 않 는 것 을 지 정 한 다 .
upload 명 령 을 사 용 할 때 , directory 생 성 은 default로 허 락 이 되 어 진 다 는 것 을 주 의 해 야 한 다 . default 값 을 off로 바 꾸 기 위 해 서 는 이 config file에 서 upload 명 령 을 사 용 하 고 있 는 line중 가 장 윗 줄 에 user, group, mode를 지 정 해 야 하 며 , "nodirs"가 반 드 시 뒤 에 따 라 와 야 한 다 .
directory 생 성 을 허 가 할 때 부 가 적 으 로 <d_mode>라 는 지 시 자 를 사 용 할 수 있 으 며 이 것 은 directory를 생 성 할 시 의 direcotory permission을 지 정 한 다 . <d_mode>를 생 략 하 면 , permission은 <mode>를 따 라 가 며 , <mode> 마 져 생 략 되 어 있 으 면 0777이 된 다 .
upload keyword는 오 직 <root-dir>의 (chroot()가 적 용 이 되 는 )home directory를 가 지 고 있 는 user(즉 anonymous)에 게 만 적 용 이 된 다 . <root-dir>은 어 떠 한 home directory와 매 치 시 키 기 위 하 여 "*" 로 서 지 정 을 할 수 도 있 다 .
<owner> 와 /또 는 <group>은 어 떤 upload file이 나 directory 들 이 그 들 이 만 들 어 진 directory의 자 신 의 소 유 권 으 로 서 생 성 을 시 키 고 자 할 경 우 에 는 "*" 로 서 각 각 지 정 을 할 수 도 있 다 .
부 가 적 으 로 첫 번 째 parameter는 현 재 chroot 환 경 에 따 라 서 절 대 적 으 로 나 상 대 적 으 로 해 석 하 여 선 택 을 한 다 . 기 본 값 으 로 는 <root-dir>을 절 대 값 으 로 해 석 을 한 다 .
한 다 면 , 이 upload절 은 오 직 현 재 user가 어 떤 class의 member일 때 만 영 향 을 받 는 다 .
서
버 에 업 로 드 파
일 을 허 락 하 도
록 설 정 을 하 기
위 해 서 는
upload.cofiguration.HOWTO 를 꼭 읽
어 보 기 바 란 다 .
throughput <root-dir> <subdir-glob>
<file-glob-list> <bytes-per-second>
<bytes-per-second-multiply>
<remote-glob-list>
remote hostname 또 는 remote IP address가 comma로 분 리 된 <remote-glob-list>와 매 치 가 될 때 , <root-dir> 아 래 의 <subdir-glob>와 매 치 가 되 는 subdir에 서 comma로 구 분 된 <file-glod-list>를 통 하 여 다 운 로 드 에 서 <byte-per-second>의 전 송 처 리 량 이 제 한 되 는 file들 을 지 정 할 수 있 다 .
Entry들 은 가 장 부 합 되 는 원 칙 에 매 치 가 되 어 진 다 .
예
를 들 어 :
throughput /e/ftp * * oo - *
throughput /e/ftp /sw* * 1024 0.5 *
throughput /e/ftp /sw* README oo - *
throughput /e/ftp /sw* * oo - *.foo.com
이 것 은 defalut로 최 대 전 송 량 을 지 정 한 다 . 하 지 만 README라 는 이 름 지 어 지 지 않 은 e/ftp/sw/ 아 래 의 어 떤 file들 에 대 해 서 초 당 1024byte로 download를 제 한 한 다 . domain foo.com의 도 메 인 을 가 진 네 트 웍 에 서 오 는 remote host들 은 예 외 로 항 상 최 대 전 송 량 을 얻 을 수 있 다 .
매 시 간 remote client들 은 /e/ftp/sw 아 래 의 file을 제 한 받 으 며 , entry line과 매 치 가 되 는 byte per second는 내 부 적 으 로 계 수 (여 기 서 는 0.5)만 큼 씩 증 가 되 어 진 다 . 그 리 고 remote client가 두 번 파 일 을 제 한 할 때 , 이 것 은 512byte/s로 제 공 이 되 며 세 번 째 시 도 시 에 는 254byte/s, 4번 째 시 도 시 에 는 128byte/s 등 으 로 제 한 이 되 어 진 다 .
byte per second field의 "oo"는 전 송 량 제 한 을 하 지 않 는 것 을 의 미 한 다 . 1.0 씩 의 계 수 증 가 나 "-" 는 매 번 성 공 적 인 전 송 후 에 전 송 량 의 변 화 가 없 음 을 의 미 한 다 .
여 기 서 <root-dir>은 password database에 있 는 "ftp" user에 게 지 정 되 어 진 home directory와 반 드 시 매 치 가 되 어 야 한 다 는 것 을 주 의 해 야 한 다 . throughput(전 송 량 ) keyword는 오 직 <root-dir>의 (chroot()가 적 용 이 되 는 ) home directory를 가 지 고 있 는 user(즉 anonymous)에 게 만 적 용 이 된 다 .
anonymous-root <root-dir> [<class>]
<root-dir> 은 anonymous user들 의 chroot() path를 지 정 한 다 . anonymous-root 가 매 치 가 되 지 를 않 으 면 , 전 통 적 으 로 내 려 오 는 구 문 의 방 법 으 로 ’ftp’ user의 home directory를 사 용 을 한 다 . <class>가 지 정 이 되 지 않 으 면 , 어 떤 anonymous-root 지 정 이 되 지 않 은 anonymous user들 의 root directory가 된 다 . 라 인 에 여 러 개 의 class를 지 정 할 수 도 있 다 . user들 을 위 한 anonymous-root가 선 택 이 되 면 , <root-dir>/etc/passwd file에 잇 는 ’ftp’ user들 의 home directory가 사 용 되 어 지 며 , 최 초 의 directory와 system 전 반 적 인 /etc/passwd의 ’ftp’ user들 의 home directory는 사 용 이 되 지 않 는 다 .
예
를 들 면 :
anonymous-root /home/ftp
anonymous-root /home/localftp localnet 는 모
든 anonymous user들 의 chroot()를
/home/ftp로 지 정 을 하
며 , 최 조 의 CWD는 이
home directory가 된 다 . 그 러
나 class localnet의 anonymous user들
의 chroot()는 /home/localftp가 되
며 , 그 들 의 최 초
CWD는 /home/localftp/etc/passwd 에 있
는 ’ftp’ user들 의 home
directory로 부 터 영 향
을 받 게 된 다 .
guest-root <root-dir> [<uid-range>]
<root-dir>은 guest user들 의 chroot() path를 지 정 한 다 . guest-root가 매 치 가 되 지 않 으 면 전 통 적 으 로 내 려 오 는 구 문 의 방 법 으 로 user들 의 home directory가 사 용 되 어 진 다 . <uid-range>가 지 정 이 된 않 으 면 , 어 느 다 른 guest-root가 지 정 이 되 지 않 은 guest user들 을 위 한 root directory가 된 다 . 한 라 인 에 여 러 개 의 uid range들 을 지 정 할 수 도 있 다 . user들 을 위 한 guest-root가 선 택 이 되 면 , <root-dir>/etc/passwd file에 있 는 user들 의 home directory가 사 용 이 되 어 지 며 , 최 초 의 directory와 system 전 반 적 으 로 사 용 이 되 어 지 는 /etc/passwd의 home directory는 사 용 이 되 지 않 는 다 .
<uid-range>는 UID값 의 숫 자 로 지 정 을 한 다 . range들 은 dash에 의 해 구 분 되 어 지 는 상 ,하 경 계 가 주 어 짐 에 따 라 지 정 되 어 진 다 . 하 계 (lower bound)를 생 략 하 는 것 은 "all up to"를 뜻 하 며 , 상 계 (upper bound)를 생 략 하 는 것 은 "all starting from"을 의 미 한 다 .
예
를 들 어 :
guest-root /home/users
guest-root /home/staff %100-999 sally
guest-root /home/users/frank/ftp frank
는 모 든 user들 의
chroot()를 /home/users로 하 고 ,
/home/users/etc/passwd 에 서 지 정
된 그 들 의 home directory에
서 시 작 하 게 한
다 . range 100 부 터 999까 지
에 포 함 되 는 user들
과 user sally는 /home/staff로
chroot()가 되 어 지 며 ,
/home/staff/etc/passwd의 그 들 의
entry에 로 부 터 CWD가
영 향 을 받 는 다 .
single user frank는 /home/users/owner/ftp가
chroot()로 되 며 , CWD는
/home/users/owner/ftp/etc/passwd의 그 의
entry로 부 터 영 향 을
받 는 다 .
anonymous-root
와 guest-root를 위 한 명
령 들 은 매 우 중
요 하 다 는 것 을
주 의 해 야 한 다 .
user가 여 러 개 의 구
문 에 중 복 되 어
매 치 가 된 다 면 ,
오 직
처 음 것 만 적 용
이 된 다 . <class> 나
<uid-range>가 없 는 구
문 은 제 외 되 며 ,
어 떤 구 문 도 매
치 가 되 지 않 을
경 우 에 만 적 용
이 된 다 .
deny-uid <uid-range>
[...]
deny-gid <gid-range> [...]
allow-uid <uid-range> [...]
allow-gid <gid-range> [...]
이
절 들 은 UID와 GID 값 으
로 ftp server 로 의 접 근
거 부 를 지 정 한
다 . allow-uid 와 allow-gid 절 은
거 부 와 는 달 리
uid/gid 를 통 해 접 근
허 락 한 다 . 이 체
크 들 은 모 든 다
른 설 정 들 이 전
에 이 루 어 진 다 .
deny는 allow 이 전 에 체
크 가 된 다 . defalut로
는 모 두 접 근 을
허 락 을 한 다 . 모
든 경 우 에 서 , 이
것 은 /etc/ftpusers file을 통
한 필 요 성 을 제
거 할 수 있 다 . 예
를 들 어 :
deny-gid %-99 %65535
deny-uid %-99 %65535
allow-gid ftp
allow-uid ftp
anonymous ’ftp’ user/group을 제
외 한 Linux Box의 모 든
특 권 을 가 졌 거
나 특 정 한 user들 과
group들 의 ftp 접 근 을
거 부 한 다 . 많 은
경 우 , 이 것 을 이
용 하 여 /etc/ftpusers file의
역 할 을 대 신 할
수 있 만 이 것 은
/etc/ftpaccess file의 변 경 을
바 라 지 않 을 때
사 용 하 기 위 하
여 존 재 를 한 다 .
ftpaccess file을 통 해 single UID와 GID를 사 용 할 때 이 름 이 나 숫 자 둘 다 사 용 을 할 수 가 있 다 . 숫 자 를 사 용 하 기 위 해 서 는 , 숫 자 이 전 에
restricted-uid
<uid-range> [...]
restricted-gid <gid-range> [...]
unrestricted-uid <uid-range> [...]
unrestricted-gid <gid-range> [...]
이 절 들 은 real 또 는 guest user들 이 자 신 들 의 home directory 이 외 의 FTP site 영 역 에 접 근 하 는 것 을 조 절 한 다 . 이 것 은 guestgroup과 guestuser의 사 용 을 대 신 하 는 것 을 뜻 하 지 는 않 는 다 . 대 신 , guest들 의 작 용 을 보 완 하 는 데 사 용 할 수 는 있 다 . unrestricted-uid와 unrestircted-gid 절 은 restricted와 는 달 리 그 들 의 home directory들 이 외 의 directory에 user들 의 접 근 을 허 락 한 다 .
이
절 의 사 용 의 예
는 그 들 의 사 용
경 향 을 보 여 준
다 . user ’dick’의 home
directory가 /home/dick 이 고 ,
’jane’이 /home/jane 이 라
고 가 정 을 하 면 :
guest-root /home dick jane
restricted-uid dick jane
dick과 jane의 chroot’d가
/home일 동 안 , 그 들 의
home directory 들 을 제 한 받
기 때 문 에 각 각
다 른 file들 을 access 할
수 가 없 다 . Whereever possible, in
situations such as this example, try not to rely solely upon
the ftp restrictions. 다 른 모 든
ftp aceess 법 칙 에 서 , ftpaccess
설 정 의 작 동 을
보 완 하 기 위 해
directory와 file의 퍼 미 션
을 사 용 하 도 록
노 력 도 해 야 한
다 .
site-exec-max-lines <number> [<class> ...]
SITE EXEC
의 특 징 은 전 통
적 으 로 원 격 client로
보 내 지 는 line들 의
출 력 의 수 를 제
한 한 다 . 이 구 문
은 제 한 을 셋 팅
할 수 있 게 끔 한
다 . 생 략 하 면 20
line들 로 제 한 이 된
다 . limit 0은 제 한 을
하 지 않 는 다 는
것 을 의 미 한 다 ;
limit를 없 애 려 고 한
다 면 조 심 해 야
한 다 . 이 구 문 이
원 격 의 user class와 매
치 가 된 면 limit가 바
로 적 용 이 된 다 .
반 면 에 ’*’ class나
class가 주 어 지 지 않
은 구 문 역 시 사
용 되 어 질 수 있
다 . 예 를 들 어 ;
site-exec-max-lines 200 remote
site-exec-max-lines 0 local
site-exec-max-lines 25
Limits는 ’remote’ class의
user들 에 게 SITE EXEC (와 그
결 과 SITE INDEX) 로 부 터 200
line을 출 력 하 며 ,
’local’ class의 user들 에
게 는 제 한 을 하
지 않 는 다 . 그 리
고 모 든 다 른 user들
에 게 는 25 line의 제 한
을 적 용 한 다 .
dns refuse_mismatch <filename> [override]
원 격 사 이 트 의 forward와 reverse lookup이 맞 지 않 을 때 , FTP 세 션 을 거 부 하 며 , 메 세 지 파 일 과 같 은 파 일 을 접 근 유 저 에 게 출 력 을 한 다 . 옵 션 으 로 [override]를 지 정 을 할 경 우 에 는 메 세 지 를 출 력 한 후 에 접 근 을 허 락 한 다 .
dns refuse_no_reverse <filename> [override]
원
격 사 이 트 가 DNS 항
목 에 들 어 있 지
않 을 경 우 FTP세 션
을 거 부 하 며 , 메
세 지 파 일 과 같
은 파 일 을 접 근
유 저 에 게 출 력
한 다 . 옵 션 으 로
[override]를 지 정 을 할
경 우 에 는 메 세
지 를 출 력 한 후
에 접 근 을 허 락
한 다 .
dns resolveroptions [options]
resolveroptions
옵 션 은 name server 옵 션
들 을 피 하 는 것
을 허 락 한 다 . 이
라 인 은 resolver(3) 의
문 서 처 럼 플 래
그 의 종 류 를 취
한 다 . 부 가 적 으
로 + 나 - 에 의 해 설
정 을 해 나 갈 수
있 다 . 예 를 들 어
dns resolveroptions +aaonly -dnsrch
는 aaonly 옵 션 을 활 성
화 하 고 (오 직 믿
을 수 있 는 응 답
들 만 ), dnsrch 옵 션 (도
메 인 경 로 를 찾
는 것 )은 비 활 성
화 하 게 된 다 .
파 일
FTPLIB/ftpaccess
관 련 항 목
ftpd(8), umask(2), ftplog(5), ftpconversions(5), ftpshut(8)
역 자
김 정 균 <admin [AT] oops.org> 2000년 8월 5일