Subject: Re: A possible solution to ftpd port 20 binding
To: Todd Vierling <tv@wasabisystems.com>
From: Charles M. Hannum <root@ihack.net>
List: tech-net
Date: 11/22/2000 06:23:52
Todd Vierling wrote:
> 1. A process flag, cleared on exec, allowing reserved port binding.
>
> This would entail somehow setting this privilege flag on the struct proc
> before revoking privileges, but the process could still bind privileged
> ports.
This smells an awful lot like a capabilities-based system...
> 2. A socket option that creates a duplicate of a bound socket.
>
> This approach allows ftpd to create its data socket before revoking
> privileges, prebound, but not connected to a remote system. It could
> have other useful non-security-related applications as well.
>
> The basic usage in userland would be, in pseudo:
>
> fd = socket(family, type, proto);
> setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &1, sizeof 1);
> bind(fd, addr_and_port);
This is an absolutely horrendous abstraction violation. No way.