[devel] ConsoleKit и DM policy
Vladislav Zavjalov
slazav на altlinux.org
Ср Дек 16 11:56:39 UTC 2009
On 12/16/09 14:19, Mykola S. Grechukh wrote:
> 16 декабря 2009 г. 11:14 пользователь Michael Shigorin<> написал:
>> On Mon, Dec 14, 2009 at 03:57:08PM +0200, Igor Vlasenko wrote:
>>> Уважаемые коллеги, смотрел
>>> https://bugzilla.altlinux.org/show_bug.cgi?id=22447
>>> по поводу регистрирации сессий в Console Kit.
>>> Если сервисы начинают предоставляться в зависимости
>>> от Console Kit, то втихую этого нельзя делать.
>>
>> И кстати, не только dm -- на 5.1/branch пойманы проблемы
>> с флэшками в KDE3, запущенном при помощи startx.
>
> Именно поэтому в федорке вызовы ck-init засунуты прямо в скриты
> xinitrc. У нас pam_ck_connector, но он не помогает для startx.
Хорошо бы, наверное, все сделать через pam_ck_connector...
Для startx есть /etc/pam.d/xserver, но он у нас отключен.
xorg-server/os/utils.c:
...
/*
* CheckUserAuthorization: check if the user is allowed to start the
* X server. This usually means some sort of PAM checking, and it is
* usually only done for setuid servers (uid != euid).
*/
#ifdef USE_PAM
#include <security/pam_appl.h>
#include <security/pam_misc.h>
#include <pwd.h>
#endif /* USE_PAM */
void
CheckUserAuthorization(void)
{
#ifdef USE_PAM
static struct pam_conv conv = {
misc_conv,
NULL
};
pam_handle_t *pamh = NULL;
struct passwd *pw;
int retval;
if (getuid() != geteuid()) {
pw = getpwuid(getuid());
if (pw == NULL)
FatalError("getpwuid() failed for uid %d\n", getuid());
retval = pam_start("xserver", pw->pw_name, &conv, &pamh);
if (retval != PAM_SUCCESS)
FatalError("pam_start() failed.\n"
"\tMissing or mangled PAM config file or
module?\n");
retval = pam_authenticate(pamh, 0);
if (retval != PAM_SUCCESS) {
pam_end(pamh, retval);
FatalError("PAM authentication failed, cannot start X
server.\n"
"\tPerhaps you do not have console ownership?\n");
}
retval = pam_acct_mgmt(pamh, 0);
if (retval != PAM_SUCCESS) {
pam_end(pamh, retval);
FatalError("PAM authentication failed, cannot start X
server.\n"
"\tPerhaps you do not have console ownership?\n");
}
/* this is not a session, so do not do session management */
pam_end(pamh, PAM_SUCCESS);
}
#endif
}
...
Подробная информация о списке рассылки Devel