INSTALLATION INSTRUCTIONS as of $Date: 1997/01/16 09:54:04 $ 1a. Type "./build xxx" in the root of the source tree. where xxx is one of: gen : generic make (copy this when porting to a new system) aix : IBM AIX bsd : BSD bdi : BSD/OS dgx : Data General Unix dyn : Dynix fbs : FreeBSD hpx : HP-UX isc : ISC (Interactive Unix) lnx : Linux (tested on 0.99p8) nbs : NetBSD nx2 : NeXTstep 2.x nx3 : NeXTstep 3.x osf : OSF/1 ptx : ??? sco : SCO Unix 3.2v4.2 sgi : SGI Irix 4.0.5a sny : Sony NewsOS sol : SunOS 5.x / Solaris 2.x s41 : SunOS 4.1.x ult : Ultrix 4.x uxw : Unixware 4.2 If you are using gcc... Make sure that you the include files have been properly "fixed" according to the gcc 2.3.3 INSTALL instructions. If the server crashes before printing the banner message (during a vprintf) this is most probably the cause. 1b. If your system is not defined above... cp src/config/config.gen src/config/config.xxx cp src/makefiles/Makefile.gen src/makefiles/Makefile.xxx cp support/makefiles/Makefile.gen support/makefiles/Makefile.xxx Edit the three files appropriately. Go back to step 2a. [Be sure to send those changes to wu-ftpd-bugs@academ.com!] 3. Type "./build install" as the super-user. 4. Edit the "/etc/inetd.conf" file to point to the new ftpd. In most cases, this step will not be necessary as the install step should have placed the new softare in the same location as the old version. 5. On BSD-like sytems, type "kill -1 `ps t"?" | grep inetd`" On SGI systems, type "/etc/killall -HUP inetd" 6. For the server to support creation of .tar.Z files of directories, you need GNU tar installed [remember to put a copy in the anonymous ftp hierarchy]. If you need a copy, it is available from the host prep.ai.mit.edu in the /pub/gnu directory. 7. Copy the compress program to ~ftp/bin/compress. 8. Use the ckconfig program created when you did the first step to find out where to put the various configuration files for ftpd: ftpconversions, ftpusers, and ftpgroups. There are examples of these files in the doc/examples directory. ckconfig is in the bin directory. Be sure to fix any other problems ckconfig reports 9. Put any executables that you want anonymous users to be able to run in _SITE_EXEC. Be careful what you put here. 10. Rerun bin/ckconfig to make sure that all the support files are properly installed. SOME NOTES ABOUT THE FTP SERVER: 1. You need to have at least *one* class defined in the ftpaccess file. In the next release, this will change. 2. The ftpd(8) man page that came with your Operating System should do a good job of explaining how to set up the anonymous ftp hierarchy. At the very least, you will need ~ftp/bin (mode: 111 ---x--x--x) with a copy of "ls" (mode: 111 ---x--x--x) and ~ftp/etc (mode: 111 ---x--x--x) with an /etc/passwd. Alternatively, you may want to read the secure-ftpd-faq. See the NOTES file for information on how to obtain this faq. 3. Don't put encrypted passwords in ~ftp/etc/passwd. In fact, all you really need is entries for root and ftp. "ls" is the only part of the server that uses this file. 4. Anonymous FTP may have some troubles on machines which use dynamic shared libraries. The most common of these is SunOS 4.1.x. You will have trouble with using the binaries in ~ftp/bin if those binaries were compiled using those shared libraries, as the chroot() that ftpd does for anonymous users to ~ftp means that those links to the static libraries are lost. You cannot make a hard link or soft link to the libraries as the chroot will make those links meaningless. There are two ways to fix this: 1) Track down, using ldd, all the shared libs used by each binary you want to put in ~ftp/bin. Then copy these into their corresponding places in ~ftp: i.e., /usr/lib/ld.so must be copied into ~ftp/usr/lib/ld.so. However, ldd does not always show all the files that a compiled program may try to reference; if you use trace you can see every system call a binary makes, and that should show you every dependency. If you compiled with gcc, there are likely to be lots of references made. 2) Recompile any binary you wish to put in ~ftp/bin (ls, gzip, gtar, etc) using the -Bstatic (or -static in gcc) option in the CFLAGS *and* LDFLAGS options in their respective makefiles. You can get GNU versions of ls and gzip and everything else from wuarchive.wustl.edu. This is the easiest and most foolproof method - the statically compiled binaries may be a tad bigger, but you can use strip to pare down the size. [thanks to Brian Behlendorf for rewriting #4 more elegantly.] 3) One place to get source from which a statically linked ls can be built is: ftp://ftp.funet.fi/pub/local/src/ftpd-ls.tar.gz. 5. Make sure that you have a /etc/shells that lists all valid shells on your system. Otherwise, those who have shells not listed there will not be able to log in via ftp. [Yes, this is the expected behaivor.] Under Solaris 2.1, there is no /etc/shells by default. 6. Under Solaris 2.1, you need to have the following in ~ftp/dev crw-rw-rw- 1 root 11, 42 Mar 24 17:00 tcp cr--r--r-- 1 root 13, 12 Mar 24 16:23 zero 7. Under OSF/1, you need ~ftp/etc/sia/siainitgood. 8. Under DEC Ultrix, you need ~ftp/etc/svc.conf 9. NeXT systems: You need a copy of /usr/shlib/libsys_s.B.shlib in ~ftp/usr/shlib/libsys_s.B.shlib. Make sure that ~ftp/usr, ~ftp/usr/shlib are mode 0555 (dr-xr-xr-x) and ~ftp/usr/shlib/libsys_s.B.shlib is mode 0555 (-r-xr-xr-x). 10. If you are using this system under Linux, you may get lots of warnings about problems when you compile - Just ignore them... You will probably need at least libc4.3.3 and gcc2.3.3 to compile this.. You will also get (for now at least) errors (sometimes) when you do an ls or dir command.. This is a bug in the current Linux libraries.. It will say :- 425 Can not build Data Connection. Transport Endpoint Already Connected. (Or something like that...) Just retype the ls/dir command until it works all other commands work fine.. [karl@hci.national-physical-lab.co.uk] 11. Certains files need to be inside the anonymous ftp hierarchy. They are all referenced after the chroot(~ftp): all messages (deny, welcome, etc.) shutdown _PATH_EXECPATH 12. In order for shutdown to work properly for real, guest, and anonymous users -- you must create a link. For example... if shutdown is defined to be /etc/shutmsg: root# ln -s ~ftp/etc/shutmsg /etc/shutmsg That way, when ftpshut creates the shutdown message, it will be within the real user space and the anonymous user space. 13. On many operating systems, you will need to duplicate the necessary database files that support the ctime() family of routines. On SunOS, this means duplicating the /usr/share/lib/zoneinfo directory relative to ~ftp. On BSD/OS, this means copying the /etc/localtime file to ~ftp/localtime. 14. On later versions (4.1.2) of AIX, the yacc will not be able to convert ftpcmd.y. Get a copy of GNU BISON and use it instead. 15. There are two mailing lists available that discuss the server. They are wu-ftpd and wu-ftpd-announce. To subscribe to either send a "subscribe " message to listproc@mail.wustl.edu $Id: INSTALL,v 1.7 1997/01/16 09:54:04 sob Exp $