Re: guest-root and upload
Dave Mackintosh <[email protected]> Sat, 03 Apr 2004 10:52:41 -0500
| Newsgroups | gmane.network.ftp.wuftpd.user |
|---|---|
| Message-ID | <1081007561.20620.82.camel@saturn> |
Sorry for being unclear -- yes I am, but I am using the /./ hack in /etc/passwd to tell the system where to do the chroot. This works. The only changes between my initial config and what I am running is the removal of guest-root and all the upload directives, the addition of the defumask directive, and the permissions of the incoming user's directories. On Sat, 2004-04-03 at 10:37, Ted Keller wrote: > So does this mean that you are no longer executing a chroot to the > directory where guests are permitte? > > ted keller > > > On Sat, 3 Apr 2004, Dave Mackintosh wrote: > > > On the off chance anyone cares: > > > > I abandoned the guest-root usage, and resorted to using the filesystem > > permissions to enforce the ownership scheme I wanted. We will trust > > filesystem permissions to keep users separated. > > > > In /opt/UXdmz/private, all customer directories receive a chmod g+ws, > > setting the set-GID bit on the directory. > > > > I then added a > > > > defumask 660 guests > > > > directive to the ftpaccess file. > > > > This exhibits the behaviour I wanted: uploaded files get the uploader as > > an owner, and the ftp-admin's group as the group, with permissions > > suitable for deletion by the ftp-admin through ftp. > > > > Interestingly this all works perfectly regardless of the 'upload' > > directives -- I'm currently running with a > > > > upload /opt/UXdmz/ftproot * no > > > > directive as the only upload directive in the ftpaccess file, which > > according to the documentation implies no one should be able to upload > > anything anywhere. I can only conclude that the upload directives are > > being completely ignored. This behavior is consistant on both Solaris > > and Linux builds of 2.6.2 (with the two current patches). > > > > On Sun, 2004-02-08 at 10:35, Dave Mackintosh wrote: > > > Greetings, list > > > > > > I've gone through the old archives of this list (I notice that the archives only > > > go up to April 2003, is that intentional?) and can't find a solution to my problem -- > > > although I see the symptoms described a couple of times. > > > > > > So: > > > > > > wu-ftpd 2.6.2 (with the two current patches) > > > Solaris 8 > > > > > > My problem is that when I use the guest-root directive, user accounts end up in > > > the chroot directory, not their local-home directory. When I _don't_ use the > > > guest-root directive, the file mode and ownership parts of the upload directive > > > are ignored. > > > > > > The main goal is to get the file modes and ownerships correct, I really don't care > > > about guest-root because the /./ hack works properly for me. > > > > > > OK, server layout. > > > > > > The ftp server is rooted at /opt/UXdmz/ftproot. All users get > > > chrooted to this directory, and it has a complete (and functional) > > > set of /lib and /usr content. > > > > > > So a sample user might look like this in /etc/passwd: > > > > > > dave:x:516:511:FTP Client:/opt/UXdmz/ftproot/./private/dave:/bin/false > > > > > > And in /etc/group, the relevant lines are: > > > > > > guest:*:400:dave > > > dave::511: > > > > > > Note that there are other user accounts as members of the 'guest' group, but > > > they have been removed from this example. > > > > > > A couple of directories which might be relevant: > > > > > > dr-x--x--- 20 admin guest 512 Jan 22 10:35 /opt/UXdmz/ftproot/private > > > dr-xr-xr-x 2 root other 512 Feb 6 11:52 /opt/UXdmz/ftproot/etc > > > drwxrwx--- 2 dave admin 512 Feb 6 11:53 /opt/UXdmz/ftproot/private/dave > > > > > > User dave also has an entry in /opt/UXdmz/ftproot/etc/passwd" > > > > > > dave::516:511::/private/dave: > > > > > > We are using file-system level permissions to prevent users from > > > seeing the presence of each other on the system. With this layout, > > > user dave can cd into and through /private, but can't list the > > > content. So he can't see other users, and because he isn't a member > > > of the admin group, he can't cd into other users accounts even if he > > > knows they are there. It also means that an admin account has full > > > read-write permissions to all user directories, to either drop off > > > files for users or clean up after them. (We know this isn't perfect, > > > but it works OK enough for our requirements.) > > > > > > This permissions layout works as intended both with and without the > > > guest-root directive. > > > > > > So when dave connects to this ftp server and uploads a file, I'd like > > > it to obey this upload directive: > > > > > > # this upload parameter controls the /private areas > > > upload /opt/UXdmz/ftproot /private/* yes * admin 0664 > > > > > > IF I am _not_ using guest-root, I get file permissions like this: > > > > > > -rw-r--r-- 1 dave dave 1040 Feb 8 10:24 /opt/UXdmz/ftproot/./private/dave/test.gz > > > > > > IF I _am_ using guest-root, I get file permissions like this: > > > > > > -rw-rw-r-- 1 dave admin 1040 Feb 8 10:24 /opt/UXdmz/ftproot/./private/dave/test.gz > > > > > > ...which is what I want -- BUT when dave logs in he gets dumped in > > > /opt/UXdmz/ftproot and must manually cd private/dave before > > > performing his upload. > > > > > > The documentation makes a big deal about the post-chroot /etc/passwd > > > being 'locally correct', and as far as I can tell it is. But I'm obviously > > > missing something and can't see what it is. > > > > > > If anyone has any ideas (or would like more information) please let me know. > > > > > > Thanks! > > > > > > Here's my /etc/ftpaccess file: > > > > > > # For more information see the O'Reilly book "Managing Internet > > > # Information Services". Chapter 5. > > > # > > > # Modification History > > > # 9 March 1999 [ Chris Kramer ] > > > # Created > > > # 1 October 2001 [ David Mackintosh ] > > > # Modified for use on relay > > > > > > # > > > # real logins do not get chroot'd so limit those directly > > > # > > > #class local real *.myco-name-replaced.com > > > class guests guest * > > > class anon anonymous * > > > > > > # > > > # this disables anonymous access > > > defaultserver private > > > > > > # Greeting -- be terse > > > greeting terse > > > > > > # > > > # Stop after 40 concurrent connections! This is a SPARC 1+ ! > > > # > > > limit guests 40 Any /msgs/ftpbusy.msg > > > limit anon 40 Any /msgs/ftpbusy.msg > > > > > > # Default umask > > > #defumask 113 > > > > > > # > > > # Limits to 1 failed logins. Slows door knockers. > > > # > > > loginfails 1 > > > > > > # > > > # UNIX group of all customer FTP logins. > > > # > > > guestgroup guest > > > guestuser * > > > email [email protected] > > > message /msgs/welcome.msg login > > > message .message cwd=* > > > readme README* login > > > readme README* cwd=* > > > > > > # lock everyone into the chroot base: > > > #guest-root /opt/UXdmz/ftproot > > > > > > # ...and lock each user into their home directory: > > > #restricted-uid * > > > > > > # > > > # log all command and transfers > > > # > > > log commands real,guest,anonymous > > > log transfers real,guest,anonymous inbound,outbound > > > log syslog+xferlog > > > > > > # > > > # directory aliases > > > # > > > alias inc /incoming > > > alias priv /private > > > > > > # > > > # define cdpath > > > # > > > cdpath /incoming > > > cdpath /pub > > > cdpath / > > > > > > # > > > # allow compression and tarification > > > # > > > compress yes local > > > compress yes guests > > > compress no anon > > > tar yes local > > > tar yes guests > > > tar no anon > > > > > > # > > > # where to look for a shutdown message > > > # > > > shutdown /tmp/shutdown.msg > > > > > > # > > > # these all default to "yes" for everybody... > > > # > > > chmod no anonymous,guest # no anon/guest chmods > > > delete no anonymous # no anon/guest deletes > > > overwrite no anonymous,guest # no anon/guest overwrites > > > rename no anonymous # no anon/guest renames > > > umask no anonymous,guest # no anon/guest umasks > > > > > > # > > > # encourage anon users to supply a real email address as password > > > # > > > passwd-check rfc822 warn > > > > > > # > > > # prohibit anon/guest uploads to oddly named files > > > # > > > pathfilter anonymous /msgs/ftpbadpath.msg ^[-A-Za-z0-9\._]*$ ^\. ^- > > > pathfilter guest /msgs/ftpbadpath.msg ^[-A-Za-z0-9\._]*$ ^\. ^- > > > > > > # don't permit retrieval of our dot files > > > noretrieve .notar > > > noretrieve /etc/passwd > > > > > > # > > > # allow uploads into the ~/incoming directory only -- but no subdirectories > > > # > > > upload /opt/UXdmz/ftproot /incoming yes admin admin 0664 nodirs > > > > > > # > > > # this upload parameter controls the /private areas > > > # we rely mostly on filesystem permissions to keep users out of each other's > > > # private areas > > > # > > > upload /opt/UXdmz/ftproot /private/* yes * admin 0664 > > > # > > > # this upload parameter controls /pub > > > # > > > upload /opt/UXdmz/ftproot /pub/ yes admin admin 0644 > > -- > > /\oo/\ > > / /()\ \ David Mackintosh | > > > > <!DSPAM:406edd413866196448043> -- /\oo/\ / /()\ \ David Mackintosh |