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