Controlling read access

Greg Larkin glarkin at
Wed Aug 6 17:20:20 UTC 2008

Hash: SHA1

John Almberg wrote:
|> | Now I have just one major league problem: when I logged in as one of
|> the
|> | users, to test the connections, I discovered that I had SUPER POWERS. I
|> | was able to delete any file that I could see, including ones that were
|> | owned by root. Digging uncovered the fact that pure-ftpd runs with root
|> | privileges... not so good for my situation.
|> |
|> | My guess is I need to compile with the --with-privsep switch turned
|> on...
|> |
|> | So, finally I have a real FreeBSD question!
|> |
|> | What is the proper way, in ports, to set a configuration flag? The only
|> | way I could figure out was to add it to the Makefile.
|> |     PRIVSEP "Enable privilege separation" on \
|> |
|> | If this is the correct way to turn this compile switch on, it doesn't
|> | seem to work. After running:
|> |
|> | make deinstall
|> | make config         # checking the privilage separation box
|> | make reinstall
|> |
|> | The logged in user can still delete any file, regardless of permissions
|> | or ownership. This is clearly a problem... I don't want my users to be
|> | able to blow away their own websites while they are uploading some
|> | images. I am still digging for info on this problem. Any thoughts, much
|> | appreciated!
|> |
|> | -- John
|> |
|> Hi John,
|> Try this sequence instead, and you should be all set:
|> make deinstall
|> make clean
|> make config (skip this if you've already chosen the options you want)
|> make install
|> The clean target will make sure that your environment is reset back to a
|> known state.  The install target will then perform a fresh build and
|> install with the privsep option enabled.  If you already had binaries in
|> your port directory, then the reinstall target installs them without
|> rebuilding, as far as I can tell from reading /usr/ports/Mk/
| Hi Greg,
| I tried your sequence, but it didn't seem to work. Or, perhaps it worked
| and the PRIVSEP option doesn't do what I expect it to. Logging in as a
| normal user gives that user root privileges.
| This seems pretty scary to me. Not so bad, since the user is locked into
| his own directory, but enough power to hurt themselves, which is too
| much power, IMHO. My users aren't experts. I can definitely see them
| clicking the delete key by accident.
| Back to digging for info...
| Thanks: John

Hi John,

After logging into pure-ftpd, even if I type "cd /", I cannot break out
of my home directory.  Because of the way UNIX permissions work, if root
~ (or any other user) owns a file in my home directory, I can still
delete it.  If you want to prevent that, you'll have to also use the
chflags command to protect file that you don't want to be removed by

On the server (as root):

fbsd70# pwd
fbsd70# touch testfile
fbsd70# ls -l testfile
- -rw-r--r--  1 root  glarkin  0 Aug  6 13:12 testfile
fbsd70# ls -lo testfile
- -rw-r--r--  1 root  glarkin  - 0 Aug  6 13:12 testfile
fbsd70# chflags uchg testfile
fbsd70# ls -lo testfile
- -rw-r--r--  1 root  glarkin  uchg 0 Aug  6 13:12 testfile

Logged in to FTP as glarkin:

ftp> dir testfile
200 PORT command successful
150 Connecting to port 5003
- -rw-r--r--    1 0        glarkin         0 Aug  6 13:12 testfile
226-Options: -a -l
226 1 matches total
ftp> del testfile
550 Could not delete testfile: Operation not permitted

Hope that helps,
- --
Greg Larkin - The Power To Serve
Version: GnuPG v1.4.7 (MingW32)
Comment: Using GnuPG with Mozilla -


More information about the freebsd-questions mailing list