ftpaccess(5) ftpaccess(5)
이름
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를 말하며, "anony-
mous"는 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의 역할을 하며 <addr-
glob>와 같이 슬래쉬('/')로 시작하는 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 명령이 제공되어져야 한다. <group-
name>은 /etc/group에 존재하는 group이어야 한다.
user의 home directory는 anonymous FTP가 그러한 것 처럼
정확하게 설정 되어야 한다. passwd entry의 home directory
field는 두개의 directory 들로 나뉘어져 있다. 첫번째
field는 chroot(2)가 부르는 인자가 될 root directory이다.
두번째 반은 root directory로 연관된 user의 home direc-
tory이다. 두 디렉토리의 구분은 "/./"로서 한다.
예를 들어 /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는 먼저 <host-
name> 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/ftp-
groups 에 정의된 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>는 어떠한 문자열도 사용할수있다. whites-
pace(공백문자 와 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> parame-
ter는 "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" 이라는 key-
word들의 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가 포함되어 진다면, log-
ging은 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 명령은 외부 프로그램인 ftp-
shut(8)을 자동으로 사용을 하게 된다.
daemonaddress <address>
이 값이 지정이 되어 있지 않으면, 서버는 모든 IP
address에서의 접속에 귀를 귀울이게 된다. 반면에
지정이 되어 있으면 오직 지정된 IP address 에만 귀를
귀울이게 된다.
이 절의 사용은 안하는 것이 좋다. 이것은 하나의 site만을
지원할때 추가가 되어진다. 이것은 virtual hosting 설정을
무시하며, 구문은 아마도 daemon의 다음 버젼에서는 변화할것
같다.
virtual <address> <root|banner|logfile> <path>
virtual ftp server를 가능하게 한다. <address>는 vir-
tual server의 ip address를 지정한다. 두번째 인자중
root 는 virtual server를 위한 ftproot의 경로를 지정을
하며, banner 는 virtual server에 접속을 할때 user에게
출력을 할 내용의 경로를 지정을 하며 logfile 은 vir-
tual 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
이름
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를 말하며, "anony-
mous"는 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의 역할을 하며 <addr-
glob>와 같이 슬래쉬('/')로 시작하는 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 명령이 제공되어져야 한다. <group-
name>은 /etc/group에 존재하는 group이어야 한다.
user의 home directory는 anonymous FTP가 그러한 것 처럼
정확하게 설정 되어야 한다. passwd entry의 home directory
field는 두개의 directory 들로 나뉘어져 있다. 첫번째
field는 chroot(2)가 부르는 인자가 될 root directory이다.
두번째 반은 root directory로 연관된 user의 home direc-
tory이다. 두 디렉토리의 구분은 "/./"로서 한다.
예를 들어 /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는 먼저 <host-
name> 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/ftp-
groups 에 정의된 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>는 어떠한 문자열도 사용할수있다. whites-
pace(공백문자 와 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> parame-
ter는 "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" 이라는 key-
word들의 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가 포함되어 진다면, log-
ging은 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 명령은 외부 프로그램인 ftp-
shut(8)을 자동으로 사용을 하게 된다.
daemonaddress <address>
이 값이 지정이 되어 있지 않으면, 서버는 모든 IP
address에서의 접속에 귀를 귀울이게 된다. 반면에
지정이 되어 있으면 오직 지정된 IP address 에만 귀를
귀울이게 된다.
이 절의 사용은 안하는 것이 좋다. 이것은 하나의 site만을
지원할때 추가가 되어진다. 이것은 virtual hosting 설정을
무시하며, 구문은 아마도 daemon의 다음 버젼에서는 변화할것
같다.
virtual <address> <root|banner|logfile> <path>
virtual ftp server를 가능하게 한다. <address>는 vir-
tual server의 ip address를 지정한다. 두번째 인자중
root 는 virtual server를 위한 ftproot의 경로를 지정을
하며, banner 는 virtual server에 접속을 할때 user에게
출력을 할 내용의 경로를 지정을 하며 logfile 은 vir-
tual 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