LINUX.ORG.RU

lightdm xfce перезагрузка выключение

 , ,


1

2

Добрый вечер.
На днях поставил Lightdm. Решил сделать свой компьютер, более юзабельным для других людей. Чтобы хотя бы могли сами включить зайти в браузер и выключить.
Раньше иксы запускал и перезагружал/выключал компьютер с консоли.

И после установки lightdm возникла проблема с перезагрузкой и выключением. При нажатии любой из этих кнопок, требует пароль root. Как от этого избавиться ?

В /etc/sudoers есть строчка:

demsi   PK-Note= NOPASSWD: /sbin/reboot, /sbin/shutdown, /sbin/halt
Но видимо нужно както заставить чтобы xfce все это делала через sudo.
Или как-то это сделать другим методом ?

Дистрибутив Debian jessie/sid
Ядро 3.11 
Среда - Xfce
Display Manager - Lightdm

Ответ на: комментарий от Cooler

chmod +s /sbin/halt

Я не думаю что это хорошая идея. Suid бит довольно опасная штука, которую лучше лишний раз не использовать.

К тому же, это все равно не помогает... Уже пробывал.

demsi ()
Ответ на: комментарий от lampslave

Вообще, может быть лучше даже будет slim поставить. Он на системах без systemd проще чинится.

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

А если так? polkit есть вообще?

Пользователя polkitd не существует:

grep "polkitd" /etc/passwd
пусто
Директории rules.d не существует:
ls /usr/share/polkit-1/ -l
drwxr-xr-x 2 root root 4096 янв 23 18:48 actions

polkit есть вообще ?

А что это ? И зачем он ?

dpkg -l | grep polkit
ii  libpolkit-agent-1-0:i386             0.105-3                       i386         PolicyKit Authentication Agent API
ii  libpolkit-backend-1-0:i386           0.105-3                       i386         PolicyKit backend API
ii  libpolkit-gobject-1-0:i386           0.105-3                       i386         PolicyKit Authorization API

demsi ()
Ответ на: комментарий от lampslave

Видимо, дебиановский пакет называется несколько иначе. policykit.

Да, вы правы.

dpkg -l | grep -i policykit
ii  libpolkit-agent-1-0:i386             0.105-3                       i386         PolicyKit Authentication Agent API
ii  libpolkit-backend-1-0:i386           0.105-3                       i386         PolicyKit backend API
ii  libpolkit-gobject-1-0:i386           0.105-3                       i386         PolicyKit Authorization API
ii  policykit-1                          0.105-3                       i386         framework for managing administrative policies and privileges
ii  policykit-1-gnome                    0.105-2                       i386         GNOME authentication agent for PolicyKit-1

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

Тогда варианты следующие. Или не хватает какого-нибудь

exec ck-launch-session dbus-launch --exit-with-session startxfce4
в .xinitrc (slim должен с этим работать, а вот про lightdm не знаю) или надо что-то такое писать: https://lists.debian.org/debian-user/2011/10/msg01252.html

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

Тогда варианты следующие. Или не хватает какого-нибудь

exec ck-launch-session dbus-launch --exit-with-session startxfce4

Неа не помогло. Все равно запрашивает пароль от root.

demsi ()
Ответ на: комментарий от lampslave

Попробуйте всё-таки slim поставить, он должен с этим работать.

Да блин, понимаете, slim то можно поставить. Но хочется понять в чем же все таки дело.
Кстати в окошке где требует ввести пароль root'а, есть кнопка «Подробности» а там написано:

Действие: org.freedesktop.consolekit.system.restart-multiple-users
Я во всяких consolekit и policykit совсем не разбераюсь, и не знаю зачем они нужны. Про эти пакеты даже в книге «Unix и Linux. Руководство Системного администратора» ничего не встречал.
Но подозреваю что это как-то связано с ними. Они вообще нужны для администрирования Linux ? Насколько я понял, они напрямую связаны с Иксами.
Какая нибудь литература или документация по ним на русском есть ?

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

Год-два назад я мог бы дать ссылку на нашу wiki, но увы, consolekit-а у нас больше нет. Попробуйте тогда второй вариант, создайте /etc/polkit-1/localauthority/50-local.d/consolekit.pkla и забейте в него:

[restart]
Identity=unix-user:*
Action=org.freedesktop.consolekit.system.restart
ResultAny=yes

Возможно, restart надо будет поменять на restart-multiple-users.

lampslave ★★ ()
Последнее исправление: lampslave (всего исправлений: 1)

/etc/polkit-1/rules.d/10-power.rules:

polkit.addRule(function(action, subject) {
	if (action.id.indexOf("org.freedesktop.upower.") == 0) {
		if (subject.isInGroup("power")) {
			return polkit.Result.YES;
		}
	}
});

polkit.addRule(function(action, subject) {
    if (action.id == "org.freedesktop.ConsoleKit.Manager.Reboot") {
        if (subject.isInGroup("power")) {
            return polkit.Result.YES;
        }
		if (subject.local == true) {
			return polkit.Result.YES;
		}
    }
});

polkit.addRule(function(action, subject) {
    if (action.id == "org.freedesktop.ConsoleKit.Manager.Stop") {
        if (subject.isInGroup("power")) {
            return polkit.Result.YES;
        }
		if (subject.local == true) {
			return polkit.Result.YES;
		}
    }
});

polkit.addRule(function(action, subject) {
    if (action.id == "org.freedesktop.consolekit.system.stop-multiple-users") {
		return polkit.Result.YES;
    }  
});

polkit.addRule(function(action, subject) {
    if (action.id == "org.freedesktop.consolekit.system.restart-multiple-users") {
		return polkit.Result.YES;
    }
});
У меня в генте примерно так.

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

Проблема решена

Осилил man 8 polkit. Это было тяжко, так как в английском я полный нуль.
Также помогла статья на opennet'е. Странно статья датируется 2010 годом. Но в ней PolicyKit совсем другой, начиная от расположения и синтаксиса XML файлов с разрешениями, заканчивая командами пакета (синтаксис и название команд тоже другие).
Зато статья обьяснила принцип работы, что куда важнее.

Все решилось банальным редактированием XML файла с правилами для ConsoleKit. А именно - /usr/share/polkit-1/actions/org.freedesktop.consolekit.policy
Как помните в своем сообщении я говорил, что в окошке написано:Действие: org.freedesktop.consolekit.system.restart-multiple-users. Кар раз оно и есть в выше указанном файле:

<action id="org.freedesktop.consolekit.system.restart-multiple-users">
    <description>Restart the system when multiple users are logged in</description>
    <message>System policy prevents restarting the system when other users are logged in</message>
    <defaults>
      <allow_inactive>no</allow_inactive>
      <allow_active>auth_admin_keep</allow_active>
    </defaults>
  </action>
Опция allow_active согласно man 8 polkit отвечает за неявные разрешения, которые применяются к клиентам в активных сессиях на локальной консоли.
Активная сессия это та в которой вы работаете. Неявные разрешения применяются ко всем пользователям. Существуют еще явные разрешения, для конкретных пользователей.
Возможные значения для allow_active и вообще для всех опций в секции defaults
no - не разрешать
yes - разрешать
auth_self - разрешить владельцу сессии если он введет свой пароль.
auth_admin - нужно ввести пароль root при каждом запросе
auth_self_keep - то же самое что и auth_self, но некоторое время после ввода пароля, снова пароль запрашивать не будет (Для выключения и перезагрузки компьютера, смысла не имеет).
auth_admin_keep - тоже самое что и auth_admin, но также некоторое время авторизация сохраняется (Для выключения и перезагрузки компьютера, смысла не имеет).
Как вы наверное уже поняли теперь достаточно в опции allow_active поменять auth_admin_keep на yes
<action id="org.freedesktop.consolekit.system.restart-multiple-users">
...
<allow_active>yes</allow_active>
...
Тоже самое сделать для <action id=«org.freedesktop.consolekit.system.stop-multiple-users»> чтобы можно было выключать компьютер.

Вот и все. Заработало.
Правда некоторые вещи для меня до сих пор остались неясными. Почему например за перезагрузку и выключение компьютера отвечает ConsoleKit ?
Я где-то читал что он нужен для одновременной работы на одной системе нескольких независимых графических сеансов для различных пользователей. Но возможности «Сменить пользователя» у меня почему то нет. Хотя наверное это тоже чиниться.

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

Политики тоже можно было редактировать, да. Но и .pkla или .rules файлы (в зависимости от версии) тоже должны работать.

Для починки смены пользователя (пути опять для Арча, смотрите, где у вас это всё):

ln -s /usr/lib/lightdm/lightdm/gdmflexiserver /usr/local/bin/gdmflexiserver
Если не заработает, используйте
dm-tool switch-to-greeter

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

Политики тоже можно было редактировать, да. Но и .pkla или .rules файлы (в зависимости от версии) тоже должны работать.

А какой формат последний ? Для последних версий что используется pkla или rules ? И почему они так все меняют ?

demsi ()
Ответ на: комментарий от lampslave

Да что же такое твориться.
привык к net-tools (ifconfig,netstat, route) а они устарели. Теперь iproute2(ip,ss). Привык к wireless-tools( iwconfig,iwlist) и он устарел, теперь iw. Привык к iptables и его в 3.13 заменят на Nftables.
Впринципе можно и старыми утилитами пользоваться, но ведь надо идти в ногу со временем.
А ConsoleKit чем заменят ? Надеюсь чем-то поудобнее.

demsi ()
Ответ на: комментарий от lampslave

Да давно в системах инициализации не копался. Привык к sysvinit и все тут. Недавно хотел перейти на что-то современное. Но не доходили руки. Наверно самое время. Вот только что выбрать ? Вы на верное на своём arch все перепробывали. Что выбрать ? Насколько я знаю есть

  • OpenRC
  • Upstart
  • Systemd

Я бы хотел возможность параллельной загрузки независимых скриптов. Может, если бы знал еще о каких либо возможностях, то тоже бы захотел их использовать ))). Думаю остановиться на Systemd если честно, а вы бы что посоветовали ?

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

Все почитал, определился. Systemd. И выпилю ConsoleKit к чертям. По описанию Systemd вообще класс.

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

Нет, всё я не пробовал, как пришёл к нам systemd, так на нём и остаёмся. С upstart-ом мне маленько приходится дело иметь, потому что на работе ubuntu стоит.

systemd лично мне нравится, с ним арч ещё проще стал, по крайней мере для использования.

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