Experimental support for running BetaFTPD without being root (0.0.8) Note: THIS IS CODE IN TESTING, AND SHOULD NOT BE CONSIDERED A STABLE PART OF BETAFTPD IN ANY WAY. (Sorry for the shouting, it was just in case you were deaf. Well, now you are anyway...) BetaFTPD now has support (ahem) for running without root privilegies. When not running as root, you can't piggyback on the OS anymore, and have to employ some extra sort of database. More on this later. This is currently just a hack, with a lot of stuff missing, and lots of debugging messages still being in. The reason I want to release it in this verson, is to get feedback from any users (hello! where are you?) :-) There are several things you must do to get nonroot support working: 1. configure BetaFTPD with `--enable-nonroot'. 2. Define FTP_PORT in ftpd.h to a port over 1024. The default setting for nonroot users is 12121, so make sure it is available, or choose another one. Be aware that anybody may pinch this port if you're not holding on to it... 3. Set up a `betaftpd.users' file in GLOBAL_ROOT_DIR, with the following format: uid username password homedir rootdir gid(s) uid: The user's uid (note that these fields do NOT have to match those in /etc/passwd, you're your own boss here). username: The user's username, of course. password: The password, encrypted with crypt(). homedir: The directory the user starts in. MUST BE UNDER ROOTDIR. rootdir: The directory the user sees as /. (Note that homedir and rootdir is seen from a chroot()ed perspective. So if you had set GLOBAL_ROOT_DIR to be `/betaftpd' and wanted a user to have the home directory `/betaftpd/foo/', you would use just `/foo/'.) Both directory names must be ended with a slash (/). gids: Any groups the user is member of, separated with a space. Should be at least one. Note: No blank lines or comments allowed. The fields are in a bit unusual order. This is to reduce parsing overhead. 4. Set up a `betaftpd.groups' file in GLOBAL_ROOT_DIR, with the following format: gid groupname These fields should be self-explanatory. 5. Set up a `.rights' file in every directory you want to be accessible. More details are in the file `README.rights'. I hope to add a GUI for all this one day, but for now it is more important for me to concentrate on the core development of BetaFTPD. Good luck! /* Steinar */