Bas*_*sil 13 database authentication postgresql postgresql-9.1
在Ubuntu 12.04上安装PostgreSQL 9.1后,我为"postgres"超级用户帐户设置了密码.我希望所有用户在登录时都必须输入密码.这就是为什么我这样配置pg_hba.conf:
#Database administrative login by Unix domain socket
local all postgres md5
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all md5
Run Code Online (Sandbox Code Playgroud)
我做了这些更改后重新启动了postgresql.当我这样做时,psql -U testuser我被要求输入密码,但是当我使用"postgres"帐户登录时,psql -U postgres我没有得到密码提示并登录.如果我强制提示密码,psql -U postgres -W我可以通过输入正确的密码登录或者根本不输入任何东西.输入错误的密码会被拒绝.
任何人都可以向我解释为什么会这样吗?
在一个相关的说明:我看到很多例子,其中人们使用ident作为"postgres"用户的身份验证方法,认为要成为"postgres"用户需要机器的root密码.我假设推理是,如果攻击者获得root访问权限,那么无论如何都要完成.我更喜欢使用密码登录,一个与root密码不同.我喜欢为不同的东西设置不同的密码.这合理吗?
输出 grep '^[^#]' pg_hba.conf
local all postgres md5
local all all md5
host all all 127.0.0.1/32 md5
Run Code Online (Sandbox Code Playgroud)
Dan*_*ité 13
您pg_hba.conf确实需要一个密码用于unix套接字连接,但仍然有办法解决它应该验证:
一个.pgpass含有密码的Postgres的主目录文件(也检查PGPASSFILE为非标准PATH环境变量).
在PGPASSWORD环境变量可以设置.
而且你也可能正在编辑错误的pg_hba.conf文件.当作为postgres连接时,可以使用SHOW hba_fileSQL命令获取正确的路径以进行验证.
此外,您可能需要检查日志文件,/var/log/postgresql/postgresql-9.1-main.log以确认在请求时重新加载配置文件,并在身份验证期间查找任何可疑消息.
至于与postgres用户无密码连接的常见原因,debian PG-9.1 pg_hba.conf有关于禁止它们的评论:
# DO NOT DISABLE!
# If you change this first entry you will need to make sure that the
# database superuser can access the database using some other method.
# Noninteractive access to all databases is required during automatic
# maintenance (custom daily cronjobs, replication, and similar tasks).
#
# Database administrative login by Unix domain socket
local all postgres peer
Run Code Online (Sandbox Code Playgroud)
由于Debian和Ubuntu使用相同的postgres包,这也适用于Ubuntu.
你的奇怪行为,我认为你已经错过了一个pg_hba.conf特定于postgres用户的一行.请显示以下输出:
grep '^[^#]' pg_hba.conf
Run Code Online (Sandbox Code Playgroud)
至于ident vs md5; 我个人更喜欢在开发中使用ident进行交互式使用,对普通用户来说这很好,但我不认为postgres通过用户访问sudo是一个好主意.双方sudo -u postgres psql并psql -U postgres -W 授予访问Postgres超级用户角色,因此文件系统访问的数据库用户.既不需要root密码,也sudo可以通过sudoers限制调用用户来运行psql.但是,sudo -u postgres psql由于客户端代码也运行postgres,因此它是一个更大的攻击面,并且用户总是有机会找到绕过sudoer限制的方法.
我ident在开发md5中使用,在生产中.
| 归档时间: |
|
| 查看次数: |
18173 次 |
| 最近记录: |