При свежей установке терминального сервера (Debian + LXDE + NX) случился пренеприятный косяк - приходящий в терминальный сеанс пользователь внезапно получал возможность остановить и перезагрузить сервер. При этом ни в группе powerdev, ни в sudoers, ни еще где-то записей об этом пользователе не было. Более того, из эмулятора терминала внутри nx-сессии также было невозможно сделать poweroff или reboot.
Раз проблема проявляется только при взаимодействии с окружением рабочего стола, пришлось покопаться в PolicyKit. Однако, так как опыта тонкой настройки этого сервиса у меня нет, то я решил ограничиться следующим workaround-ом: в файле /etc/dbus-1/system.d/ConsoleKit.conf находим следующие строки:
<allow send_destination="org.freedesktop.ConsoleKit"
send_interface="org.freedesktop.ConsoleKit.Manager"/>
<allow send_destination="org.freedesktop.ConsoleKit"
send_interface="org.freedesktop.ConsoleKit.Seat"/>
<allow send_destination="org.freedesktop.ConsoleKit"
send_interface="org.freedesktop.ConsoleKit.Session"/>
<allow send_destination="org.freedesktop.ConsoleKit"
send_interface="org.freedesktop.DBus.Properties" />
<allow send_destination="org.freedesktop.ConsoleKit"
send_interface="org.freedesktop.ConsoleKit.Manager"
send_member="Restart"/>
<allow send_destination="org.freedesktop.ConsoleKit"
send_interface="org.freedesktop.ConsoleKit.Manager"
send_member="CanRestart"/>
<allow send_destination="org.freedesktop.ConsoleKit"
send_interface="org.freedesktop.ConsoleKit.Manager"
send_member="Stop"/>
<allow send_destination="org.freedesktop.ConsoleKit"
send_interface="org.freedesktop.ConsoleKit.Manager"
send_member="CanStop"/>
и меняем на
<deny send_destination="org.freedesktop.ConsoleKit"
send_interface="org.freedesktop.ConsoleKit.Manager"/>
<deny send_destination="org.freedesktop.ConsoleKit"
send_interface="org.freedesktop.ConsoleKit.Seat"/>
<deny send_destination="org.freedesktop.ConsoleKit"
send_interface="org.freedesktop.ConsoleKit.Session"/>
<deny send_destination="org.freedesktop.ConsoleKit"
send_interface="org.freedesktop.DBus.Properties" />
<deny send_destination="org.freedesktop.ConsoleKit"
send_interface="org.freedesktop.ConsoleKit.Manager"
send_member="Restart"/>
<deny send_destination="org.freedesktop.ConsoleKit"
send_interface="org.freedesktop.ConsoleKit.Manager"
send_member="CanRestart"/>
<deny send_destination="org.freedesktop.ConsoleKit"
send_interface="org.freedesktop.ConsoleKit.Manager"
send_member="Stop"/>
<deny send_destination="org.freedesktop.ConsoleKit"
send_interface="org.freedesktop.ConsoleKit.Manager"
send_member="CanStop"/>
Таким образом все, кто входит в политику default (а это вообще все, ага ;) ), получают запрет на выполнение команд по выключению, перезагрузке, переходу в спящий режим и так далее. Конечно, главным недостатком этого "костыля" является то, что даже локальная X-сессия будет аналогично ограничена в возможности выключить компьютер. Но мы говорим о терминальном сервере, поэтому это некритично.
Комментариев нет:
Отправить комментарий