MyTetra Share
Делитесь знаниями!
Решение проблемы "PostgreSQL: ошибка получения мандатных атрибутов"
Время создания: 11.06.2024 16:34
Текстовые метки: astra, linux, астра, postgresql, ошибка, мандатные, атрибуты, права, доступа
Раздел: Компьютер - Linux - Дистрибутив Astra Linux
Запись: xintrea/mytetra_syncro/master/base/1718112859wk4rx4se88/text.html на raw.github.com

Вопрос:


Проблема возникает с PostgreSQL 9.4 в Astra Linux Special Edition 1.5 при попытке подключения созданным пользователем:


«СБОЙ: ошибка получения мандатных атрибутов на сервере для пользователя»



Ответ 1:


Для версии 1.6 это выглядит так.

Если возникает ошибка:


ошибка получения мандатных атрибутов на сервере для пользователя «replicator», ошибка 13 — Отказано в доступе


Значит не хватает прав доступа к каталогам. Нужно:


usermod -a -G shadow postgres

setfacl -d -m u:postgres:r /etc/parsec/macdb

setfacl -R -m u:postgres:r /etc/parsec/macdb

setfacl -m u:postgres:rx /etc/parsec/macdb

setfacl -d -m u:postgres:r /etc/parsec/capdb

setfacl -R -m u:postgres:r /etc/parsec/capdb

setfacl -m u:postgres:rx /etc/parsec/capdb


Если возникает ошибка:


ошибка получения мандатных атрибутов на сервере для пользователя «replicator», ошибка 2 — Нет такого файла или каталога


Нужно инициализировать мандатные права у вашего пользователя:


usermac -z пользователь



Ответ 2 (это уточнение?):


Настройка «установить в файле /etc/parsec/mswitch.conf, параметр zero_if_notfound в yes» работает только для астры без домена ald. Если на астре настроена авторизаиця через домен, то после parsec запрашивается ald, если там одноименного пользователя тоже нет — то запрашивается kerberos, а поскольку он не настроен — то в postgres возвращается ошибка, и пользователь не подключается. В логе постгреса ошибки:

2020-10-07 18:32:03 MSK [3665-1] my_user@my_user СООБЩЕНИЕ: Kerberos krb5_get_init_creds_keytab возвратил ошибку -1765328378

postgres: Client not found in Kerberos database while getting server initial credentials keytab «FILE:/etc/postgresql-common/krb5.keytab»

2020-10-07 18:32:03 [2684] АУДИТ: ОТКАЗ, Подключение, [local], «my_user», SU = «неопределено» (0), CU = «неопределено» (0): ошибка получения мандатных атрибутов на сервере для пользователя «my_user», ошибка 25 — Неприменимый к данному устройству ioctl

2020-10-07 18:32:03 MSK [3665-2] my_user@my_user СБОЙ: ошибка получения мандатных атрибутов на сервере для пользователя «my_user»

Как в таком случае заставить постгрес вести себя согласно доке и разрешить подключать пользователей, которые есть только в самом постгресе?



Ответ 3:


Проблему удалось решить. Файл /etc/parsec/mswitch.conf, параметр zero_if_notfound установить в yes.

В этом случае все пользователи БД, для которых не удалось получить мандатные атрибуты, получат нулевую метку.


Ответ 4:

setfacl -d -m u:postgres:r /etc/parsec/macdb

Вот это всё да, только без пробела — «u:postgres:r». Спасибо за ответ! Убивался с этими правами на каталоги довольно долго сейчас при переходе на новую версию.

И тем не менее. Господа, а, видимо, кто-то уже сталкивался со всем этим делом на Astra Linux 1.6 Smolensk?

На Astra Linux 1.5 при желании назначить пользователя, ассоциированного с ролью входа для PostgreSQL работало вот так:


pdp-ulbls -l 0:0 my_db_user

setfacl -R -m u:postgres:rx /etc/parsec/macdb

setfacl -R -m u:postgres:rx /etc/parsec/capdb


А теперь даже pdpl-user я вызывал (pdp-ulbls -l 0:0 -c 0:0x1) и как-то не захотело оно, применил вот этот, обсуждаемый рецепт, теперь надо наш deb-пакет править. Туда что, вот всю эту пачку команд загонять? Это нормально для Astra? А то выглядит костылём.


Ответ 5:

Ошибка возникает при использовании локальных пользователей, без настроенного ALD.

Нужно добавить права на чтение к БД мандатных атрибутов для Postgre:


$ sudo setfacl -mR u:postgres:rx /etc/parsec/macdb

$ sudo setfacl -mR u:postgres:rx /etc/parsec/capdb



Так же в этом разделе:
 
MyTetra Share v.0.64
Яндекс индекс цитирования