Tom,
> Another idea is to not hardwire any restriction into the C code, but
> instead have initdb revoke the default public execute access on the
> tablespace size function. It would still work for superusers, and
> a particular DBA could choose to grant execute to trustworthy people.
> The problem is that you'd have to repeat the grant over and over
> (in particular, pg_dump wouldn't save its effects).
Yeah, the big issue here is that Tablespaces do not have any kind of "read"
permission, so there's nothing for us to go by. There's a good reason for
them not to, since they're orthagonal to schema and databases, but it
leaves us without a "handle" for tablespace size.
On the other hand, how useful is the information that a tablespace is 35GB
in size and that includes 16GB of stuff you're not allowed to see? Are we
hypothesizing that some attacker would not have CONNECT on a DB, but would
know exactly which tables that DB stores on which tablespace? This seems
very corner-case.
--
--Josh
Josh Berkus
PostgreSQL @ Sun
San Francisco