Das Linux PolicyKit verstehen

Spä­tes­tens wenn man bemerkt, dass alt­ge­dien­te Tools wie gksu­do oder kde­su­do auf den neu­es­ten Sys­tem­ver­sio­nen nicht mehr funk­tio­nie­ren, muss man sich mit dem Poli­cy­Kit oder kurz Pol­Kit aus­ein­an­der­set­zen, wenn man wei­ter­hin Pro­gram­me mit root-Rech­ten vom Desk­top eines Users star­ten kön­nen will.

Debi­an und davon abge­lei­te­te Sys­te­me wie Ubun­tu haben gksu­do schon län­ge­re Zeit nicht mehr instal­liert. Seit Debi­an 10 gibt es in den debi­an sta­ble- und tes­ting-Repo­si­to­ries nicht mal mehr die ent­spre­chen­den Pake­te zum Nach­in­stal­lie­ren.

Unter Debi­an 10 sind im Cin­na­mon-Desk­top eines unpre­vi­le­gier­ten Nut­zers zwar die Sys­tem­ver­wal­tungs­werk­zeu­ge wie Syn­ap­tic oder ver­schie­de­ne cin­na­mon-set­tings-… Ein­trä­ge im Menü vor­han­den, aber sie funk­tio­nie­ren nicht mehr (und zwar ohne jeg­li­che Feh­ler­mel­dung).

Um sie wie­der zum Lau­fen zu brin­gen, müs­sen wir am Pol­Kit schrau­ben

Synaptic zum Laufen bringen

$ sudo vi /usr/share/polkit-1/actions/com.ubuntu.pkexec.synaptic.policy

...
<defaults>
  <allow_any>auth_admin</allow_any>
  <allow_inactive>auth_admin</allow_inactive>
  <allow_active>yes</allow_active>
</defaults>
...

$ sudo vi /us­r/s­bin/­syn­ap­tic-pkexec

/usr/bin/pkexec "/usr/sbin/synaptic" "$@"

$ sudo chmod o+x /us­r/s­bin/­syn­ap­tic-pkexec

In der Desk­top-Datei wird dann als Befehl /us­r/s­bin/­syn­ap­tic-pkexec anstel­le /usr/sbin/synaptic ein­ge­tra­gen.

Aufbau der Policy-Dateien

Die Poli­ci­es sind in xml-Datei­en mit der Endung .poli­cy unter /usr/share/polkit-1/actions/ defi­niert. Das Pol­Kit-Paket bringt schon eine Rei­he vor­de­fi­nier­ter Poli­ci­es mit, etwa für die ver­schie­de­nen Sys­tem­ein­stel­lungs­dia­lo­ge.

Die Poli­ci­es für Syn­ap­tic kann man sich mit pkac­tion anse­hen:

$ pkaction --action-id com.ubuntu.pkexec.synaptic --verbose
 com.ubuntu.pkexec.synaptic:
   description:       
   message:           Authentication is required to run the Synaptic Package Manager
   vendor:            
   vendor_url:        
   icon:              synaptic
   implicit any:      auth_admin
   implicit inactive: auth_admin
   implicit active:   yes
   annotation:        org.freedesktop.policykit.exec.path -> /usr/sbin/synaptic
   annotation:        org.freedesktop.policykit.exec.allow_gui -> true
$

Dabei sind die Ein­stel­lun­gen schon ent­spe­chend der Umge­bung inter­pre­tiert, z.B. anhand der ein­ge­stell­ten Spra­che. Die xml-Datei /usr/share/polkit-1/actions/com.ubuntu.pkexec.synaptic.policy ent­hält die voll­stän­di­gen Infor­ma­tio­nen:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE policyconfig PUBLIC
 "-//freedesktop//DTD PolicyKit Policy Configuration 1.0//EN"
 "http://www.freedesktop.org/standards/PolicyKit/1/policyconfig.dtd">
<policyconfig>

  <action id="com.ubuntu.pkexec.synaptic">
    <message>Authentication is required to run the Synaptic Package Manager</message>
    <message xml:lang="ar">الاستيثاق مطلوب لتشغيل مدير الحزم التشابكي</message>
    <message xml:lang="bg">Нужно е да се идентифицирате, преди да стартирате пакетния мениджър</message>
    <message xml:lang="br">Dilesa azgoulennet evit erounit an ardoer pakadoù synaptic</message>
    <message xml:lang="bs">Za pokretanje programa Synaptic Package Manager potrebna je autentifikacija</message>
    <message xml:lang="ca@valencia">Es requereix autenticació per a executar el gestor de paquets Synaptic</message>
    <message xml:lang="cs">Pro běh Správce balíčků Synaptic je vyžadováno ověření</message>
    <message xml:lang="de">Um die Synaptic-Paketverwaltung zu benutzen, ist eine Legitimation notwendig</message>
    <message xml:lang="en_AU">Authentication is required to run the Synaptic Package Manager</message>
    <message xml:lang="en_GB">Authentication is required to run the Synaptic Package Manager</message>
    <message xml:lang="eo">Aŭtentigo estas postulata por ruli la pakaĵmastrumilon Sinaptiko</message>
    <message xml:lang="es">Para ejecutar el gestor de paquetes Synaptic necesita autenticarse</message>
    <message xml:lang="et">Autentimine on vajalik paketihalduri Synaptic käivitamiseks</message>
    <message xml:lang="fi">Synaptic-pakettihallinnan käynnistäminen vaatii tunnistautumisen</message>
    <message xml:lang="fr">Une authentification est requise pour exécuter le gestionnaire de paquets Synaptic</message>
    <message xml:lang="gl">Para executar o xestor de paquetes Synaptic necesita autenticarse</message>
    <message xml:lang="he">נדרש אימות כדי להריץ את מנהל החבילות Synaptic</message>
    <message xml:lang="hr">Potrebna je ovjera za pokretanje Synaptic upravitelja paketima</message>
    <message xml:lang="hu">Hitelesítés szükséges a Synaptic csomagkezelő futtatásához</message>
    <message xml:lang="ms">Pengesahihan diperlukan untuk menjalankan Pengurus Pakej Synaptic</message>
    <message xml:lang="nl">Authenticatie is vereist om Synaptic pakketbeheer uit te voeren</message>
    <message xml:lang="pl">W celu uruchomienia programu Synaptic Package Manager wymagane jest dodatkowe uwierzytelnianie</message>
    <message xml:lang="pt_BR">Autenticação é exigida para executar o Gerenciador de Pacotes Synaptic</message>
    <message xml:lang="ro">Este necesară autentificarea pentru a rula administratorul de pachete Synaptic.</message>
    <message xml:lang="ru">Для запуска менеджера пакетов Synaptic требуется аутентификация</message>
    <message xml:lang="sk">Spustenie správcu balíkov Synaptiuc vyžaduje overenie totožnosti</message>
    <message xml:lang="sl">Za zagon upravljalnika paketov Synaptic je zahtevana skrbniška overitev.</message>
    <message xml:lang="sr">Потребно је потврђивање идентитета за покретање Синаптика упраника пакета</message>
    <message xml:lang="sv">Autentisering krävs för att köra Synaptic pakethanterare</message>
    <message xml:lang="te">సినాప్టిక్ ప్యాకేజీ నిర్వాహకం నడుపుటకు ధృవీకరణ అవసరం</message>
    <message xml:lang="tr">Synaptic Paket Yöneticisi'ni çalıştırmak için yetkilendirme gerekiyor</message>
    <message xml:lang="zh_HK">執行 Synaptic 套件管理員前要先認證</message>
    <message xml:lang="zh_TW">需要驗證以執行Synaptic 套件管理程式</message>
    <icon_name>synaptic</icon_name>
    <defaults>
      <allow_any>auth_admin</allow_any>
      <allow_inactive>auth_admin</allow_inactive>
      <allow_active>yes</allow_active>
    </defaults>
    <annotate key="org.freedesktop.policykit.exec.path">/usr/sbin/synaptic</annotate>
    <annotate key="org.freedesktop.policykit.exec.allow_gui">true</annotate>
  </action>

</policyconfig>

MariaDB Daten-Verzeichnis ändern

Ich benut­ze auf einem Rech­ner par­al­lel meh­re­re Linux-Sys­te­me mit gemein­sa­men Nut­zer­da­ten. Die Daten­bank-Datei­en der MariaDB will ich daher nicht auf der Sys­tem-Par­ti­ti­on able­gen, son­dern auf einem von allen Sys­te­men erreich­ba­ren Ort, z.B. auf einem Ver­zeich­nis der /home-Par­ti­ti­on. Das geht so:

  1. Den alten DB-Ser­ver her­un­ter­fah­ren und Sta­tus prü­fen:
    $ sudo sys­temc­tl stop mariadb
    $ sudo sys­temc­tl sta­tus mariadb
  2. Daten­ver­zeich­nis kopie­ren und altes Ver­zeich­nis umbe­nen­nen:
    $ sudo rsync -av /var/lib/mysql /home
    $ sudo mv /var/lib/mysql /var/lib/mysql.bak
  3. In der MariaDB-Kon­fi­gu­ra­ti­ons­da­tei /etc/mysql/mariadb.conf.d/50-server.cnf das Daten­ver­zeich­nis ändern:
    data­dir = /home/mysql
  4. Ser­vice-Kon­fi­gu­ra­ti­on für mariadb-Ser­vice in /lib/systemd/system/mariadb.service ändern, um Daten auf der /home Par­ti­ti­on zu erlau­ben:
    ProtectHome=false
    und sys­temd neu laden:
    $ sudo sys­temc­tl dae­mon-rel­oad
  5. DB-Ser­ver wie­der star­ten und prü­fen:
    $ sudo sys­temc­tl start mariadb
    $ sudo sys­temc­tl sta­tus mariadb

Schritt 3 bis 5 muss dann auf allen ande­ren betei­lig­ten Sys­te­men wie­der­holt wer­den.

Wenn Ser­ver mit den von einem ande­ren Sys­tem kopier­ten Daten wegen Rech­te­pro­ble­men nicht star­tet, kann das an unter­schied­li­chen user- und group-IDs der mys­ql-Nut­zer lie­gen. Sie wer­den wäh­rend der mariadb-Instal­la­ti­on neu ange­legt wer­den und haben kei­ne fes­ten IDs. Dann soll­te man prü­fen, ob user- und group-ID des mys­ql-Users mit denen der Daten über­ein­stim­men:

$ ls -l /home|grep mys­ql
drwxr-xr-x 6
<user-id> <group-id> 4096 Okt 18 12:45 mys­ql

Falls nicht, müs­sen die User- und Group-IDs ange­passt wer­den (vor­her prü­fen, sie unbe­nutzt sind):

$ sudo group­mod -g <group-id> mys­ql
$ sudo user­mod -g
<group-id> -u <user-id> mys­ql

Dann den DB-Ser­ver wie­der star­ten.

Even­tu­el­le DB-Feh­ler fin­den sich im MariaDB log file /var/log/mysql/error.log.

Lau­fen die DB-Ser­ver auf allen Sei­ten, kann das ursprüng­li­che Daten­ver­zeich­nis (/var/lib/mysql.bak) gelöscht wer­den.

Die Ver­zeich­nis­se bezie­hen sich auf eine Debi­an 10 Instal­la­ti­on und müs­sen evtl. ange­passt wer­den.

Smarthome-Pi mit MQTT und node-red

Wer sich etwas ein­ge­hen­der mit dem The­ma Haus­au­to­ma­ti­sie­rung beschäf­tigt, wird schnell bemer­ken, dass es ein schier unüber­schau­ba­re Men­ge an Sys­te­men ver­schie­de­ner Her­stel­ler dafür gibt. Bald sieht man aber auch, dass vie­le Wege in die Sack­gas­se füh­ren: gerin­ges Ange­bot an Sen­so­ren und Akto­ren, man­geln­de Kom­pa­ti­bi­li­tät mit Pro­duk­ten ande­rer Her­stel­ler, Bin­dung an Cloud-Sys­te­me und oft hohe Kos­ten sind nur eini­ge der Grün­de dafür.

„Smar­thome-Pi mit MQTT und node-red“ wei­ter­le­sen

Smart Home unter FRITZ!OS

Seit eini­ger Zeit ver­steht sich die AVMs FRITZ!Box dar­auf, Smart-Home-Gerä­te mit dem Funk­stan­dard DECT ULE/HAN-FUN aus ihrer eige­nen Pro­duk­ti­on aus­zu­le­sen und zu steu­ern. Seit der Ver­öf­fent­li­chung von FRITZ!OS 7 wer­den erst­ma­lig auch Gerä­te ande­rer Her­stel­ler unter­stützt. Um den Über­blick zu behal­ten, gibt es fol­gen­de Tabel­le mit einer Über­sicht der offi­zi­ell und inof­fi­zi­ell unter­stütz­ten Gerä­te.

„Smart Home unter FRITZ!OS wei­ter­le­sen

Eine Entwicklungsumgebung für wordpress

Wenn man auf meh­re­ren Platt­for­men, an unter­schied­li­chen Orten und/oder an ver­schie­de­nen (word­press-) Pro­jek­ten arbei­tet, wünscht man sich irgend­wann eine Ent­wick­lungs­um­ge­bung, die man zen­tral mit den Daten aller Pro­jek­te ein­rich­tet und von über­all ein­fach errei­chen kann. Was eig­net sich dafür bes­ser als mein NAS-Ser­ver und Docker?

„Eine Ent­wick­lungs­um­ge­bung für word­press“ wei­ter­le­sen