19.2. Файл ÑопоÑÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¸Ð¼Ñн полÑзоваÑелей #
Ðогда иÑполÑзÑеÑÑÑ Ð²Ð½ÐµÑнÑÑ ÑиÑÑема аÑÑенÑиÑикаÑии, напÑÐ¸Ð¼ÐµÑ Ident или GSSAPI, Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑзоваÑÐµÐ»Ñ Ð¾Ð¿ÐµÑаÑионной ÑиÑÑемÑ, ÑÑÑанавливаÑÑего подклÑÑение, Ð¼Ð¾Ð¶ÐµÑ Ð½Ðµ ÑовпадаÑÑ Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼ Ñелевого полÑзоваÑÐµÐ»Ñ (Ñоли) Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
. Ð ÑÑом ÑлÑÑае можно пÑимениÑÑ ÑопоÑÑавление имÑн полÑзоваÑелей, ÑÑÐ¾Ð±Ñ ÑмениÑÑ Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑзоваÑÐµÐ»Ñ Ð¾Ð¿ÐµÑаÑионной ÑиÑÑÐµÐ¼Ñ Ð½Ð° Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑзоваÑÐµÐ»Ñ ÐÐ. ЧÑÐ¾Ð±Ñ Ð·Ð°Ð´ÐµÐ¹ÑÑвоваÑÑ ÑопоÑÑавление имÑн, ÑкажиÑе map=имÑ-ÑопоÑÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð² поле паÑамеÑÑов в pg_hba.conf. ÐÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¿Ð¾Ð´Ð´ÐµÑживаеÑÑÑ Ð´Ð»Ñ Ð²ÑеÑ
меÑодов аÑÑенÑиÑикаÑии, коÑоÑÑе пÑинимаÑÑ Ð²Ð½ÐµÑние имена полÑзоваÑелей. Так как Ð´Ð»Ñ ÑазнÑÑ
подклÑÑений могÑÑ ÑÑебоваÑÑÑÑ ÑазнÑе ÑопоÑÑавлениÑ, ÑопоÑÑавление опÑеделÑеÑÑÑ Ð¿Ð°ÑамеÑÑом имÑ-ÑопоÑÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð² pg_hba.conf Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ оÑделÑного подклÑÑениÑ.
СопоÑÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¸Ð¼Ñн полÑзоваÑÐµÐ»Ñ Ð¾Ð¿ÑеделÑÑÑÑÑ Ð² Ñайле ÑопоÑÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ ident, коÑоÑÑй по ÑмолÑÐ°Ð½Ð¸Ñ Ð½Ð°Ð·ÑваеÑÑÑ pg_ident.conf и Ñ
ÑаниÑÑÑ Ð² каÑалоге даннÑÑ
клаÑÑеÑа. (Файл ÑопоÑÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¿Ð¾Ð¼ÐµÑÑн и в дÑÑгое меÑÑо, обÑаÑиÑеÑÑ Ðº инÑоÑмаÑии о наÑÑÑойке паÑамеÑÑа ident_file.) Файл ÑопоÑÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ ident ÑодеÑÐ¶Ð¸Ñ ÑÑÑоки обÑиÑ
ÑоÑм:
имÑ-ÑопоÑÑавлениÑимÑ-ÑиÑÑемного полÑзоваÑелÑимÑ-полÑзоваÑелÑ-ÐÐincludeÑайлinclude_if_existsÑайлinclude_dirкаÑалог
ÐомменÑаÑии и пÑÐ¾Ð±ÐµÐ»Ñ Ð¿ÑименÑÑÑÑÑ Ñак же, как и в Ñайле pg_hba.conf. имÑ-ÑопоÑÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ ÑвлÑеÑÑÑ Ð¿ÑоизволÑнÑм именем, на коÑоÑое бÑÐ´ÐµÑ ÑÑÑлаÑÑÑÑ Ñайл ÑопоÑÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ñайла pg_hba.conf. Ðва дÑÑгиÑ
Ð¿Ð¾Ð»Ñ ÑказÑваÑÑ Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑзоваÑÐµÐ»Ñ Ð¾Ð¿ÐµÑаÑионной ÑиÑÑÐµÐ¼Ñ Ð¸ ÑооÑвеÑÑÑвÑÑÑее Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑзоваÑÐµÐ»Ñ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
. имÑ-ÑопоÑÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¸ÑполÑзовано неоднокÑаÑно, ÑÑÐ¾Ð±Ñ ÑказÑваÑÑ Ð¼Ð½Ð¾Ð¶ÐµÑÑвеннÑе ÑопоÑÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ð¾Ð»ÑзоваÑелÑÑкиÑ
имÑн в ÑамкаÑ
одного Ñайла ÑопоÑÑавлениÑ.
ЧÑо каÑаеÑÑÑ pg_hba.conf, ÑÑÑоки в ÑÑом Ñайле могÑÑ Ð±ÑÑÑ Ð´Ð¸ÑекÑивами вклÑÑениÑ, коÑоÑÑе ÑледÑÑÑ Ñем же пÑавилам.
ÐÐµÑ Ð½Ð¸ÐºÐ°ÐºÐ¸Ñ
огÑаниÑений по колиÑеÑÑÐ²Ñ Ð¿Ð¾Ð»ÑзоваÑелей баз даннÑÑ
, на коÑоÑÑе Ð¼Ð¾Ð¶ÐµÑ ÑÑÑлаÑÑÑÑ Ð¿Ð¾Ð»ÑзоваÑÐµÐ»Ñ Ð¾Ð¿ÐµÑаÑионной ÑиÑÑемÑ, и наобоÑоÑ. Тем не менее запиÑи в Ñайле ÑкоÑее подÑазÑмеваÑÑ, ÑÑо «полÑзоваÑÐµÐ»Ñ ÑÑой опеÑаÑионной ÑиÑÑÐµÐ¼Ñ Ð¼Ð¾Ð¶ÐµÑ Ð¿Ð¾Ð´ÐºÐ»ÑÑиÑÑÑÑ ÐºÐ°Ðº полÑзоваÑÐµÐ»Ñ ÑÑой Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
», нежели показÑваÑÑ, ÑÑо ÑÑи имена полÑзоваÑелей ÑквиваленÑнÑ. ÐодклÑÑение ÑазÑеÑаеÑÑÑ, еÑли ÑÑÑеÑÑвÑÐµÑ Ð·Ð°Ð¿Ð¸ÑÑ Ð² Ñайле ÑопоÑÑавлениÑ, ÑоединÑÑÑÐ°Ñ Ð¸Ð¼Ñ, полÑÑенное Ð¾Ñ Ð²Ð½ÐµÑней ÑиÑÑÐµÐ¼Ñ Ð°ÑÑенÑиÑикаÑии, Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼ полÑзоваÑÐµÐ»Ñ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
, под коÑоÑÑм полÑзоваÑÐµÐ»Ñ Ñ
оÑÐµÑ Ð¿Ð¾Ð´ÐºÐ»ÑÑиÑÑÑÑ. ÐнаÑение all можно иÑполÑзоваÑÑ Ð² каÑеÑÑве имени-полÑзоваÑелÑ-ÐÐ, ÑÑÐ¾Ð±Ñ ÑказаÑÑ, ÑÑо еÑли оно ÑÐ¾Ð²Ð¿Ð°Ð´Ð°ÐµÑ Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼-ÑиÑÑемного-полÑзоваÑелÑ, Ñо ÑÑÐ¾Ð¼Ñ Ð¿Ð¾Ð»ÑзоваÑÐµÐ»Ñ ÑазÑеÑено вÑ
одиÑÑ Ð² ÑиÑÑÐµÐ¼Ñ ÐºÐ°Ðº лÑÐ±Ð¾Ð¼Ñ Ð¸Ð· ÑÑÑеÑÑвÑÑÑиÑ
полÑзоваÑелей Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
. ÐлÑÑевое Ñлово all ÑеÑÑÐµÑ ÑÐ²Ð¾Ñ Ð¾Ñобое знаÑение.
ÐÑли имÑ-полÑзоваÑелÑ-ÐРнаÑинаеÑÑÑ Ñ Ñимвола +, полÑзоваÑÐµÐ»Ñ Ð¾Ð¿ÐµÑаÑионной ÑиÑÑÐµÐ¼Ñ Ð¼Ð¾Ð¶ÐµÑ Ð²Ð¾Ð¹Ñи в ÑиÑÑÐµÐ¼Ñ ÐºÐ°Ðº лÑбой полÑзоваÑелÑ, вклÑÑÑннÑй в ÑÑÑ ÑолÑ, аналогиÑно ÑомÑ, как имена полÑзоваÑелей, наÑинаÑÑиеÑÑ Ñ +, обÑабаÑÑваÑÑÑÑ Ð² pg_hba.conf. Таким обÑазом, знак + ознаÑÐ°ÐµÑ Â«Ñовпадение лÑбÑÑ
Ñолей, коÑоÑÑе пÑÑмо или коÑвенно ÑвлÑÑÑÑÑ Ñленами Ñоли», Ñогда как Ð¸Ð¼Ñ Ð±ÐµÐ· знака + ÑвлÑеÑÑÑ Ð¿Ð¾Ð´Ñ
одÑÑим ÑолÑко Ð´Ð»Ñ ÑÑой конкÑеÑной Ñоли. ÐаклÑÑение имени полÑзоваÑелÑ, наÑинаÑÑегоÑÑ Ñ +, в кавÑÑки пÑÐ¸Ð²Ð¾Ð´Ð¸Ñ Ðº ÑомÑ, ÑÑо + ÑеÑÑÐµÑ ÑÐ²Ð¾Ñ Ð¾Ñобое знаÑение.
ÐÑли поле имени-ÑиÑÑемного-полÑзоваÑÐµÐ»Ñ Ð½Ð°ÑинаеÑÑÑ Ñо знака (/), оÑÑавÑаÑÑÑ ÐµÐ³Ð¾ ÑаÑÑÑ ÑаÑÑмаÑÑиваеÑÑÑ ÐºÐ°Ðº ÑегÑлÑÑное вÑÑажение. (ÐодÑобнее ÑинÑакÑÐ¸Ñ ÑегÑлÑÑнÑÑ
вÑÑажений Postgres Pro опиÑан в ÐодÑазделе 9.7.3.1.) РегÑлÑÑное вÑÑажение Ð¼Ð¾Ð¶ÐµÑ Ð²ÐºÐ»ÑÑаÑÑ Ð² ÑÐµÐ±Ñ Ð¾Ð´Ð½Ñ Ð³ÑÑÐ¿Ð¿Ñ Ð¸Ð»Ð¸ заклÑÑÑнное в Ñкобки подвÑÑажение. Ðа ÑаÑÑÑ Ð¸Ð¼ÐµÐ½Ð¸ ÑиÑÑемного полÑзоваÑелÑ, ÑовпавÑÑÑ Ñ Ð½Ð°Ð·Ð²Ð°Ð½Ð¸ÐµÐ¼ гÑÑппÑ, можно ÑоÑлаÑÑÑÑ Ð² поле database-username, напиÑав \1 (Ñ Ð¾Ð´Ð½Ð¾Ð¹ обÑаÑной коÑой). ÐÑо позволÑÐµÑ ÑопоÑÑавиÑÑ Ð½ÐµÑколÑко имÑн полÑзоваÑÐµÐ»Ñ Ñ Ð¾Ð´Ð½Ð¾Ð¹ ÑÑÑокой, ÑÑо оÑобенно Ñдобно Ð´Ð»Ñ Ð¿ÑоÑÑÑÑ
замен. ÐапÑимеÑ, ÑÑи ÑÑÑоки
mymap /^(.*)@mydomain\.com$ \1 mymap /^(.*)@otherdomain\.com$ guest
ÑдалÑÑ ÑаÑÑÑ Ð´Ð¾Ð¼ÐµÐ½Ð° Ð´Ð»Ñ Ð¸Ð¼Ñн полÑзоваÑелей, коÑоÑÑе заканÑиваÑÑÑÑ Ð½Ð° @mydomain.com, и позволÑÑ Ð¿Ð¾Ð»ÑзоваÑелÑм, ÑÑÑ Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑзоваÑÐµÐ»Ñ ÑиÑÑÐµÐ¼Ñ Ð·Ð°ÐºÐ°Ð½ÑиваеÑÑÑ Ð½Ð° @otherdomain.com, подклÑÑиÑÑÑÑ ÐºÐ°Ðº guest. ÐаклÑÑение имени-полÑзоваÑелÑ-ÐÐ, ÑодеÑжаÑего \1, в кавÑÑки не заÑÑÐ°Ð²Ð¸Ñ \1 поÑеÑÑÑÑ ÑÐ²Ð¾Ñ Ð¾Ñобое знаÑение.
ÐÑли поле имÑ-полÑзоваÑелÑ-ÐРнаÑинаеÑÑÑ Ñо знака (/), оÑÑавÑаÑÑÑ ÐµÐ³Ð¾ ÑаÑÑÑ ÑаÑÑмаÑÑиваеÑÑÑ ÐºÐ°Ðº ÑегÑлÑÑное вÑÑажение. Ðогда поле имÑ-полÑзоваÑелÑ-ÐÐ ÑвлÑеÑÑÑ ÑегÑлÑÑнÑм вÑÑажением, в нÑм нелÑÐ·Ñ Ð¸ÑполÑзоваÑÑ Ð·Ð½Ð°Ñение \1 Ð´Ð»Ñ ÑÑÑлки на название гÑÑÐ¿Ð¿Ñ Ð¸Ð· Ð¿Ð¾Ð»Ñ Ð¸Ð¼Ñ-ÑиÑÑемного-полÑзоваÑелÑ.
ÐодÑказка
ÐомниÑе, ÑÑо по ÑмолÑаниÑ, ÑегÑлÑÑное вÑÑажение Ð¼Ð¾Ð¶ÐµÑ ÑовпаÑÑÑ ÑолÑко Ñ ÑаÑÑÑÑ ÑÑÑоки. РазÑмнÑм вÑÑ
одом бÑÐ´ÐµÑ Ð¸ÑполÑзование Ñимволов ^ и $, как показано в пÑимеÑе вÑÑе, Ð´Ð»Ñ Ð¿ÑинÑдиÑелÑного ÑÐ¾Ð²Ð¿Ð°Ð´ÐµÐ½Ð¸Ñ Ñо вÑем именем полÑзоваÑÐµÐ»Ñ Ð¾Ð¿ÐµÑаÑионной ÑиÑÑемÑ.
Файл pg_ident.conf пÑоÑиÑÑваеÑÑÑ Ð¿Ñи запÑÑке ÑиÑÑемÑ, а Ñакже в ÑÐ¾Ñ Ð¼Ð¾Ð¼ÐµÐ½Ñ, когда оÑновной ÑеÑÐ²ÐµÑ Ð¿Ð¾Ð»ÑÑÐ°ÐµÑ Ñигнал SIGHUP. ÐÑли Ð²Ñ ÑедакÑиÑÑеÑе Ñайл во вÑÐµÐ¼Ñ ÑабоÑÑ ÑиÑÑемÑ, необÑ
одимо поÑлаÑÑ Ñигнал пÑоÑеÑÑÑ postmaster (иÑполÑзÑÑ pg_ctl reload, вÑзвав SQL-ÑÑнкÑÐ¸Ñ pg_reload_conf() или вÑполнив kill -HUP), ÑÑÐ¾Ð±Ñ Ð¾Ð½ пÑоÑел обновлÑннÑй Ñайл.
СиÑÑемное пÑедÑÑавление pg_ident_file_mappings Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¿Ð¾Ð»ÐµÐ·Ð½Ð¾ Ð´Ð»Ñ Ð¿ÑедваÑиÑелÑной пÑовеÑки изменений в Ñайле pg_ident.conf или Ð´Ð»Ñ Ð´Ð¸Ð°Ð³Ð½Ð¾ÑÑики пÑоблем, когда пеÑезагÑÑзка ÑÑого Ñайла не даÑÑ Ð¶ÐµÐ»Ð°ÐµÐ¼Ð¾Ð³Ð¾ ÑÑÑекÑа. СÑÑоки в ÑÑом пÑедÑÑавлении, ÑодеÑжаÑие в поле error не NULL, ÑказÑваÑÑ Ð½Ð° пÑÐ¾Ð±Ð»ÐµÐ¼Ñ Ð² ÑооÑвеÑÑÑвÑÑÑиÑ
ÑÑÑокаÑ
Ñайла.
Файл pg_ident.conf, коÑоÑÑй Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¸ÑполÑзован в ÑоÑеÑании Ñ Ñайлом pg_hba.conf (Ñм. ÐÑимеÑ 19.1), показан в ÐÑимеÑе 19.2. Ð ÑÑом пÑимеÑе лÑбÑм полÑзоваÑелÑм компÑÑÑеÑов в ÑеÑи 192.168 Ñ Ð¸Ð¼ÐµÐ½Ð°Ð¼Ð¸, оÑлиÑнÑми Ð¾Ñ bryanh, ann или robert, бÑÐ´ÐµÑ Ð¾Ñказано в доÑÑÑпе. ÐолÑзоваÑÐµÐ»Ñ ÑиÑÑÐµÐ¼Ñ robert полÑÑÐ¸Ñ Ð´Ð¾ÑÑÑп ÑолÑко Ñогда, когда подклÑÑаеÑÑÑ ÐºÐ°Ðº полÑзоваÑÐµÐ»Ñ Postgres Pro bob, а не как robert, или какой-либо дÑÑгой полÑзоваÑелÑ. ÐолÑзоваÑÐµÐ»Ñ ann ÑÐ¼Ð¾Ð¶ÐµÑ Ð¿Ð¾Ð´ÐºÐ»ÑÑиÑÑÑÑ ÑолÑко как ann. ÐолÑзоваÑÐµÐ»Ñ bryanh ÑÐ¼Ð¾Ð¶ÐµÑ Ð¿Ð¾Ð´ÐºÐ»ÑÑиÑÑÑÑ ÐºÐ°Ðº bryanh или как guest1.
ÐÑÐ¸Ð¼ÐµÑ 19.2. ÐÑÐ¸Ð¼ÐµÑ Ñайла pg_ident.conf
# MAPNAME SYSTEM-USERNAME PG-USERNAME omicron bryanh bryanh omicron ann ann # на ÑÑÐ¸Ñ Ð¼Ð°ÑÐ¸Ð½Ð°Ñ Ñ Ð¿Ð¾Ð»ÑзоваÑÐµÐ»Ñ bob Ð¸Ð¼Ñ robert omicron robert bob # bryanh Ñакже Ð¼Ð¾Ð¶ÐµÑ Ð¿Ð¾Ð´ÐºÐ»ÑÑаÑÑÑÑ ÐºÐ°Ðº guest1 omicron bryanh guest1