mirror of
https://github.com/postgres/postgres.git
synced 2025-05-29 00:03:09 -04:00
Do not allow removal of superuser privileges from bootstrap user.
A bootstrap user who is not a superuser will still own many important system objects, such as the pg_catalog schema, that will likely allow that user to regain superuser status. Therefore, allowing the superuser property to be removed from the superuser creates a false perception of security where none exists. Although removing superuser from the bootstrap user is also a bad idea and should be considered unsupported in all released versions, no back-patch, as this is a behavior change. Discussion: http://postgr.es/m/CA+TgmoZirCwArJms_fgvLBFrC6b=HdxmG7iAhv+kt_=NBA7tEw@mail.gmail.com
This commit is contained in:
parent
f92944137c
commit
e530be2c5c
@ -693,7 +693,14 @@ AlterRole(ParseState *pstate, AlterRoleStmt *stmt)
|
||||
*/
|
||||
if (dissuper)
|
||||
{
|
||||
new_record[Anum_pg_authid_rolsuper - 1] = BoolGetDatum(boolVal(dissuper->arg));
|
||||
bool should_be_super = BoolGetDatum(boolVal(dissuper->arg));
|
||||
|
||||
if (!should_be_super && roleid == BOOTSTRAP_SUPERUSERID)
|
||||
ereport(ERROR,
|
||||
(errcode(ERRCODE_INSUFFICIENT_PRIVILEGE),
|
||||
errmsg("permission denied: bootstrap user must be superuser")));
|
||||
|
||||
new_record[Anum_pg_authid_rolsuper - 1] = should_be_super;
|
||||
new_record_repl[Anum_pg_authid_rolsuper - 1] = true;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user