[devel] Q: рабочий ли PolicyKit?

Vladimir Lettiev =?iso-8859-1?q?thecrux_=CE=C1_gmail=2Ecom?=
Пн Сен 22 17:49:59 MSD 2008


Для примера возьмём polkit-gnome-authorization из пакета PolicyKit-gnome.
При выполнении каких-либо задач, требующих определённых привилегий у
пользователя должна запрашиваться авторизация, для этого через dbus
вызывается приложение /usr/libexec/PolicyKit/polkit-gnome-manager,
которое затем вызывает (execve) sgid'ный хелпер
/usr/libexec/PolicyKit/polkit-grant-helper.

Первая проблема в том, что выполнить это хелпер может только root или
пользователь входящий в группу _polkit. Исправить это вобщем-то легко.
Вторая проблема, что несмотря на то, что файл вроде бы sgid и
эффективная группа при запуске становится _polkit, но тем не менее
хелпер вываливается с ошибкой: "polkit-grant-helper: needs to be
setgid _polkit" (дамп strace)
Код выглядит так:

        /* check that we are setgid polkituser */
        egid = getegid ();
        group = getgrgid (egid);
        if (group == NULL) {
                fprintf (stderr, "polkit-grant-helper: cannot lookup
group info for gid %d\n", egid);
                goto out;
        }
        if (strcmp (group->gr_name, POLKIT_GROUP) != 0) {
                fprintf (stderr, "polkit-grant-helper: needs to be
setgid " POLKIT_GROUP "\n");
                goto out;
        }

теоретически должно работать...

-- 
Vladimir Lettiev aka crux <theCrux на gmail.com>


Подробная информация о списке рассылки Devel