Денис -> [email protected]  @ Thu, 3 Sep 2009 17:47:27 +0800:

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

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

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

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

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

 Д> Зато:

 Д> deni...@laptop:~/dhcs$ su
 Д> Пароль: 
 Д> r...@laptop:/home/denizzz/dhcs# su -p dhcs-control 
 Д> dhcs-cont...@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
 -- (С)энта


-- 
To UNSUBSCRIBE, email to [email protected]
with a subject of "unsubscribe". Trouble? Contact [email protected]

Ответить