18 янв. 2012 г.

Disable shutdown via ConsoleKit/PolicyKit

При свежей установке терминального сервера (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-сессия будет аналогично ограничена в возможности выключить компьютер. Но мы говорим о терминальном сервере, поэтому это некритично.

10 янв. 2012 г.

server system info

Жутко полезная статейка об утилите, позволяющей узнать информацию о внутренностях серверов. Информативность вывода напрямую зависит от того, насколько разговорчив BIOS конкретной материнской платы. Например, HP-шные серверы могут рассказать даже о своих partnumber-ах.

Firefox & JRE from tarballs

Запишу, дабы не забыть, рецепт добавления поддержки Java в Firefox в случае, если и то и другое ставится в систему ручками (распаковкой tarball-ов). Идеологически от способа установки ничего не меняется - Firefox-у достаточно указать местонахождение библиотеки, через которую он с имеющейся в системе java-машиной общается. Интересно то, что сегодня (Firefox 9.0.1, jre-1.6.0_30) java-машина в "Дополнениях" появляется при добавлении библиотеки libnpjp2.so вместо привычной libjavaplugin_oji.so. Таким образом, порядок действий такой:
  • качаем Firefox (9.0.1)
  • качаем jre (6u30)
  • распаковываем то и другое в /opt/
  • создаем директорию /opt/firefox/plugins
  • создаем симлинк: ln -s /opt/jre1.6.0_30/lib/i386/libnpjp2.so /opt/firefox/plugins/
Profit.
Если всем пользователям браузера не нужно давать возможность пользования java-плагином, правильнее положить ссылку в ~/.mozilla/plugins/