[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