[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: postgresql: как устроена аутенфикация в него в дебиане?



Денис -> debian-russian@lists.debian.org  @ Thu, 3 Sep 2009 17:47:27 +0800:

 Д> Не могу понять сабж.

 Д> Есть у меня пользователь системный dhcs-control. у него нет своей
 Д> домашней директории.

 Д> Однажды я зашел под пользователем postgres (полное его имя значится
 Д> "PostgreSQL administrator"), и дал команду создать пользователя
 Д> dhcs-control безо всяких привелегий.

 Д> Потом я пытался воспользоваться им:

 Д> denizzz@laptop:~/dhcs$ psql -U dhcs-control dhcs
 Д> psql: FATAL:  Ident authentication failed for user "dhcs-control"

 Д> Зато:

 Д> denizzz@laptop:~/dhcs$ su
 Д> Пароль: 
 Д> root@laptop:/home/denizzz/dhcs# su -p dhcs-control 
 Д> dhcs-control@laptop:/home/denizzz/dhcs$ psql dhcs
 Д> Welcome to psql 8.3.7, the PostgreSQL interactive terminal.

 Д> Вопрос: почему из системного пользователя меня пускает в базу а если
 Д> указать пользователя в комстроке то нет? почему вообще sql-сервер знает
 Д> о пользователях системы? разве у него не свои пользователи унутре,
 Д> разве он не общается с миром через сокет? Что будет если сервер
 Д> удалённый и доступен по tcp/ip?

У сервера есть несколько разных способов аутентификации.  Они там где-то
в конфиге написаны.  У тебя включен способ ident, он им попытался
воспользоваться, и по вполне понятной причине (юзер не тот) обломался.
А когда ты зашел из-под самого этого юзера, способ сработал, потому что
юзер уже был тот.

Собственно, данный конкретный способ обычно разрешается только для
локальной системы, и состоит в том, что о пришедшем запрашивается сервис
ident.  (Или, подозреваю, в случае похода по UNIX socket'у, а не по TCP,
тем же словом называется штатная проверка credentials, которую
предоставляет оный UNIX socket.)  Удобно, если у тебя системные
пользователи называются в базе так же - пароль вводить не надо.

А если сервер удаленный, то, вероятно, на этот способ аутентификации он
не согласится, и надо будет использовать какой-то другой.

-- 
hands-free BSD
 -- (С)энта


Reply to: