mirror of
https://github.com/postgres/postgres.git
synced 2025-04-24 10:47:04 +03:00
Password fix. Now people have to do the REVOKE themselves.
This commit is contained in:
parent
70ddf2dfc2
commit
df67b83a7a
@ -30,8 +30,11 @@
|
|||||||
#include <tcop/tcopprot.h>
|
#include <tcop/tcopprot.h>
|
||||||
#include <utils/acl.h>
|
#include <utils/acl.h>
|
||||||
#include <utils/rel.h>
|
#include <utils/rel.h>
|
||||||
|
#include <utils/syscache.h>
|
||||||
#include <commands/user.h>
|
#include <commands/user.h>
|
||||||
|
|
||||||
|
static void CheckPgUserAclNotNull(void);
|
||||||
|
|
||||||
/*---------------------------------------------------------------------
|
/*---------------------------------------------------------------------
|
||||||
* UpdatePgPwdFile
|
* UpdatePgPwdFile
|
||||||
*
|
*
|
||||||
@ -93,6 +96,8 @@ void DefineUser(CreateUserStmt *stmt) {
|
|||||||
inblock;
|
inblock;
|
||||||
int max_id = -1;
|
int max_id = -1;
|
||||||
|
|
||||||
|
if (stmt->password)
|
||||||
|
CheckPgUserAclNotNull();
|
||||||
if (!(inblock = IsTransactionBlock()))
|
if (!(inblock = IsTransactionBlock()))
|
||||||
BeginTransactionBlock();
|
BeginTransactionBlock();
|
||||||
|
|
||||||
@ -204,6 +209,8 @@ extern void AlterUser(AlterUserStmt *stmt) {
|
|||||||
n,
|
n,
|
||||||
inblock;
|
inblock;
|
||||||
|
|
||||||
|
if (stmt->password)
|
||||||
|
CheckPgUserAclNotNull();
|
||||||
if (!(inblock = IsTransactionBlock()))
|
if (!(inblock = IsTransactionBlock()))
|
||||||
BeginTransactionBlock();
|
BeginTransactionBlock();
|
||||||
|
|
||||||
@ -420,3 +427,30 @@ extern void RemoveUser(char* user) {
|
|||||||
if (IsTransactionBlock() && !inblock)
|
if (IsTransactionBlock() && !inblock)
|
||||||
EndTransactionBlock();
|
EndTransactionBlock();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* CheckPgUserAclNotNull
|
||||||
|
*
|
||||||
|
* check to see if there is an ACL on pg_user
|
||||||
|
*/
|
||||||
|
static void CheckPgUserAclNotNull()
|
||||||
|
{
|
||||||
|
HeapTuple htp;
|
||||||
|
|
||||||
|
htp = SearchSysCacheTuple(RELNAME, PointerGetDatum(UserRelationName),
|
||||||
|
0, 0, 0);
|
||||||
|
if (!HeapTupleIsValid(htp))
|
||||||
|
{
|
||||||
|
elog(ERROR, "IsPgUserAclNull: class \"%s\" not found",
|
||||||
|
UserRelationName);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (heap_attisnull(htp, Anum_pg_class_relacl))
|
||||||
|
{
|
||||||
|
elog(NOTICE, "To use passwords, you have to revoke permissions on pg_user");
|
||||||
|
elog(NOTICE, "so normal users can not read the passwords.");
|
||||||
|
elog(ERROR, "Try 'REVOKE ALL ON pg_user FROM PUBLIC'");
|
||||||
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
@ -26,7 +26,7 @@
|
|||||||
#
|
#
|
||||||
#
|
#
|
||||||
# IDENTIFICATION
|
# IDENTIFICATION
|
||||||
# $Header: /cvsroot/pgsql/src/bin/initdb/Attic/initdb.sh,v 1.31 1997/12/30 02:26:43 scrappy Exp $
|
# $Header: /cvsroot/pgsql/src/bin/initdb/Attic/initdb.sh,v 1.32 1998/02/19 17:19:45 momjian Exp $
|
||||||
#
|
#
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
|
|
||||||
@ -351,10 +351,6 @@ echo "vacuuming template1"
|
|||||||
echo "vacuum" | postgres -F -Q -D$PGDATA template1 2>&1 > /dev/null |\
|
echo "vacuum" | postgres -F -Q -D$PGDATA template1 2>&1 > /dev/null |\
|
||||||
grep -v "^DEBUG:"
|
grep -v "^DEBUG:"
|
||||||
|
|
||||||
echo "Altering pg_user acl"
|
|
||||||
echo "REVOKE ALL ON pg_user FROM public" | postgres -F -Q -D$PGDATA template1 2>&1 > /dev/null |\
|
|
||||||
grep -v "'DEBUG:"
|
|
||||||
|
|
||||||
echo "COPY pg_user TO '$PGDATA/pg_pwd' USING DELIMITERS '\\t'" | postgres -F -Q -D$PGDATA template1 2>&1 > /dev/null |\
|
echo "COPY pg_user TO '$PGDATA/pg_pwd' USING DELIMITERS '\\t'" | postgres -F -Q -D$PGDATA template1 2>&1 > /dev/null |\
|
||||||
grep -v "'DEBUG:"
|
grep -v "'DEBUG:"
|
||||||
|
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
*
|
*
|
||||||
* Copyright (c) 1994, Regents of the University of California
|
* Copyright (c) 1994, Regents of the University of California
|
||||||
*
|
*
|
||||||
* $Id: pg_user.h,v 1.8 1997/12/12 16:26:36 momjian Exp $
|
* $Id: pg_user.h,v 1.9 1998/02/19 17:19:51 momjian Exp $
|
||||||
*
|
*
|
||||||
* NOTES
|
* NOTES
|
||||||
* the genbki.sh script reads this file and generates .bki
|
* the genbki.sh script reads this file and generates .bki
|
||||||
|
@ -6,9 +6,9 @@ all clean::
|
|||||||
@echo Nothing to be done.
|
@echo Nothing to be done.
|
||||||
|
|
||||||
install::
|
install::
|
||||||
install ecpglib.h $(DESTDIR)$(HEADERDIR)
|
install $(INSTLOPTS) ecpglib.h $(DESTDIR)$(HEADERDIR)
|
||||||
install ecpgtype.h $(DESTDIR)$(HEADERDIR)
|
install $(INSTLOPTS) ecpgtype.h $(DESTDIR)$(HEADERDIR)
|
||||||
install sqlca.h $(DESTDIR)$(HEADERDIR)
|
install $(INSTLOPTS) sqlca.h $(DESTDIR)$(HEADERDIR)
|
||||||
|
|
||||||
uninstall::
|
uninstall::
|
||||||
rm -f $(DESTDIR)$(HEADERDIR)/ecpglib.h
|
rm -f $(DESTDIR)$(HEADERDIR)/ecpglib.h
|
||||||
|
Loading…
x
Reference in New Issue
Block a user