LINUX.ORG.RU

Как пордужить polkit с доменными группами?

 ,


0

2

Есть ldap сервер виндовый, в нём есть группа «local linux machine administrator». В системе эта группа видится формате «local linux machine administrator@domain.lan». Не могу понять как впихнуть это в polkit с учётом того, что пробелы так то не поддерживаются. В sudoers решил через экранирование, в polkit так не вышло.

Дистр fedora 34.


Не могу понять как впихнуть это в polkit

Куда конкретно тебе нужно это впихнуть?

intelfx ★★★★★
()
Ответ на: комментарий от intelfx

Насколько я понял, надо создать в /etc/polkit-1/rules.d/99-ad.rules что-то типа..

polkit.addAdminRule(function(action, subject) {
    return ["unix-group:local linux machine administrator@domain.lan"];
});

Но оно так не сработало.

u0000
() автор топика
Ответ на: комментарий от u0000

Во-первых, не 99-, а 00-: в polkit правила исполняются в порядке перечисления, и первая функция, которая вернула что-то отличное от неопределённости, и используется.

Во-вторых, если не сработает, можно подставить аккуратный костыль, пользуясь тем фактом, что правила, заданные через addAdminRule(), выполняются на каждое действие заново, из них есть доступ к субъекту и они не обязаны быть идемпотентными:

polkit.addAdminRule(function(action, subject) {
    if (subject.isInGroup("local linux machine administrator@domain.lan") {
        return ["unix-user:" + subject.user];
    }
});

В-третьих, там ещё есть какая-то хрень, которая называется unix-netgroup:. Я с доменами в линуксе имел ровно 0 дела, но это случайно не оно?

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 3)
Ответ на: комментарий от intelfx

К сожалению, это не сработало.

Ради теста я добавил пользователя в группу wheel, которая определена в следующем файле, и всё сразу завелось. Так что polkit точно рабочий, просто не хочет принимать имя группы. Я так понял, это js? А нельзя ли впихнуть стрингу в переменную? Где вообще можно хорошенечко почитать про кишки polkit-а, чтобы понимать как он устроен?

u0000
() автор топика
Ответ на: комментарий от u0000

К сожалению, это не сработало.

Первое или второе?

Я так понял, это js? А нельзя ли впихнуть стрингу в переменную?

Да, это js. Не распарсил вопрос.

Где вообще можно хорошенечко почитать про кишки polkit-а, чтобы понимать как он устроен?

man 8 polkit и ещё здесь.

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 1)
Ответ на: комментарий от intelfx

Второе не сработало. Я просто не очень понимаю на каком моменте оно отказывается понимать что за группа нужна. Может можно впихнуть это как строку куда-нибудь в переменную, а потом сконнектировать с первой частью про unix:user?

А нет возможности через gid сделать? Он же вроде как постоянный. На двух машинах совпал.

u0000
() автор топика
Последнее исправление: u0000 (всего исправлений: 1)
Ответ на: комментарий от u0000

Ну закинь туда отладочной распечатки (через polkit.log, в мане написано). Попробуй распечатать subject.groups — может с точки зрения полкита эта группа вообще не существует, или называется как-то по-другому.

Через gid, ну попробуй вернуть unix-group:<gid>. Только это криво, потому что совпадение gid никем не гарантируется.

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 3)
26 октября 2021 г.

Привет, тебе удалось решить?

Avant
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.