欢迎投稿

今日深度:

Oracle最佳替代者PostgreSQL数据库的整体安全性(1)(5)


清单 18. 典型的域套接字

robert@wolf:~$ ls -la /tmp|grep PGSQLsrwxrwxrwx 1 robert robert 0 2007-10-15 12:47 .s.PGSQL.5432-rw-------  1 robert robert   33 2007-10-15 12:47 .s.PGSQL.5432.lock            

注意,端口号被附加到文件名的末尾。将服务器重新配置为使用一个不同的 TCP/IP 端口也将改变域套接字的名称。

postgresql.conf 配置文件中的三个参数将控制对域套接字的权限:

•unix_socket_directory文件 PATH)
•unix_socket_group用户组)
•unix_socket_permissions默认为 0777)
域套接字的位置因 Linux 发行版而异:

•PostgreSQL 源代码安装并将套接字放到 /tmp 目录。
•BSD 将套接字放到 /tmp 目录。
•RedHat 衍生系统将套接字放到 /tmp 目录。
•Debian 衍生系统将套接字放到 /var/run/postgresql 且只具有对 postgresqlaccount 的权限。
域套接字有一些比较特别的方面。考虑下面这个例子。

在 robert超级用户)的主目录中创建一个集群,并对可信性进行了验证。但是,在服务器启动时,域套接字的权限只允许除 robert 以外的用户登录。用户 robert 使用 TCP 登录,但是被域套接字拒绝。然而,robert 在对 nobody 执行 sudo 后,他就可以通过域套接字登录。

这个例子展示了文件权限的多样性,从而减轻由于骇客成为超级用户而引起的破坏。


清单 19. 权限

robert@wolf:~$ initdb -A trust -U postgres ~/datarobert@wolf:~$ pg_ctl -D ~/data/ -l ~/logfile.txt \-o "-c unix_socket_permissions=007 -c unix_socket_directory=/tmp" startserver startingrobert@wolf:~$ psql -h localhost -U postgres -c "select 'superuser:this works' as msg"         msg---------------------- superuser:this works(1 row)robert@wolf:~$ psql -h /tmp -U postgres -c "select 'superuser:this fails' as msg"psql: could not connect to server: Permission denied        Is the server running locally and accepting        connections on Unix domain socket "/tmp/.s.PGSQL.5432"?robert@wolf:~$ sudo su nobody[sudo] password for robert:$ psql -h localhost -U postgres -c "select 'nobody:this works' as msg"        msg------------------- nobody:this works(1 row)$ psql -h /tmp -U postgres -c "select 'nobody:this still works' as msg"           msg------------------------- nobody:this still works(1 row)            


www.htsjk.Com true http://www.htsjk.com/shujukuaq/16816.html NewsArticle 清单 18. 典型的域套接字 robert@wolf:~$ ls -la /tmp|grep PGSQLsrwxrwxrwx 1 robert robert 0 2007-10-15 12:47 .s.PGSQL.5432-rw------- 1 robert robert 33 2007-10-15 12:47 .s.PGSQL.5432.lock 注意,...
评论暂时关闭