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: