1993.1.22

SUBJECT: Anonymous ftp의 Setup(Solaris 1.x)

CONTENTS:
0. Anonymous ftp란 ?
1. Anonymous ftp의 동작 과정
2. Anonymous ftp의 Setup
3. ftp로 ftp server를 access하는 보기

DESCRIPTION:

0. Anonymous ftp란 ?
   * anonymous ftp는 ftp protocol의 server측 즉 "ftpd"가 수행하는 여러 service 중의 한 형태이다.
   * 어느 한 시스템에 자료들을 모아 놓고 필요한 사람들은 가져갈 수 있도록 하면서 
     또한 시스템측에선 자료가 필요한 사람들이 누구인지 알 필요도 없고
     따라서 그들 개별 사용자를 위한 user account를 만들 필요가 없고
     자료를 모아 놓은 곳 이외의 filesystem을 전혀 access하지 못하게 하려는 경우
     이 anonymous ftp는 유용하다.
   * 자료가 필요한 사람은 "ftp"로 user name "ftp" or "anonymous"로 login하여 
     필요한 자료를 ftp로 가져가면 된다. 

1. Anonymous ftp의 동작 과정
   * ftp를 service해주는 server측 ftpd는 
     client쪽 ftp가 username을 "ftp" or "anonymous"로 주고 들어오려는 경우
     자신의 /etc/passwd file에  username "ftp"("anonymous"가 아님)가 있는지를 확인한다.
   * 확인하여 있으면, 어떤 password로도 login 가능하다. 를 쳐도 좋다.
     전통적으로는 client쪽의 hostname(username@hostname)을 password로 주고 들어 갔었다.
   * login을 하면서 ftpd는 "chroot(2)" commannd를 사용하여
     /etc/passwd에 정의한 "ftp" account의 home directory를 'ftp root directory'로 인식시켜 준다.

2. Anonymous ftp의 Setup
   1) inetd.conf에서 ftpd가 사용될 수 있도록 되어 있는지 확인.
   2) /etc/passwd file에 "ftp"라는 account 등록.
      uid는 일반 user id로 적당한 것 할당하면 됨.
   3) "ftp" home directory의 setup
     - ~ftp : username "ftp"가 owner가 되고 다른 user들이 write할 수 없도록 만든다.
     - ~ftp/bin : superuser가 owner가 되도록 만든다.
                  /bin/ls를 copy해다 permission mode를 111로 만든다.
     - ~ftp/usr/lib/ld.so : runtime loader인 /usr/lib/ld.so를 copy해 놓는다.
     - ~ftp/dev/zero : runtime loader에 의해 사용되는 것으로 "mknod zero c 3 12" command로 만든다.
     - ~ftp/usr/lib/libc.so.* : shared C library의 latest version을 copy한다.
     - ~ftp/usr/lib/libdl.so.*
     - ~ftp/etc : superuser가 owner가 되도록 만들고 다른 user가 write 못하도록 만든다.
                  /etc/passwd, /etc/group file을 copy해 놓아야 "ls" 수행시 정상적 결과를 볼 것이다.
                  이 file들의 mode는 444가 되어야 한다.
     - ~ftp/pub : owner는 "ftp", mode 777로 만든다.
                  anonymous account로 들어와 보거나 가져갈 file들을 여기에 가져다 놓는다.

3. ftp로 ftp server를 access하는 보기

   ▶ sparc# ftp atom
      Connected to atom.
      220 atom FTP server (SunOS 4.1) ready.
      Name (atom:root): ☞① anonymous
      331 Guest login ok, send ident as password.
   ▶ Password: ☞②
      230 Guest login ok, access restrictions apply.
   ▶ ftp> pwd
      257 "/" is current directory.
   ▶ ftp> ls -l
      200 PORT command successful.
      150 ASCII data connection for /bin/ls (192.9.10.101,1235) (0 bytes).
      total 5
      drwxr-xr-x  2 root          512 Jan 22 07:04 bin
      drwxr-xr-x  2 root          512 Jan 22 07:07 dev
      drwxr-xr-x  2 root          512 Jan 22 07:14 etc
      drwxrwxrwx  2 ftp           512 Jan 24 03:39 pub
      drwxr-xr-x  3 root          512 Jan 22 07:06 usr
      226 ASCII Transfer complete.
      remote: -l
      259 bytes received in 0.16 seconds (1.6 Kbytes/s)
   ▷ ftp> ls -lR bin
      200 PORT command successful.
      150 ASCII data connection for /bin/ls (192.9.10.101,1236) (0 bytes).
      bin: Is a directory
      426 Transfer aborted. Data connection closed.
      226 Abort successful
   ▶ ftp> cd bin
      250 CWD command successful.
   ▶ ftp> ls -l
      200 PORT command successful.
      150 ASCII data connection for /bin/ls (192.9.10.101,1237) (0 bytes).
      total 15
      ---x--x--x  1 root        15144 Jan 22 07:04 ls
      226 ASCII Transfer complete.
      remote: -l
      59 bytes received in 0.13 seconds (0.46 Kbytes/s)
   ▶ ftp> cd ../dev
      250 CWD command successful.
   ▶ ftp> ls -l
      200 PORT command successful.
      150 ASCII data connection for /bin/ls (192.9.10.101,1238) (0 bytes).
      total 0
      crw-r--r--  1 root       3,  12 Jan 22 07:07 zero
      226 ASCII Transfer complete.
      remote: -l
      60 bytes received in 0.061 seconds (0.96 Kbytes/s)
   ▶ ftp> cd ../etc
      250 CWD command successful.
   ▶ ftp> ls -l
      200 PORT command successful.
      150 ASCII data connection for /bin/ls (192.9.10.101,1239) (0 bytes).
      total 3
      -r--r--r--  1 root          155 Jan 22 07:14 group
      -r--r--r--  1 root         1032 Jan 22 07:14 passwd
      226 ASCII Transfer complete.
      remote: -l
      114 bytes received in 0.066 seconds (1.7 Kbytes/s)
   ▶ ftp> cd ../usr/lib
      250 CWD command successful.
   ▶ ftp> ls -l
      200 PORT command successful.
      150 ASCII data connection for /bin/ls (192.9.10.101,1240) (0 bytes).
      total 592
      -r-xr-xr-x  1 root        40960 Jan 22 07:06 ld.so
      -rwxr-xr-x  1 root       532480 Jan 22 07:08 libc.so.101.7
      -rwxr-xr-x  1 root        24576 Jan 22 07:12 libdl.so.1.0
      226 ASCII Transfer complete.
      remote: -l
      182 bytes received in 0.096 seconds (1.8 Kbytes/s)
   ▶ ftp> ls -l
      200 PORT command successful.
      150 ASCII data connection for /bin/ls (192.9.10.101,1241) (0 bytes).
      total 592
      -r-xr-xr-x  1 root        40960 Jan 22 07:06 ld.so
      -rwxr-xr-x  1 root       532480 Jan 22 07:08 libc.so.101.7
      -rwxr-xr-x  1 root        24576 Jan 22 07:12 libdl.so.1.0
      226 ASCII Transfer complete.
      remote: -l
      182 bytes received in 0.077 seconds (2.3 Kbytes/s)
   ▶ ftp> cd ../../pub
      250 CWD command successful.
   ▶ ftp> ls -l
      200 PORT command successful.
      150 ASCII data connection for /bin/ls (192.9.10.101,1242) (0 bytes).
      total 1
      -rw-r--r--  1 root          549 Jan 22 07:41 datafile
      226 ASCII Transfer complete.
      remote: -l
      64 bytes received in 0.086 seconds (0.72 Kbytes/s)
      ftp>
   ▷ ftp> get /pub/datafile /tmp
      200 PORT command successful.
      150 ASCII data connection for /pub/datafile (192.9.10.101,1243) (549 bytes).
      /tmp: Is a directory
      426 Transfer aborted. Data connection closed.
      226 Abort successful
   ▶ ftp> get /pub/datafile /tmp/datafile
      200 PORT command successful.
      150 ASCII data connection for /pub/datafile (192.9.10.101,1244) (549 bytes).
      226 ASCII Transfer complete.
      local: /tmp/datafile remote: /pub/datafile
      569 bytes received in 0.01 seconds (53 Kbytes/s)
   ▶ ftp> quit
      221 Goodbye.
   ▶ sparc# ls -l /tmp/datafile
      -rw-r--r--  1 root          549 Jan 24 12:50 /tmp/datafile
      sparc#
   

   "▶" 표시는 ftp mode에서 command를 실행한 line을 보여준다.
   "▷" 표시는 ftp mode에서 잘 못 실행된 line을 가리킨다.

   ☞①
     - login account를 넣어 주는 곳.
     - "anonymous"도 좋고 "ftp"여도 좋다. 
   ☞②
     - password를 넣는 곳.
     - 무엇이어도 좋다. 단지 만 쳐도 좋다.
       



Revision History
Created        on Jan. 22 ,1993