Manpages

이 름

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일